Переменная не изменяет свое значение после выхода из метода
Есть метод, в котором проверяется истинность пути и изменение значения переменной.
Проблема с которой я столкнулся: Переменная checkTypeBool после выполнения метода содержит в себе значение False, хотя путь существует. Вопрос: как мне изменить значение переменной в методе, что бы после завершения выполнения метода в переменой содержалось True?
pathDesktop = "C:\\Users\\batth\\Desktop"
pathTrash = "H:\\Trash"
#Должна изменяться в зависимости от того существует ли путь
checkTypeBool = False
#Только для красивого вывода в консоль
tableInfoPath = PrettyTable(["Dekstop Path"])
def checkPath(path, checkTypeBool):
#Проверка на существования пути
if os.path.exists(path):
tableInfoPath.add_row([pathDesktop + " : Path exists"])
#Изменяем значение переменной, на true, если путь существует
checkTypeBool = True
print(tableInfoPath)
else:
tableInfoPath.add_row([pathDekstop + " : Path not found"])
checkPath(pathDesktop, False)
#В итоге получаем, что checkTypeBool = False, хотя я ожидаю True
print(checkTypeBool)
Ответы (1 шт):
Для присвоения глобальным переменным в функциях нужно использовать оператор global, иначе это будет создание новой переменной в области действия функции. Кст, я убрал параметр checkTypeBool из функции.
Попробуйте:
checkTypeBool = False
#Только для красивого вывода в консоль
tableInfoPath = PrettyTable(["Dekstop Path"])
def checkPath(path):
global checkTypeBool
#Проверка на существования пути
if os.path.exists(path):
tableInfoPath.add_row([pathDesktop + " : Path exists"])
#Изменяем значение переменной, на true, если путь существует
checkTypeBool = True
print(tableInfoPath)
else:
tableInfoPath.add_row([pathDekstop + " : Path not found"])
checkPath(pathDesktop)
#В итоге получаем, что checkTypeBool = False, хотя я ожидаю True
print(checkTypeBool)
Кст, глобальные переменные не рекомендуются -- они усложняют логику программ. Лучше верните значение из функции:
#Только для красивого вывода в консоль
tableInfoPath = PrettyTable(["Dekstop Path"])
def checkPath(path) -> bool:
#Проверка на существования пути
if os.path.exists(path):
tableInfoPath.add_row([pathDesktop + " : Path exists"])
print(tableInfoPath)
return True
tableInfoPath.add_row([pathDekstop + " : Path not found"])
return False
checkTypeBool = checkPath(pathDesktop)
print(checkTypeBool)