У меня есть следующие функции в Python3.7
def output_report():
sheet_dict = {1: 'All', 2: 'Wind', 3: 'Soalr'}
sheet_name = sheet_dict[sheet_num]
file_name = f'{file_name}_{sheet_name}_row_{row_num}.csv' if row_num else
f'{file_name}_{sheet_name}.csv'
return file_name
def test_file(x):
file_name = output_report(sheet_num)
return f'{x}_{file_name}'
def good_func():
sheet_num = 2
row_num = 2
a = test_file('new file')
return a
когда я звоню: good_func()
Вызывает ошибку, которая:
NameError: имя 'sheet_num' не определено
Но если я определю sheet_name и row_num в глобальной области видимости, как,
sheet_num = 2
row_num = 2
def good_func():
a = test_file('new file')
return a
код работает.
Мой вопрос: Насколько я понимаю, во вложенных функциях внутренние функции начинают искать переменные у себя, а затем переходят к внешним функциям и, наконец, к глобальной области видимости. Затем я ожидал, что первая функция также будет запущена, но это не так. Что это такое?
Я прочитал другие вопросы, связанные с областью действия , но не нашел ответа