Nếu tôi mở chế độ tương tác và nhập:bạn có thể phục hồi từ việc gán lại __builtins__ trong python không?
__builtins__ = 0 # breaks everything
tôi đã hoàn toàn bị hỏng phiên chưa? Nếu vậy, những gì đang diễn ra đằng sau hậu trường để gán __builtins__ cho mô đun dựng sẵn mà không thể được xử lý bởi thông dịch viên? Nếu không, làm thế nào tôi có thể phục hồi từ điều này?
Chỉ cần một vài trong số những nỗ lực của riêng tôi để sửa chữa nó:
- Bất kỳ cố gắng để nhập khẩu kết quả bất cứ điều gì trong một lỗi "ImportError __import__ không tìm thấy"
- tất cả các chức năng tôi có thể sử dụng để làm bất cứ điều gì khác hơn là đánh giá biểu thức số bị hỏng
- Có một biến __package__ khác vẫn có thể truy cập được, nhưng tôi không biết liệu/nó có thể được sử dụng hay không.
Chỉ cần thử chạy nó trong python 3 .. có một lỗi. Đáng chú ý, điều này: [t cho t in() .__ lớp __.__ căn cứ __ [0] .__ lớp con __() nếu 'cảnh báo' trong t .__ name__] mở rộng thành [] khi tôi thử chạy. Có lẽ đây là một vấn đề với python 3 vs 2? –
Slick! Có cách nào để thực sự hoàn toàn phá vỡ một phiên? – acjay
@HartSimha: Python 2 cho phép chế độ hạn chế nếu nội trang dựng sẵn trong khung hiện tại khác với nội dung phiên dịch.Vì chế độ hạn chế đã được gỡ bỏ trong Python 3, nên dễ dàng sửa đổi câu trả lời này để nhận '__builtins__' từ một hàm:' __builtins__ = [t cho t in() .__ lớp __.__ cơ sở __.__ lớp con __() nếu t .__ name__ == 'Sized '] [0] .__ len __.__ globals __ [' __ builtins __ '] '. – eryksun