深入解析Python中的__builtins__内建对象
如果你已经学习了包,模块这些知识了。 进Shell看看: >>> globals() {'__builtins__': <module '__builtin__' (built-in)>,'__name__': '__main__','__doc__': None,'__package__': None}
import __builtin__ >>> globals() {'__builtins__': <module '__builtin__' (built-in)>,'__builtin__': <module '__builtin__' (built-in)>,'__package__': None}
>>> __builtin__ is __builtins__ True >>> type(__builtin__) <type 'module'> >>> type(__builtins__) <type 'module'>
# file1.py import __builtin__ print "module name __name__ : ",__name__ print "__builtin__ is __builtins__: ",__builtin__ is __builtins__ print "type(__builtin__): ",type(__builtin__) print "type(__builtins__): ",type(__builtins__) print "__builtins__ is __builtin__.__dict__",__builtins__ is __builtin__.__dict__ # file2.py import file1 """结果: module name __name__ : file __builtin__ is __builtins__: False type(__builtin__): <type 'module'> type(__builtins__): <type 'dict'> __builtins__ is __builtin__.__dict__ True """
在主模块中,即没有被其他文件导入。__builtins__是对 __builtin__ 本身的引用,两者是相同的。 通过 __builtins__ is __builtin__.__dict__ 猜想: 装饰内建函数 import __builtin__ def open(path): f = __builtin__.open(path,'r') return UpperCaser(f) class UpperCaser: __metaclass__ = type def __init__(self,f): self._f = f def read(self): return self._f.read().upper() print open('./a.txt').read() # 将会全部转为大写输出 Note:Python3.X版本中,内建模块更名为builtins,与Python2.X有所不同 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |