При использовании внутренней функции она считывает переменную, определенную во внешней функции.Но как-то не получается при использовании eval ().Похоже, это связано с тем, как работает localals () ... но я не уверен, как и почему ...
def main():
aaa = 'print this'
def somethingelse():
print(locals())
#print(aaa)
print(eval('aaa'))
print(locals())
somethingelse()
main()
Приведенные выше коды не будут работать, выдавая сообщение об ошибке: File "", строка 1, в NameError: имя 'aaa' не определено
Но если снять отметку с печати (aaa), чтобы обе строки печати существовали, то обе они будут работать.
Я пытался напечатать locals () до и после этой команды print (aaa), получается, что если помечена строка print (aaa), оба locals () будут пустыми {}.Но если не отметить, то оба localals () будут {aaa: 'print this'}
Это озадачивает меня ...