Исключения для «локальных переменных известны», если функция использует оператор exec, и не рекомендуется использовать «из модуля import *». Сгенерированный байт-код отличается и медленнее для этих случаев.

водуЭтот вопрос, в интерпретаторе есть немного леса для проверки объектов кадра, которые могут быть полученыsys._getframe(), Похоже, что объекты фрейма доступны только для чтения, но я не могу найти ничего очевидного в документах, где это прямо указано. Может ли кто-нибудь подтвердить, доступны ли эти объекты для записи (каким-либо образом) или только для чтения?

import sys

def foobar():
    xx='foo'
    ff = sys._getframe()
    ff.f_locals['xx'] = 'bar'
    print xx

if __name__ == '__main__':
    foobar()

Это распечатываетfoo'при запуске, но пост ниже демонстрирует возможность записи переменной при запуске из текущего кадра в интерактивной оболочке.

Ответы на вопрос(1)

Ваш ответ на вопрос