函式中全域性變數的操作

2021-09-10 06:40:19 字數 1382 閱讀 9376

在python中,在函式外面賦值的變數,被稱為全域性變數。

# 定義兩個全域性變數

name = "cat"

game = ["lol"]

# 修改全域性變數的資料:全域性變數是字串

def text_str():

'''修改字串的資料'''

# 修改全域性變數的資料

name = "mouse"

print("name:", name)

text_str()

# 檢視函式執行後的全域性變數

print("name:", name)

結果:name: mouse

cat

在此案例中可以看到雖然函式中已經對全域性變數name進行了修改,但是通過兩個輸出結果可以發現,在函式內部的輸出結果為修改後的結果,而在函式執行完畢後的結果顯示,全域性變數name的值並沒有被修改。

def test_str():

'''修改字串資料'''

# 如果要修改全域性變數的資料:宣告可以修改

global name

# 修改全域性變數的資料

name= 'mouse'

print("name:", name)

# 檢視全域性變數的資料

print(name)

test_str()

print(name)

結果:cat

name: mouse

mouse

在上述**中我們新增乙個global關鍵字,使得全域性變數name的值在函式執行後發生了改變。(global關鍵字的作用是在函式中對乙個全域性變數進行宣告操作,宣告乙個全域性變數在此函式中是可以進行修改的)

通過上面兩個案例得知在普通函式中,可以訪問全域性變數的資料,但是一般不允許直接修改,可以通過global關鍵字引入之後進行修改。

# 修改全域性變數的資料:變數是乙個列表

def test():

'''修改列表中的資料'''

# 修改list資料

print("全域性變數的資料game:", game)

print("函式執行前普通**中全域性變數game:", game)

test()

print("函式執行後普通**中全域性變數game:", game)

結果:函式執行前普通**中全域性變數game: ["lol"]

全域性變數的資料game: ["lol", "pubg"]

函式執行後普通**中全域性變數game: ["lol", "pubg"]

在上述**中可以發現,當全域性變數是乙個列表是,在函式中可以直接對列表中的內容進行修改。這是因為在此**中只是對列表裡面的值進行了修改,列表還是那個列表,列表的本身並沒有被修改。

Python中的全域性變數操作

接觸python時間不長,對有些知識點,掌握的不是很紮實,我個人比較崇尚不管學習什麼東西,首先一定回去把基礎打的非常紮實了,再往高處走。今天遇到了python中的全域性變數的相關操作,遇到了問題,所以,在這裡將自己遇到的問題,做個記錄,以長記心!在python中使用全域性變數,其實,個人認為並不是很...

函式中「引用」全域性變數和「修改」全域性變數的差別

以下程式中,函式中可以直接列印出全域性變數x,而無須使用關鍵字global html view plain copy print?x 1 def run print x if name main run 當在函式中需要修改全域性變數時,如果沒有global關鍵字則會出錯 python view pl...

Python函式操作外部(全域性)變數

在python的哲學裡,函式不強制要有返回值,對於沒有reutrn的函式直譯器會自作主張返回乙個none 因此,可以用函式實現過程封裝。函式內部變數都是區域性的,相當於namespace限定在這個函式裡,無法影響全域性,例如 def init x 0 init x traceback most re...