num = 5
def func():
num += 1
print(num)
fun()
print(num)
輸出:UnboundLocalError: local variable 'num' referenced before assignment
翻譯:局部變量錯誤:變量 “num” 未被定義就被應用了。由此再次證明了這里定義了一個局部變量,而不是使用的全局的 “num”
總結:當已經在函數體外的變量已經被定義為全局變量后,在函數體內又被重新賦值一遍,這時的變量在函數體內又被定義為局部變量,只在函數體內才會有效。在函數體外的時候恢復之前未在函數體內定義的狀態。
def func():
num = 10
print(num)
func()
print(num)
輸出:NameError: name 'num' is not defined
名稱錯誤:變量num沒有被定義
說明這里num被定義成了一個局部變量,只能在函數體內有效。
num = 100
def func()
x = num +100
print(x)
輸出:200
說明這里的num是作全局變量使用的
總結:自己看程序
如果想在函數體內定義一個全局變量,可以用globa來定義,如下:
num = 100
def func():
global num
num = 200
print(num)
func()
print(num)
輸出:200
輸出:200
說明這里的num是作全局變量使用的。
