python中的builtins,__builtin__与__builtins__的关系与区别

builtins,__builtin__与__builtins__的区别与关系

(1)内建模块

在Python中,有一个内建模块,该模块中有一些常用函数,变量和类;而该内建模块在Python启动后、且没有执行程序员所写的任何代码前,Python首先会自动加载该内建模块到内存。另外,该内建模块中的功能可以直接使用,不用在其前添加内建模块前缀,其原因是对函数、变量、类等标识符的查找是按LEGB法 则,其中B即代表内建模块。

(2)builtins与__builtin__关系

在Python2.X版本中,内建模块被命名为builtin,而到了Python3.X版本中,却更名为builtins,二者指的都是同一个东西,只是名字不同而已。
当使用内建模块中函数,变量和类等功能时,可以直接使用,不用添加内建模块的名字,也不用手动导入内建模块。但是,如果想要向内建模块修改或者添加一些功能,以便在程序其他地方使用时, 这时需要手动import。

(3)__builtins__

__builtins__同时存在于Python2.X和Python3.X中,简单地说,它就是对内建模块一个引用。
1、builtins就是内建模块的一个引用。
2、虽然是一个引用,但builtins和内建模块是有一点区别的:
要想使用内建模块,都必须手动import内建模块,而对于builtins却不用导入,它在任何模块都直接可见, 有些情况下可以把它当作内建模块直接使用。
builtins虽是对内建模块的引用,但这个引用要看是使用builtins的模块是哪个模块:
在主模块main中:
builtins是对内建模块builtin本身的引用,即builtins完全等价于builtin,二者完全是一个东西,不分彼此。在非main模块中:
builtins仅是对builtin.dict的引用,而非builtin本身。它在任何地方都可见。此时builtins的类型是字典。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值