全域性變數在函式內部的修改

2021-09-19 07:07:14 字數 1146 閱讀 1270

接下來,先看兩個例子:

例子一:

g_num = 0  

def test1():

global g_num

g_num += 10

print("test1後 g_num為:%d" % g_num)

def test2():

g_num = 0

g_num += 20

print("在test2裡 g_num為:%d" % g_num)

def main():

print("未執行程式之前 g_num為:%d" % g_num)

test1()

test2()

print("未執行程式之後 g_num為:%d" % g_num)

if __name__ == '__main__':

main()

以上程式,在test1中聲名全域性變數,然後修改全域性變數後,最終全域性變數的修改生效

而在test2中,並沒有修改全域性變數,所以此時g_num為區域性變數,僅僅在test2中生效。

例子二:

g_list=[1,2]

def test1():

print("經過test1後 g_list為:%s"%g_list)

def test2():

g_list.insert(2,15)

print("經過test2後 g_list為:%s"%g_list)

def main():

test1()

test2()

print(g_list)

if __name__ == '__main__':

main()

有沒有發現,用了列表就不需要用global聲名全域性變數,而且可以直接修改全域性變數

因此  全域性變數在函式內部修改,是否需要global聲名,要看是否對全域性變數的指向做出了修改,如果修改了全域性變數的指向,就必須使用global,如果涉及不到修改變數的指向,則不需要使用global聲名

python全域性變數在 函式中 修改

全域性變數的名字宣告在函式體中時,全域性變數的名字就被區域性變數覆蓋掉。全域性變數對於所有的函式,他們的值都是可以被訪問的。除非別刪除,不然一直活動到指令碼結束。區域性變數是暫時的。程式示例 var 200 1 def foo var 100 2 print var 3 結果是200,不是100。因...

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

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

shell內部變數和全域性變數

一.1 var unix 全域性變數 2 func 3 13 func 執行函式 1415 echo 列印區域性變數lib的值為 f 函式內定義的變數在函式外也可以使用 16 echo var 列印全域性變數var,var的值已經被修改為 linux,函式體可以對全域性變數進行操作 結果如下 wor...