一、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
微信掃一掃
支付寶掃一掃