Взаємодія з динамічними функціями
Оновлено: 28.04.2023
Розділення імен вільних змінних відбувається під час виконання, а не під час компіляції. Це означає, що наступний код виведе 42:
i = 10
def f():
print(i)
i = 42
f()
Функції eval() і exec() не мають доступу до повного середовища для розпізнавання імен. Імена можуть бути дозволені в локальному та глобальному просторах імен абонента. Вільні змінні вирішуються не в найближчому охоплюючому просторі імен, а в глобальному просторі імен. 1 Функції exec() і eval() мають додаткові аргументи для заміни глобального та локального простору імен. Якщо вказано лише один простір імен, він використовується для обох.