python 函數作用域小記

- 函數內部的變量只作用在函數內部,外部是不能調用的。

- 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? (本地變量(局部變量)在聲明之前調用)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容