почему не находит переменную в другой функции python
import sqlite3
import random
db = sqlite3.connect('dab.db')
sql = db.cursor()
db.commit()
sql.execute("""CREATE TABLE IF NOT EXISTS users (
name TEXT,
surname TEXT
)""")
def log():
user_name = input('Введите ваше имя: ')
user_surname = input('Введите вашу фамилию: ')
sql.execute(f"SELECT name FROM users WHERE name = '{user_name}' ")
if sql.fetchone() is None:
sql.execute(f"INSERT INTO users VALUES (?,?)", (user_name, user_surname))
db.commit()
print('Зарегистрировано')
else:
print('такая запись уже имеется')
def lag():
sur = input('Введите фамилию: ')
sql.execute(f"SELECT surname FROM users WHERE surname = '{user_surname}' ")
if sur == user_surname:
print(sur)
else:
print('такого логина не существует. зарегистрируйтесь')
log()
lag()
Ответы (1 шт):
Автор решения: Kers
→ Ссылка
Краткий пример того что получается у Вас:
test = "test" # переменная в глобальной области видимости
def fun0():
print(test) # ее можно использовать
fun0()
# Определяем переменную в теле функции
def fun1():
user_name = "user"
print(user_name)
fun1();
# Будет работать так как user_name передается параметром в функцию
def fun2(user_name):
print(user_name)
fun2("user")
# Ваш случай вызовет ошибку так как user_name не существует в контексте данной функции.
def funError():
print(user_name)
funError();
Подробнее про область видимости