Python 全局變量
局部變量就是定義在一個函數體內部的變量
全局變量是定義在外面的變量
a = 1 # 全局變量是定義在函數、類外面的變量 def f(): b = 2 # 局部變量 print(a) # 全局變量
引用全局變量
a = 1 # 全局變量a 是定義在函數、類外面的變量 print("line 2",id(a)) def f(): b = a # # 全局變量 a print("in f() ",id(a)) f()
輸出結果:
line 2 140719972816656
in f() 140719972816656
修改全局變量的值
下面的代碼,在f()中修改a,此時a為新的同名變量,是一個局部變量
a = 100000 # 全局變量a 是定義在函數、類外面的變量 print("line 2",a,id(a)) def f(): a = 200000 # # 全局變量 a ? 還是局部變量 a? print("in f() ",a,id(a)) f() print("in f() ",a,id(a))
輸出結果:
line 2 100000 60503712
in f() 200000 60503728
in f() 100000 60503712
如果想在函數里面對全局變量進行修改,可以加關鍵詞 global
a = 1 # 全局變量a 是定義在函數、類外面的變量 print("line 2",a,id(a)) def f(): global a a = 2 # # 全局變量 a ? 還是局部變量 a? print("in f() ",a,id(a)) f() print("line end",a,id(a))
輸出結果:
line 2 1 2081907888
in f() 2 2081907904
line end 2 2081907904
再看一個示例:
a = 1 # 全局變量a 是定義在函數、類外面的變量 print("line 2",id(a)) def f(): global a a = 2 # # 全局變量 a ? 還是局部變量 a? print("in f() ",id(a)) print(a) f() print("line 2",id(a)) print(a)
輸出結果:
line 2 140719966328592 in f() 140719966328624 2 line 2 140719966328624 2