Столкнулся с одной интересной проблемой.
def change(proxy=get()['proxy'], gmail=get()['gmail'], password=get()['password'], json_active=os.path.isfile(JSON_PATH)):
''' "change" changes the values of config.json '''
print(json_active)
print(os.path.isfile(JSON_PATH))
config = {
'proxy': proxy,
'gmail': gmail,
'password': password,
'json_active': json_active
}
with open(f'{os.getcwd()}\\config\\config.json', 'w') as file:
json.dump(config, file, indent=1)
У меня есть функция change, параметру json_active передается результат метода isfile из модуля os.
Этот метод проверяет файл на существование и зависимо от этого возвращает значение True или False.
Теперь, я импортирую файл с моей функцией change в главный файл main.py.
def main():
clear_terminal.clear()
config.change()
data = config.get()
flag = input('>>> ')
if flag == '1':
USER_EMAIL = input('Your Gmail: ')
number_combinations = email_combinate.combinate(USER_EMAIL)
print(f'JSON generated, size: {number_combinations}')
input('Press ENTER to continue')
main()
При запуске функции main() из файла main.py где-то на старте, вызывается функция change. И изменяется config.json.
Так вот, если во время работы main.py создается файл, то в функции change параметр json_active всё равно равен False.
Но, если функцию change запускать без импортирования, то всё отрабатывает на ура.
Есть подозрения, что Python запоминает значения параметров по-умолчанию и в следующий раз присваивает им последнее значение параметра и всё это из-за компилированных файлов .pyc. Такое может быть?