a=0#回車 print(a)#回車 輸出0 #複製下麵這一段開始 def funcA(): b='A'def funcB(): a=2 b='B' print(a,b) def funcC(): nonlocal a b='C' a=3 print(a,b) ... ...
a=0#回車 print(a)#回車 輸出0 #複製下麵這一段開始 def funcA(): b='A'def funcB(): a=2 b='B' print(a,b) def funcC(): nonlocal a b='C' a=3 print(a,b) def funcD(): global a b='D' a=4 print(a,b) a=5 print(a,b) funcB() funcC() funcD() print(a,b) #複製結束 funcA()#調用函數 #輸出結果5 A#第一次輸出全局變數a和局部變數b 2 B#第二次輸出funcB()結果,和預想的一樣,同C# 3 C#第三次輸出funcC()結果,和預想一樣,還沒看出卻別 4 D#第四次輸出funcD()結果,和預想一樣,還沒看出卻別 3 A#第五次輸出上面3個函數執行後的結果,發現全局變數a結果為3而不是5,這跟C#中的引用傳參、靜態變數有啥區別? print(a)#輸出4 print(a,b)#報錯,全局變數只有a,如果funcD()中加一句global b會怎樣呢?報錯? #錯誤信息如下: Traceback (most recent call last): File "<pyshell#122>", line 1, in <module> print(a,b) NameError: name 'b' is not defined