函數(shù)與函數(shù)之間的調(diào)用
3.1 第一種情況 程序代碼如下:
def x(f):
def y():
print(1)
return y
def f():
print(2)
x(f)
運(yùn)行結(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())
運(yùn)行結(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)
運(yùn)行結(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())
運(yùn)行結(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)
運(yùn)行結(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文章
3787瀏覽量
81060 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4331瀏覽量
62633 -
變量
+關(guān)注
關(guān)注
0文章
613瀏覽量
28373 -
python
+關(guān)注
關(guān)注
56文章
4797瀏覽量
84695
發(fā)布評論請先 登錄
相關(guān)推薦
評論