- 函數(shù)內(nèi)部的變量只作用在函數(shù)內(nèi)部,外部是不能調(diào)用的律姨。
- python 中有作用域鏈振峻,變量會由內(nèi)向外找,先在自己的作用域找择份,自己沒有再向上級找扣孟,直到找不到報(bào)錯。
- 若在自己的作用域找到了相應(yīng)的變量荣赶,而在賦值之前調(diào)用則程序會報(bào)錯
#1
name = 'milton'
def f1():
????print(name)
f1()
程序會輸出 >>>milton
f1 函數(shù)凤价,變量 name 首先在函數(shù)內(nèi)部找,沒有找到變量的賦值讯壶,則向函數(shù)外部找料仗,找到name = 'milton' ,打印出 name 的值伏蚊。
#2
name ='milton'
def f1():
????name = 'long'
????print(name)
f1()
程序會輸出 >>>long
f1 函數(shù),變量 name 還是先從函數(shù)內(nèi)部找格粪,找到 name = 'long'躏吊,故就不再向外找 name 的值。
#3
name ='milton'
def f1():
????print(name)
????name = 'long'
????print(name)
f1()
程序會報(bào)錯帐萎,因?yàn)榈谝痪?print(name)比伏,函數(shù)先從函數(shù)內(nèi)部到變量 name ,但是 print 出現(xiàn)在了 name 的賦值之前疆导,故程序報(bào)錯:UnboundLocalError: local variable 'name' referenced before assignment? (本地變量(局部變量)在聲明之前調(diào)用)