這篇文章給大家介紹怎么在Python中使用嵌套函數,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
內嵌函數(嵌套函數):
意思:在函數里面再定義一個新的函數
如果在函數體內不調用內嵌的函數,那么無法在外部調用
def my_pr1(): print("第一層打印") def my_pr2(): print("第二層打印") my_pr2()#如果在函數體內不調用內嵌的函數,那么無法在外部調用 my_pr1()
local(局部作用域) -->enclosing(函數范圍作用域)-->global(全局作用域)--->build-in(內建對象作用域)
代碼塊級別的作用域: Python沒有劃分代碼塊作用域
代碼塊里的變量,外部可以調用
if 1>0: name="automan" print(name)
上述代碼運行結果:
automan
函數基本的作用域:
局部作用域:
函數內部定義的變量是局部變量,外部無法訪問
a=50 def change(x): x=6 change(a) print("after change:",a)
上述代碼運行結果:
after change: 50
def func3(): superman="automan" print(superman)
運行結果:
NameError: name 'superman' is not defined
內嵌關系的函數的作用域:
對于內嵌關系的函數的作用域依然遵循local(局部作用域) -->enclosing(函數范圍作用域)-->global(全局作用域)--->build-in(內建對象作用域)
如果自身函數有目標變量,則使用自身函數內的變量的值;
如果沒有,會向上找父函數中是否存在目標變量,如果有,則使用父函數中的該變量的值;【如果父函數還有父函數,也會一直向上查找】
直到離開最外層的函數體,那么會在全局范圍內找該變量
如果再沒有,會到內建對象作用域找
都沒有就報錯,拋出異常
def func4(): superman="automan" def haha(): print(superman) haha() func4()
運行結果:
automan
非內嵌關系的函數的作用域:
非內嵌關系的函數作用域依然遵循local(局部作用域) -->enclosing(函數范圍作用域)-->global(全局作用域)--->build-in(內建對象作用域)
但由于不是父子關系的嵌套函數,當自身函數范圍區域內找不到時,會直接到全局作用域找
aotuman='金甲戰士' def f5(): print(aotuman) def f4(): aotuman='max' f5() f4()
運行結果:
金甲戰士
默認填寫某個函數的某些參數,返回一個新的函數
避免了參數的重復輸入
import functools print_t=functools.partial(print,end='\t') print_t(1) print_t(1) print_t(1)
上述代碼結果:
1 1 1
Python是一種編程語言,內置了許多有效的工具,Python幾乎無所不能,該語言通俗易懂、容易入門、功能強大,在許多領域中都有廣泛的應用,例如最熱門的大數據分析,人工智能,Web開發等。
關于怎么在Python中使用嵌套函數就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。