python函數(shù)的兩種嵌套方法小結(jié)
函數(shù)嵌套的兩種方式:
一、交叉嵌套
交叉嵌套的方式是在本函數(shù)中調(diào)用同一級或上一級函數(shù)的嵌套方法:
一種編碼形式:
# -*- coding: utf-8 -*-
# @Time : 2022/8/12 15:39
#定義函數(shù)func()
def func(foo):
print(1)
foo()
print(3)
def a():
print(1)
#調(diào)用函數(shù)func()
b = func(a)
print(b)
輸出結(jié)果:
1
1
3
None
首先,程序會將 Python 文件中頂格的代碼運(yùn)行。函數(shù) func 和 a 都是先開辟內(nèi)存空間存儲起來,但不會被執(zhí)行。當(dāng)程序走到賦值操作時,會先執(zhí)行等號右邊的代碼。函數(shù) func 被調(diào)用,函數(shù) a 作為參數(shù)被傳到 func 中。func 函數(shù)被執(zhí)行,順序也是從上往下,先是把 1 打印出來,然后調(diào)用參數(shù) foo。
需要注意的是,foo 是形參,實(shí)參是 a。調(diào)用 foo 在此時的意思是調(diào)用函數(shù) a。函數(shù) a 被調(diào)用,又打印出一個 1 來。函數(shù) a 運(yùn)行完畢,返回至函數(shù) func,繼續(xù)執(zhí)行下面的代碼,打印出 3 來。最后,函數(shù)默認(rèn)返回 None,賦值給 b。程序運(yùn)行結(jié)束。
另一種編碼形式:
def func():
print(1)
print("我太難了")
print(2)
def foo(b):
print(3)
ss = b()
print(ss)
print(4)
def f(a,b):
a(b)
f(foo,func)
輸出結(jié)果:
3
1
我太難了
2
None
4
跟上面一樣,先將函數(shù)全都加載到新開辟的內(nèi)存空間中,但不執(zhí)行。到最后 f 函數(shù)被調(diào)用,foo 和 func 兩個函數(shù)作為參數(shù)被傳到函數(shù) f 中。在函數(shù) f 中,foo 函數(shù)被調(diào)用,參數(shù)為 func 函數(shù)。進(jìn)入到 foo 函數(shù),先打印 3。到賦值語句,先執(zhí)行等號右邊的代碼,函數(shù) func 被調(diào)用。
在函數(shù) func 中,打印三個內(nèi)容 1、我太難了 和 2。函數(shù)默認(rèn)返回值為 None,被賦值給 ss。打印 ss 就是打印 None。最后打印 4,然后返回到函數(shù) f,再返回到全局空間。執(zhí)行結(jié)束。
二、回環(huán)嵌套
回環(huán)函數(shù)就是在函數(shù)中調(diào)用下級函數(shù)的嵌套方法
代碼如下(示例):
def func(a,b):
def foo(b,a):
print(b,a)
return foo(a,b) #先執(zhí)行函數(shù)調(diào)用
a = func(4,7)
print(a)
輸出結(jié)果:
4 7
None
函數(shù)依然先存儲在新開辟的空間中不會被調(diào)用。運(yùn)行到賦值語句時,還是先執(zhí)行等號右邊的代碼,將兩個數(shù)字傳到函數(shù) func中。在函數(shù)內(nèi)部,依然是先開辟空間把函數(shù) foo 放進(jìn)去。運(yùn)行到 return 不會馬上終止函數(shù),而是先運(yùn)行 return 后面的代碼。foo 函數(shù)被調(diào)用,傳進(jìn)去的值是 4 和 7,然后打印出來。
需要注意的是,函數(shù) foo 的形參與函數(shù) func 的形參是相同的,不要給搞混了。日常寫代碼時不建議這樣使用。打印出 4 和 7 之后,運(yùn)行到函數(shù)最后一行,函數(shù)默認(rèn)返回 None。然后再賦值給 a,打印出來。
補(bǔ)充:函數(shù)調(diào)用時的實(shí)參和形參之間傳遞
定義函數(shù)基本格式如下:
def 函數(shù)名(參數(shù)表): 函數(shù)語句 return 返回值
return代表著函數(shù)結(jié)束,選擇性地返回一個值給調(diào)用函數(shù)。參數(shù)和返回值都不是必須有的。
定義函數(shù)時,參數(shù)表中的參數(shù)稱為形式參數(shù),簡稱形參;
調(diào)用函數(shù)時,參數(shù)表中的參數(shù)稱為實(shí)際參數(shù),簡稱實(shí)參。
到此這篇關(guān)于python函數(shù)的兩種嵌套方法小結(jié)的文章就介紹到這了,更多相關(guān)python函數(shù)嵌套內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Python操作時間和日期之a(chǎn)sctime()方法的使用
這篇文章主要介紹了在Python操作時間和日期之a(chǎn)sctime()方法的使用,是Python入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-05-05
使用python opencv對畸變圖像進(jìn)行矯正的實(shí)現(xiàn)
本文主要介紹了使用python opencv對畸變圖像進(jìn)行矯正的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05
Python中列表,元組,字典和集合的區(qū)別及它們之間的轉(zhuǎn)換
這篇文章主要介紹了Python中列表,元組,字典和集合的區(qū)別及它們之間的轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
基于 Python實(shí)現(xiàn)云服務(wù)器的CDN域名遠(yuǎn)程鑒權(quán)配置
這篇文章主要介紹了基于 Python實(shí)現(xiàn)云服務(wù)器的CDN域名遠(yuǎn)程鑒權(quán)配置,文章內(nèi)容技術(shù)詳細(xì),具有一定的參考價值,需要的小伙伴可以參考一下2022-05-05
Python入門_淺談for循環(huán)、while循環(huán)
下面小編就為大家?guī)硪黄狿ython入門_淺談for循環(huán)、while循環(huán)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05

