如何在Python中跨模塊共享全局變量?
Python作為一種高級編程語言,提供了很便捷的全局變量管理方式。愛掏網 - it200.comPython中的全局變量即全局作用域變量,可以在函數內部和模塊內部進行定義、引用和修改。愛掏網 - it200.com但是當需要在跨模塊使用全局變量時,就會遇到許多問題,如何在Python中解決這些問題呢?
Python中定義全局變量分為兩種方式:
方式一:在模塊中定義全局變量
定義全局變量的方式與其他變量一樣,在需要定義變量的行上方寫上變量名即可。愛掏網 - it200.com例如,我們在一個名為”global_var.py”的模塊中定義全局變量:
#global_var.py
count=10
方式二:在函數內定義全局變量
Python中,可以利用global
關鍵字在函數內部定義全局變量。愛掏網 - it200.com如下所示:
#global_var.py
def func():
global count
count=10
2.在同一個模塊中共享全局變量
在同一個模塊中共享全局變量是很容易的。愛掏網 - it200.com我們直接在需要使用全局變量的函數中進行引用即可。愛掏網 - it200.com以下是一個示例代碼:
#global_var.py
count=10
def add():
global count
count+=1
def print_count():
print("count: "+str(count))
if __name__=='__main__':
add()
print_count()
輸出結果為:
count: 11
3.在不同模塊中共享全局變量
在不同模塊中共享全局變量需要先根據需要共享的全局變量定義文件,然后在需要引用的模塊中使用import
語句進行引入。愛掏網 - it200.com
3.1 全局變量定義模塊
我們需要單獨定義一個全局變量的模塊,名為global_var.py
。愛掏網 - it200.com在該模塊中定義一個全局變量count
:
#global_var.py
count=10
3.2 變量引用模塊
我們在引用global_var.py
模塊中的全局變量時,需要使用import
語句進行引入。愛掏網 - it200.com如下所示,引入global_var.py
模塊中定義的全局變量后,我們可以進行引用和修改。愛掏網 - it200.com
#main.py
import global_var
def add():
global_var.count+=1
def print_count():
print("count: "+str(global_var.count))
if __name__=='__main__':
add()
print_count()
輸出結果為:
count: 11
3.3 加載模塊時刻
上面的示例代碼中,變量引用模塊在程序運行時加載global_var.py
模塊。愛掏網 - it200.com有時我們想在不同的模塊中共享全局變量,但在程序開始運行時就加載全局變量定義模塊。愛掏網 - it200.com實現該需求的代碼示例如下:
#global_var.py
count=10
#second_global_var.py
import global_var
def add():
global_var.count+=1
def print_count():
print("count: "+str(global_var.count))
#main.py
import global_var
import second_global_var
if __name__=='__main__':
second_global_var.add()
second_global_var.print_count()
輸出結果為:
count: 11
4.注意事項
在Python中,跨模塊共享全局變量要注意的一些事項:
4.1 模塊重載問題
當我們引入全局變量定義模塊時,Python會將該模塊加載至內存中。愛掏網 - it200.com如果我們對該模塊進行修改,Python并不會自動更新模塊狀態。愛掏網 - it200.com因此,需要使用reload()
函數來重新加載模塊。愛掏網 - it200.com例如,我們在global_var.py
模塊中修改全局變量count
的值:
#global_var.py
count=10
def set_count(new_count):
global count
count=new_count
我們在main.py
模塊中引入global_var.py
中的全局變量,并修改其值為20。愛掏網 - it200.com然后再次引入global_var.py
模塊并打印全局變量的值: