4.2.6. Взаимодействие с динамическими функциями
Функции eval() и exec() не имеют доступа к полной
среде для разрешения имен. Имена могут разрешаться в локальном
и глобальном пространстве имен вызывающего объекта. Свободные переменные разрешаются
не в ближайшем охватывающем пространстве имен, а в глобальном пространстве имен.
Что это означает иметь в виду? Я не могу этого понять. Этот код работает так, как задумано.
Код: Выделить всё
var = 'global'
def f0():
var = 'local'
def f1():
print(var)
return f1
def ftest(f):
var = 'ftest'
f()
ftest(f0())
#prints 'local' in python 3.10 interpreter (yeah, reference is from python 3.12)
Может кто-нибудь объяснить этот маленький абзац? Мне это кажется противоречием.
Подробнее здесь: https://stackoverflow.com/questions/784 ... resolution