- 函數內部的變量只作用在函數內部,外部是不能調用的。
- python 中有作用域鏈,變量會由內向外找,先在自己的作用域找,自己沒有再向上級找,直到找不到報錯。
- 若在自己的作用域找到了相應的變量,而在賦值之前調用則程序會報錯
#1
name = 'milton'
def f1():
????print(name)
f1()
程序會輸出 >>>milton
f1 函數,變量 name 首先在函數內部找,沒有找到變量的賦值,則向函數外部找,找到name = 'milton' ,打印出 name 的值。
#2
name ='milton'
def f1():
????name = 'long'
????print(name)
f1()
程序會輸出 >>>long
f1 函數,變量 name 還是先從函數內部找,找到 name = 'long',故就不再向外找 name 的值。
#3
name ='milton'
def f1():
????print(name)
????name = 'long'
????print(name)
f1()
程序會報錯,因為第一句 print(name),函數先從函數內部到變量 name ,但是 print 出現在了 name 的賦值之前,故程序報錯:UnboundLocalError: local variable 'name' referenced before assignment? (本地變量(局部變量)在聲明之前調用)