函數(shù)與函數(shù)之間的調(diào)用
3.1 第一種情況 程序代碼如下:
def x(f):
def y():
print(1)
return y
def f():
print(2)
x(f)
運行結(jié)果:
無結(jié)果
分析:因為第9行中的x(f)中的f沒有帶括號,f只是一個普通的參數(shù),所以程序只調(diào)用執(zhí)行了x(f)函數(shù),沒有調(diào)用執(zhí)行f()函數(shù)。x(f)函數(shù)中雖然也定義了y()函數(shù),但是x(f)函數(shù)中沒有調(diào)用執(zhí)行y()函數(shù),只是執(zhí)行了return y。而y變量也沒有值,所以整個程序的返回值就為無結(jié)果。
3.2 第二種情況 程序代碼如下:
def x(f):
def y():
print(1)
return y
def f():
print(2)
x(f())
運行結(jié)果:
2
分析:因為第9行中的x(f())中的f()帶括號,所以程序先調(diào)用執(zhí)行f()函數(shù),先輸出2。然后2作為參數(shù)傳入到x(f)函數(shù)中,程序開始調(diào)用執(zhí)行x(f)函數(shù)。x(f)函數(shù)中雖然也定義了y()函數(shù),但是x(f)函數(shù)中沒有調(diào)用執(zhí)行y()函數(shù),只是執(zhí)行了return y。而y變量也沒有值,所以調(diào)用執(zhí)行x(f)函數(shù)沒有產(chǎn)生任何結(jié)果。因此該程序最終只輸出了2。
3.3 第三種情況 程序代碼如下:
def x(f):
def y():
print(1)
return y()
def f():
print(2)
x(f)
運行結(jié)果:
1
分析:因為第9行中的x(f)中的f沒有帶括號,f只是一個普通的參數(shù),所以程序只調(diào)用執(zhí)行了x(f)函數(shù),沒有調(diào)用執(zhí)行f()函數(shù)。x(f)函數(shù)中也定義了y()函數(shù),并且返回是y()函數(shù)。因此程序調(diào)用執(zhí)行了y()函數(shù),輸出結(jié)果是1。
3.4 第四種情況
def x(f):
def y():
print(1)
return y()
def f():
print(2)
x(f())
運行結(jié)果:
2
1
分析:因為第9行中的x(f())中的f()帶括號,所以程序調(diào)用執(zhí)行了f()函數(shù),先輸出2。然后2作為參數(shù)傳入到x(f)函數(shù)中,程序開始調(diào)用執(zhí)行x(f)函數(shù)。x(f)函數(shù)中也定義了y()函數(shù),并且返回是y()函數(shù)。因此程序也調(diào)用執(zhí)行了y()函數(shù),也輸出了1。最終該程序先后輸出了2和1。
3.5 第五種情況 程序代碼如下:
def x(f):
def y():
print(1)
print(f())
return y()
def f():
#print(2)
return 2
x(f)
運行結(jié)果:
1
2
分析:因為第9行中的x(f)中的f沒有帶括號,f只是一個普通的參數(shù),所以程序只是先調(diào)用執(zhí)行了x(f)函數(shù)。在x(f)函數(shù)中也定義了y()函數(shù),而且返回值是y()函數(shù),所以程序會調(diào)用執(zhí)行y()函數(shù)。在y()函數(shù)中先是執(zhí)行print(1)語句,輸出1,接著執(zhí)行print(f())語句,所以程序在這時也會調(diào)用執(zhí)行f()函數(shù),輸出2。最終該程序先后輸出了1和2。
-
程序
+關(guān)注
關(guān)注
117文章
3820瀏覽量
82396 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4368瀏覽量
64185 -
變量
+關(guān)注
關(guān)注
0文章
614瀏覽量
28821 -
python
+關(guān)注
關(guān)注
56文章
4825瀏覽量
86172
發(fā)布評論請先 登錄
一文詳解python調(diào)用函數(shù)
如何查看及更改函數(shù)/函數(shù)塊的調(diào)用環(huán)境

python普通函數(shù)創(chuàng)建與調(diào)用
C++教程之函數(shù)的遞歸調(diào)用
詳解python普通函數(shù)創(chuàng)建與調(diào)用
系統(tǒng)調(diào)用與普通的函數(shù)調(diào)用之間的區(qū)別

評論