深入解析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有所不同 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
