日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python命名空间

發布時間:2025/7/14 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python命名空间 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

命名空間namespace

定義
我對于命名空間的理解是,由變量名到對象的一個映射,相當于字典中的key對應一個values。所以在同一個環境中,不能有相同的key,但在不同的環境中,key的值是可以重復的。
namespace又可以分為三類:

  • 內建命名空間(Builtins):在啟動python解釋器時創建,我覺得是特殊的全局命名空間,因為它相當于導入了builtins模塊
  • 全局命名空間(Global):在導入模塊時創建
  • 局部命名空間(Local):在調用函數時創建
  • 內嵌函數命名空間(Enclosing):函數內嵌函數時的特殊局部命名空間

創建
由以上的定義可以知道,在執行一個py腳本的時候,命名空間的創建流程是:內建->全局->局部(前提是內部有函數的調用)

Python 3.7.0 (default, Jun 28 2018, 07:39:16) [Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin Type "help", "copyright", "credits" or "license" for more information. >>> def func1(): ... name = 1 ... print('localspace:',locals()) ... print('globalspace:',globals()) ... def func2(): ... print('before func1 local:',locals()) ... print('before func1 global:',globals()) ... ayu = name ... print('after func1 local:',locals()) #1 ... print('after func1 global:',globals()) ... func2() #2 ... print('after func2 local:',locals()) ... print('after func2 global:',globals()) ... >>> func1() localspace: {'name': 1} globalspace: {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'func1': <function func1 at 0x10384c598>} before func1 local: {'name': 1} before func1 global: {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'func1': <function func1 at 0x10384c598>} after func1 local: {'name': 1, 'ayu': 1} after func1 global: {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'func1': <function func1 at 0x10384c598>} after func2 local: {'name': 1, 'func2': <function func1.<locals>.func2 at 0x103855378>} after func2 global: {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'func1': <function func1 at 0x10384c598>} >>> del(func1) #3 >>> locals() {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>} >>> globals() {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>} >>>

以上代碼在命令行中執行,#2中調用完func2之后,#1中的局部命名空間被刪除,執行#3之后,func1中的全局命名空間被刪除,而builtins命名空間需要在退出解釋器后才會被回收
所以命名空間回收的順序是局部->全局->builtins

調用
在調用變量是,遵循LEGB的順序,即Local->Enclosing(前提是有內嵌函數)->Global->Builtins

>>> def func1(): ... x = 1 ... print(x) ... def func2(): ... x += x ... print(x) ... func2() ... >>> func1() 1 Traceback (most recent call last):File "<stdin>", line 1, in <module>File "<stdin>", line 7, in func1File "<stdin>", line 5, in func2 UnboundLocalError: local variable 'x' referenced before assignment >>>

在執行func2時會報錯,因為執行func2時,會在局部變量中創建x,然后從其局部變量中查找x,始終沒有到Enclosing中取。

參考的博客

由一個例子到python的名字空間
詳解python命名空間和作用域

轉載于:https://blog.51cto.com/dorebmoon/2336954

總結

以上是生活随笔為你收集整理的Python命名空间的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 无码精品视频一区二区三区 | 精品久久久在线观看 | av日韩在线播放 | 欧美一区二区三区婷婷月色 | 国产精华一区二区三区 | 亚洲一级av毛片 | 樱花影院最新免费观看攻略 | 男生操女生网站 | 国产又爽又猛又粗的视频a片 | 午夜久久久久久久 | 欧美四区| 尤物193.com | 天天色天天射综合网 | 日韩中文在线字幕 | 生活片一级片 | 午夜中出 | 青娱乐91视频 | 密臀av在线 | 日本999视频| 人人射人人插 | free性中国hd国语露脸 | 欧美二区在线观看 | 91手机在线视频 | www黄色大片 | 亚洲免费专区 | 欧美日韩黄色片 | 久久香蕉精品 | 国产露脸150部国语对白 | 九九视频免费 | 日韩激情影院 | 69色| 久久在线免费观看视频 | 蜜臀av免费一区二区三区水牛 | 男女激情实录 | 97人妻天天摸天天爽天天 | 欧美肉大捧一进一出免费视频 | 国产免费黄色 | 美女一区二区三区视频 | 91浏览器在线观看 | 1769国产精品| 蜜桃精品视频在线观看 | 国产成人啪免费观看软件 | 久久看片| 国产剧情一区二区三区 | 欧美性猛交xxx乱大交3蜜桃 | h片在线观看视频 | 男男做的视频 | av免费福利| 日本一二三区视频在线 | 丰满少妇在线观看bd | 亚洲xx网 | 中文字幕日韩精品在线观看 | 中文字幕被公侵犯的漂亮人妻 | 久久久999久久久 | 亚洲熟妇国产熟妇肥婆 | 天堂影视在线观看 | 亚久久| 性综合网 | 成人3d动漫一区二区三区91 | 91国偷自产中文字幕久久 | 久久久老熟女一区二区三区91 | 特级av| 三级国产三级在线 | 激情涩涩 | 稀缺呦国内精品呦 | 中文字幕免费高清在线观看 | 禁断介护av | 神马影院午夜伦理 | 性欧美bbw| 亚洲国产视频在线观看 | 国产新婚疯狂做爰视频 | 少妇床戏av | 中文在线永久免费观看 | 亚欧视频在线观看 | 毛片a| 亚洲理论中文字幕 | 三浦惠理子aⅴ一二三区 | 免费a网 | 一级黄色大片免费 | 久久精品在这里 | 国产精品一区二区三区在线看 | 涩色网| 日日夜夜国产精品 | 免费看污片的网站 | 精品人妻伦一二三区久久 | 亚洲av激情无码专区在线播放 | 韩国短剧在线观看 | 黄色片在线免费看 | 长河落日电视连续剧免费观看 | 国内一级黄色片 | 亚洲国产系列 | 午夜鲁鲁 | 日本熟妇色xxxxx日本免费看 | 国产乱论视频 | www.中文字幕 | 97精品在线视频 | 亚洲精品国产精品国 | 久久9999久久免费精品国产 | 亚洲国产一区二区三区在线观看 |