Python 命名空間的訪問
1、局部命名空間可以locals()BIF來訪問。
locals返回一個名字/值對的dictionary。這個dictionary的鍵是字符串形式的變量名字,dictionary的值是變量的實際值。
示例:
deffunc1(i,str):
x=12345
print(locals())
func1(1,"first")
輸出:{'str':'first','x':12345,'i':1}
2、全局(模塊級別)命名空間可以通過globals()BIF來訪問。
示例:
'''Createdon2013-5-26'''
importcopy
fromcopyimportdeepcopy
gstr="globalstring"
deffunc1(i,info):
x=12345
print(locals())
func1(1,"first")
if__name__=="__main__":
print("thecurrentscope'sglobalvariables:")
dictionary=globals()
print(dictionary)
輸出:(我自己給人為的換行、更換了順序,加顏色的語句下面重點說明)
{
'__name__':'__main__',
'__doc__':'Createdon2013-5-26',
'__package__':None,
'__cached__':None,
'__file__':'E:\\WorkspaceP\\Test1\\src\\base\\test1.py',
'__loader__':<_frozen_importlib.SourceFileLoaderobjectat0x01C702D0>,
'copy':,
'__builtins__':,
'gstr':'globalstring',
'dictionary':{...},
'func1':,
'deepcopy':
}
總結
1、模塊的名字空間不僅僅包含模塊級的變量和常量,還包括所有在模塊中定義的函數和類。除此以外,它還包括了任何被導入到模塊中的東西。
2、我們看到,內置命名也同樣被包含在一個模塊中,它被稱作__builtin__。
3、回想一下frommoduleimport和importmodule之間的不同。
使用importmodule,模塊自身被導入,但是它保持著自已的名字空間,這就是為什么您需要使用模塊名來訪問它的函數或屬性:module.function的原因。
但是使用frommoduleimportfunction,實際上是從另一個模塊中將指定的函數和屬性導入到您自己的名字空間,這就是為什么您可以直接訪問它們卻不需要引用它們所來源的模塊。使用globals函數,您會真切地看到這一切的發生,見上面的紅色輸出語句。
3、locals與globals之間的一個重要的區別
locals是只讀的,globals不是
示例:
deffunc1(i,info):
x=12345
print(locals())
locals()["x"]=6789
print("x=",x)
y=54321
func1(1,"first")
globals()["y"]=9876
print("y=",y)
輸出:
{'i':1,'x':12345,'info':'first'}
x=12345
y=9876
解釋:
locals實際上沒有返回局部名字空間,它返回的是一個拷貝。所以對它進行改變對局部名字空間中的變量值并無影響。
globals返回實際的全局名字空間,而不是一個拷貝。所以對globals所返回的dictionary的任何的改動都會直接影響到全局變量。
以上內容為大家介紹了Python命名空間的訪問,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。

相關推薦HOT
更多>>
pythonfor循環是什么
pythonfor循環是什么在做遍歷的時候,對于一些數據的反復循環執行,我們會用到for循環的語句。可以說這是新手入門必學的語句之一,在很多基礎循...詳情>>
2023-11-13 07:46:36
pythoncontextmanager()的轉換
python中contextmanager()的轉換1、說明當發出請求時,requests庫會在將請求實際發送到目標服務器之前準備該請求。請求準備包括像驗證頭信息和...詳情>>
2023-11-13 06:34:35
python使用items()遍歷鍵值對
python使用items()遍歷鍵值對字典可以用來存儲各種方式的信息,所以有很多方式可以通過字典的所有鍵值對、鍵或值。說明1、即使通過字典,鍵值對...詳情>>
2023-11-13 04:24:15
python實例方法中self的作用
python實例方法中self的作用說明1、無論是創建類的構造方法還是實例方法,最少要包含一個參數self。2、通過實例的self參數與對象進行綁定,程序...詳情>>
2023-11-13 03:46:48