簡體   English   中英

為什么globals()是Python中的函數?

[英]Why is globals() a function in Python?

Python提供了函數globals()來訪問所有全局變量的字典。 為什么是函數而不是變量? 以下作品:

g = globals()
g["foo"] = "bar"
print foo # Works and outputs "bar"

將全局變量隱藏在函數中的原理是什么? 最好只調用一次並將引用存儲在某個地方,還是應該在每次需要時調用它?

恕我直言,這不是Python中globals()原因的重復嗎? ,因為我不是在問為什么globals()存在,而是為什么它必須是一個函數(而不是變量__globals__ )。

因為它可能取決於Python實現,所以構建該字典需要進行多少工作。

在CPython中,全局變量僅保留在另一個映射中,調用globals()函數將返回對該映射的引用。 但是其他Python實現可以根據需要隨意為對象創建單獨的字典。

這反映了locals()函數,該函數在CPython中必須按需創建字典,因為本地通常存儲在數組中(本地名稱被轉換為CPython字節碼中的數組訪問權限)。

因此,當您需要訪問全局名稱的映射時,可以調用globals() 在CPython中可以存儲對該映射的引用,但是在其他實現中不要指望其他引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM