Tôi đang sử dụng mô-đun tích hợp để chèn một vài trường hợp, để chúng có thể được truy cập trên toàn cầu cho mục đích gỡ lỗi. Vấn đề với mô-đun __builtins__
là nó là một mô-đun trong kịch bản chính và là lệnh trong mô-đun, nhưng khi kịch bản của tôi tùy thuộc vào trường hợp có thể là tập lệnh chính hoặc mô-đun, tôi phải làm như sau:lý do tại sao __builtins__ là cả hai mô-đun và dict
if isinstance(__builtins__, dict):
__builtins__['g_frame'] = 'xxx'
else:
setattr(__builtins__, 'g_frame', 'xxx')
Có cách giải quyết nào ngắn hơn điều này không? Quan trọng hơn, tại sao __builtins__
hoạt động theo cách này?
Đây là tập lệnh để xem điều này. Tạo một a.py mô-đun:
#module-a
import b
print 'a-builtin:',type(__builtins__)
Tạo một b.py mô-đun:
#module-b
print 'b-builtin:',type(__builtins__)
Bây giờ chạy a.py python:
$ python a.py
b-builtin: <type 'dict'>
a-builtin: <type 'module'>
Mọi chi tiết, thấy http://stackoverflow.com/questions/11181519/python-whats-the-difference-between-builtin-and-builtins [Có thể trùng lặp] – pd12