Если я открываю интерактивный режим и тип:Можете ли вы восстановиться после переназначения __builtins__ в python?
__builtins__ = 0 # breaks everything
я полностью разбитое сессию? Если да, то что происходит за кулисами, чтобы назначить __builtins__ встроенному модулю, который не может обрабатываться интерпретатором? Если нет, как я могу оправиться от этого?
Лишь немногие из моих собственных попыток исправить:
- Любая попытка импортировать что-нибыдь приводит к ошибке «ImportError не __import__ нашли»
- все функции я могу использовать, чтобы сделать что-нибудь другое, чем оценить численные выражения разбиты
- Существует еще одна переменная __package__, которая все еще доступна, но я не знаю, можно ли/как ее использовать.
Просто попробовал запустить его в python 3 .. получил ошибку. Примечательно, что это: [t для t in() .__ класс __.__ основания __ [0] .__ подклассы __(), если «warning» в t .__ name__] расширяется до [] при попытке запустить его. Может быть, это проблема с python 3 vs 2? –
Слайк! Есть ли способ полностью полностью разойти сеанс? – acjay
@HartSimha: Python 2 разрешает ограниченный режим, если встроенные в текущий кадр отличаются от встроенных интерпретаторов.Поскольку ограниченный режим был удален в Python 3, легко изменить этот ответ, чтобы получить '__builtins__' из функции:' __builtins__ = [t для t in() .__ class __.__ base __.__ подклассы __(), если t .__ name__ == 'Sized '] [0] .__ Len __.__ глобалы __ [' __ __ встроенные команды '] '. – eryksun