Python 中的 Globals() 函式
在 Python 中,每個程式都有一個符號表,其中包含程式中定義的名稱(變數、函式和類)的資訊。globals() 函式允許我們訪問和操作全域性符號表,提供有關程式中當前全域性變數的有價值資訊。在本文中,我們將瞭解這些 globals() 函式是如何工作的以及我們可以在 Python 中使用此函式做什麼。
globals() 函式概述
在 Python 中,每個程式都有一個符號表,其中包含程式中定義的名稱(變數、函式、類等)的資訊。符號表由字典表示,其中名稱是鍵,關聯的值表示其當前值或引用。
globals() 函式返回一個字典,表示當前的全域性符號表。它提供了對當前作用域中所有全域性變數及其對應值的訪問許可權。透過檢查此字典,我們可以以程式設計方式檢索、修改或刪除全域性變數。
語法
globals()
在這裡,globals() 函式不接受任何引數,它只是返回表示全域性符號表的字典。
檢索全域性變數
可以使用 globals() 函式在 Python 中檢索全域性變數,該函式返回一個表示當前全域性符號表的字典。透過訪問此字典並遍歷其項,您可以檢索當前作用域中所有全域性變數的名稱和值。
示例
在下面的示例中,我們定義了三個全域性變數:x、y 和 z。我們還定義了一個函式 print_globals(),該函式呼叫 globals() 函式來檢索全域性符號表。透過遍歷結果字典的項,我們列印所有全域性變數的名稱和值。此外,我們可以看到函式 print_globals() 本身也存在於全域性符號表中。
x = 10
y = 5
z = "Hello, World!"
def print_globals():
global_vars = globals()
for name, value in global_vars.items():
print(f"{name}: {value}")
print_globals()
輸出
__name__: __main__
__doc__: None
__package__: None
__loader__: <_frozen_importlib_external.SourceFileLoader object at 0x7f9b30a74a30>
__spec__: None
__annotations__: {}
__builtins__: <module 'builtins' (built-in)>
__file__: /home/cg/root/22219/main.py
__cached__: None
x: 10
y: 5
z: Hello, World!
print_globals: <function print_globals at 0x7f9b30c13d90>
修改全域性變數
globals() 函式不僅允許我們檢索全域性變數,還允許我們修改其值。
示例
在下面的示例中,我們定義了一個全域性變數 x,其初始值為 10。modify_global() 函式使用 globals() 檢索全域性符號表,並透過直接更新字典條目將 x 的值修改為 20。當我們在呼叫 modify_global() 函式之前和之後列印 x 的值時,我們可以看到修改生效了。
x = 10
def modify_global():
global_vars = globals()
global_vars['x'] = 20
print("Before modification:", x)
modify_global()
print("After modification:", x)
輸出
Before modification: 10 After modification: 20
新增新的全域性變數
我們還可以使用 globals() 函式動態新增新的全域性變數。讓我們看一個演示相同的示例。
示例
在下面的示例中,我們定義了一個函式 add_global(),該函式使用 globals() 將一個名為 new_var 的新全域性變數新增到全域性符號表中。呼叫該函式後,我們列印 new_var 的值,這確認該變數已成功新增並且可以在全域性範圍內訪問。
def add_global():
global_vars = globals()
global_vars['new_var'] = "I'm a new global variable!"
add_global()
print(new_var)
輸出
I'm a new global variable!
結論
在本文中,我們討論了什麼是 globals() 函式以及為什麼使用它。globals() 函式用於訪問和操作程式中的全域性變數。透過使用此函式,我們可以動態檢索、修改或新增全域性變數。透過使用 globals() 函式的功能,您可以更好地控制程式的全域性變數,從而提高您的 Python 程式設計技能。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP