最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入解析Python中的__builtins__內(nèi)建對象

 更新時間:2016年06月21日 17:01:40   作者:牧歌_  
__builtins__ 是內(nèi)建模塊__builtin__中的對象,使用Python中的內(nèi)建函數(shù)時會通過__builtins__引導(dǎo),這里我們就來深入解析Python中的__builtins__內(nèi)建對象,需要的朋友可以參考下

如果你已經(jīng)學(xué)習(xí)了包,模塊這些知識了。
你會不會有好奇:Python為什么可以直接使用一些內(nèi)建函數(shù),不用顯式的導(dǎo)入它們,比如 str() int() dir() ...?
原因是Python解釋器第一次啟動的時候 __builtins__ 就已經(jīng)在命名空間了(Note: 有s)

進(jìn)Shell看看:

>>> globals()
{'__builtins__': <module '__builtin__' (built-in)>, 
'__name__': '__main__', '__doc__': None, '__package__': None}


你可以再次導(dǎo)入 __builtin__(Note: 沒有s):

import __builtin__
>>> globals()
{'__builtins__': <module '__builtin__' (built-in)>, 
'__name__': '__main__', '__doc__': None, '__builtin__': 
<module '__builtin__' (built-in)>, '__package__': None}


這時候多了一個 __builtin__ 對象,你可以判斷它們是不是相同的:

>>> __builtin__ is __builtins__
True
>>> type(__builtin__)
<type 'module'>
>>> type(__builtins__)
<type 'module'>


現(xiàn)在我們把它從一個文件導(dǎo)入:

# 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

"""結(jié)果:
module name __name__ : file
__builtin__ is __builtins__: False
type(__builtin__): <type 'module'>
type(__builtins__): <type 'dict'>
__builtins__ is __builtin__.__dict__ True
"""


結(jié)論:
__builtins__ 是對內(nèi)建模塊  __builtin__ 的引用,并且有如下兩個方面差異:

在主模塊中,即沒有被其他文件導(dǎo)入。__builtins__是對 __builtin__ 本身的引用,兩者是相同的。

通過 __builtins__ is __builtin__.__dict__ 猜想:
在非 '__main__' 模塊中,也就是模塊被導(dǎo)入后,__builtins__ 應(yīng)該屬于 __builtin__.__dict__ 的一部分,是對 __builtin__.__dict__ 的引用,而非builtin本身,它在任何地方都可見,此時builtins的類型是字典。

裝飾內(nèi)建函數(shù)
Python 官方文檔 解釋了如何裝飾一個內(nèi)建函數(shù):

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()
# 將會全部轉(zhuǎn)為大寫輸出

Note:Python3.X版本中,內(nèi)建模塊更名為builtins,與Python2.X有所不同

相關(guān)文章

  • 用python 實(shí)現(xiàn)在不確定行數(shù)情況下多行輸入方法

    用python 實(shí)現(xiàn)在不確定行數(shù)情況下多行輸入方法

    今天小編就為大家分享一篇用python 實(shí)現(xiàn)在不確定行數(shù)情況下多行輸入方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • numpy模塊中axis的理解與使用

    numpy模塊中axis的理解與使用

    而在numpy中有很多的函數(shù)都涉及到axis,numpy中的軸axis是很重要的,許多numpy的操作根據(jù)axis的取值不同,作出的操作也不相同,這篇文章主要給大家介紹了關(guān)于numpy模塊中axis的理解與使用的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • 11個Python的循環(huán)技巧分享

    11個Python的循環(huán)技巧分享

    當(dāng)我們處理數(shù)據(jù)時,有時候需要創(chuàng)建多個列表以存儲不同類型或不同條件下的數(shù)據(jù),在Python中,我們可以利用循環(huán)來快速、高效地創(chuàng)建這些列表,本文將介紹如何使用循環(huán)在Python中創(chuàng)建多個列表,需要的可以參考下
    2024-04-04
  • Python中xml和json格式相互轉(zhuǎn)換操作示例

    Python中xml和json格式相互轉(zhuǎn)換操作示例

    這篇文章主要介紹了Python中xml和json格式相互轉(zhuǎn)換操作,結(jié)合實(shí)例形式分析了xmltodict庫的安裝及xml格式與json格式數(shù)據(jù)相互轉(zhuǎn)換操作技巧,需要的朋友可以參考下
    2018-12-12
  • pycharm2022.2遠(yuǎn)程連接服務(wù)器調(diào)試代碼實(shí)現(xiàn)

    pycharm2022.2遠(yuǎn)程連接服務(wù)器調(diào)試代碼實(shí)現(xiàn)

    本文主要介紹了pycharm2022.2遠(yuǎn)程連接服務(wù)器調(diào)試代碼實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python 列表與鏈表的區(qū)別詳解

    Python 列表與鏈表的區(qū)別詳解

    這篇文章主要介紹了Python 列表與鏈表的區(qū)別詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • opencv python 圖像去噪的實(shí)現(xiàn)方法

    opencv python 圖像去噪的實(shí)現(xiàn)方法

    這篇文章主要介紹了opencv python 圖像去噪的實(shí)現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • django中的select_related和prefetch_related性能優(yōu)化分析

    django中的select_related和prefetch_related性能優(yōu)化分析

    這篇文章主要介紹了django中的select_related和prefetch_related性能優(yōu)化分析,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • pygame+opencv實(shí)現(xiàn)讀取視頻幀的方法示例

    pygame+opencv實(shí)現(xiàn)讀取視頻幀的方法示例

    由于pygame.movie.Movie.play()只支持MPEG格式的視頻,所以決定使用與opencv讀取視頻幀的畫面,本文就詳細(xì)的介紹了pygame+opencv實(shí)現(xiàn)讀取視頻幀,感興趣的可以了解一下
    2021-12-12
  • Python 中的結(jié)構(gòu)模式匹配及重要性

    Python 中的結(jié)構(gòu)模式匹配及重要性

    這篇文章主要介紹了Python 中的結(jié)構(gòu)模式匹配,本篇文章介紹結(jié)構(gòu)模式匹配及其在 Python 中的重要性,它還使用不同的模式來演示如何使用 match … case 語句,需要的朋友可以參考下
    2023-06-06

最新評論

和龙市| 长顺县| 嘉峪关市| 响水县| 渑池县| 桐乡市| 曲周县| 商河县| 土默特左旗| 隆德县| 容城县| 马鞍山市| 安乡县| 山西省| 遵化市| 桐乡市| 邢台市| 宾川县| 黔西县| 石嘴山市| 曲周县| 绍兴市| 阳城县| 丹东市| 梅河口市| 措美县| 泽州县| 房产| 建湖县| 阳江市| 化德县| 沿河| 榆林市| 泾源县| 峨眉山市| 汉中市| 兴城市| 那坡县| 庐江县| 肇东市| 西峡县|