一、Python全局變數的概念
Python是一種解釋型語言,在代碼執行時,根據代碼的先後順序,會按照運行軌跡從上到下依次執行。在編寫Python代碼時,我們經常會定義變數來存儲數據。而Python的變數有作用域的說法,變數的作用域可以是局部的,也可以是全局的。
全局變數是定義在函數外部的變數,它可以被程序中的任意函數訪問。在Python程序中,全局變數一般用於多個函數共享數據的場合。
# 定義全局變數 global_variable = "I am a global variable." # 函數定義 def foo(): print(global_variable) # 調用函數 foo()
二、Python全局變數的使用
1. 在函數內部讀取全局變數的值
在函數內部讀取全局變數的值,只需要直接使用變數名即可,不需要使用global關鍵字。
# 定義全局變數 global_variable = "I am a global variable." # 函數定義 def foo(): print(global_variable) # 調用函數 foo()
2. 在函數內部修改全局變數的值
如果需要在函數內部修改全局變數的值,就需要使用global關鍵字來說明了。
# 定義全局變數 global_variable = "I am a global variable." # 函數定義 def foo(): global global_variable global_variable = "I have been changed." print(global_variable) # 調用函數 foo() print(global_variable)
3. 全局變數的安全性
如果在函數內部對全局變數進行修改,需要非常小心。如果代碼比較複雜,特別是多線程的情況下,可能會出現意外的情況。
# 定義全局變數 global_variable = "I am a global variable." # 函數定義 def foo(): global global_variable global_variable = "I have been changed." print(global_variable) # 函數定義 def bar(): global global_variable global_variable += " But I have been changed again." print(global_variable) # 主程序 foo() bar() print(global_variable)
4. 使用類來封裝全局變數
如果程序需要使用很多全局變數,那麼可以考慮使用類來封裝這些變數。把需要共享的數據放到類的屬性中,讓多個函數直接訪問對象的屬性即可。
class Settings: def __init__(self): self.version = "1.0" self.width = 800 self.height = 600 # ... 其他的屬性 def get_screen_size(self): return (self.width, self.height) def set_screen_size(self, size): self.width, self.height = size # 創建Settings對象,並訪問其屬性 s = Settings() print(s.version) print(s.get_screen_size()) # 直接修改Settings對象的屬性 s.width = 1024 s.height = 768 print(s.get_screen_size()) # 通過方法修改屬性 s.set_screen_size((1280, 720)) print(s.get_screen_size())
三、小結
Python全局變數是一種被多個函數共享的變數,它可以存儲程序中的重要數據。在函數內部,可以直接訪問全局變數,如果需要修改全局變數,就需要使用global關鍵字。如果程序中需要使用很多全局變數,可以通過類來封裝數據,讓多個函數共享一個類的實例。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/151510.html