接下來,先看兩個例子:
例子一:
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...