日韩性视频-久久久蜜桃-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命名空间的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 免费日韩在线视频 | 午夜在线观看一区 | 在线观看黄色免费视频 | 国产人妖ts重口系列网站观看 | 免费在线看污片 | 四房婷婷 | 夜夜操狠狠干 | 欧美视频一级 | 黄色av观看| 精品视频在线免费 | 中文字幕亚洲精品 | 日本伦理中文字幕 | 国产一区二区三区视频在线观看 | 亚洲热在线视频 | 日韩精品系列 | 97久久久| av在线资源网 | 中文字幕免费高清网站 | 国产激情在线播放 | 国产精品对白 | 男人天堂99| 日韩高清国产一区在线 | 激情综合六月 | 日韩无套| 青草福利| 色吧综合网 | 五号特工组之偷天换月 | 国产福利片在线 | 六月色婷| 男女互操在线观看 | 综合激情在线 | 韩国主播青草55部完整 | 麻豆视频免费 | 亚洲精品一卡 | 日韩精品中文字幕一区二区三区 | 九九影视理伦片 | 中文字幕在线免费视频 | 超碰网站在线观看 | 国产精品久久久久久久久久久久久久久久久久 | 日本肉体xxxx裸体137大胆图 | 欧美在线一二三区 | 色天天干 | 国产主播精品 | 狠狠澡| 久久国产精品亚洲 | 毛片自拍 | 国产伦精品一区三区精东 | 欧美 日韩 国产 一区二区三区 | 亚洲精品一区二区三区新线路 | 精品久久中文字幕 | 久久久久久久久久久影视 | 特级精品毛片免费观看 | 中文字幕狠狠干 | 99免费在线观看视频 | 国产精品揄拍100视频 | 公妇借种乱htp109cc | 欧美专区在线视频 | 美女裸体网站久久久 | 蜜桃成熟时李丽珍在线观看 | 在线观看午夜视频 | 99热这里只 | 91波多野结衣 | 国产乱真实合集 | 日韩精品一区二区三区不卡 | 国产在线视频一区 | 特黄视频在线观看 | 精品中文字幕在线播放 | 狂野欧美性猛交xxxxhd | 男女网站视频 | 成人网站免费观看入口 | 欧美30p | 91麻豆精品国产91久久久无需广告 | av大西瓜 | 97在线精品| 在线看片你懂 | av看片在线 | 日本午夜三级 | 亚洲激情a | 日韩少妇一区二区三区 | 国产极品视频 | 日韩av一二三| 亚洲久操| 色妞欧美 | 天天插天天摸 | 91精品综合久久久久久 | 蝌蚪自拍网站 | 天天综合网站 | 亚洲男人的天堂在线 | 国产嫩草在线观看 | 中文人妻av久久人妻18 | 91丝袜在线| 麻豆免费在线观看视频 | 火影忍者羞羞漫画 | 欧美人妻精品一区二区免费看 | aaaa黄色 | 日韩aaaaaa | 第一区免费在线观看 | 少妇爽 | 中国黄色一级毛片 |