python學習之返回函式

2022-02-17 09:10:30 字數 2131 閱讀 4213

在學習返回函式的時候,函式只是在呼叫的時候才會執行一直不理解,隔天後在來看的時候明白了一些,記錄一下。

看**

>>> def

fun1(n):

...

deffun2(x):

...

return

pow(x,n)

...

return

fun2

...>>> pow2=fun1(2)

>>>pow2

.fun2 at 0x7f8bdfe2e378>

>>> pow2(9)

81

看這個函式的定義是將fun1()下定義的函式fun2()返回fun2()位址,當將fun1(2)的返回的fun2位址賦給pow2後當執行pow2(9)的時候才執行了fun1()內定義的函式即fun2(),即fun1(9,2)。

還有就是返回函式中的在乙個內部函式裡對外部作用域(但不是全域性作用域)的變數進行引用,內部函式稱為閉包(closure)。其中用到了迴圈

def

count():

fs=for i in range(1,4):

deff():

return i*i

#把函式f位址追加至列表fs

#返回為乙個包含3個函式f位址的列表

returnfs

print('

count函式返回乙個列表,列表分別為函式f位址

',count())

f1,f2,f3 =count()

print(f1,'

f1執行結果是

',f1())

print(f2,'

f2執行結果是

',f2())

print(f3,'

f3執行結果是

',f3())

count函式返回乙個列表,列表分別為函式f位址 [.f at 0x7fc5d30cac80>, .f at 0x7fc5d30cad08>, .f at 0x7fc5d30cad90>]

.f at 0x7fc5d30cac80> f1執行結果是 9

.f at 0x7fc5d30cad08> f2執行結果是 9

.f at 0x7fc5d30cad90> f3執行結果是 9

結果全是9,而不是所希望的1,4,9

在這個函式中i是count函式的區域性變數

當i= 1時,i指向了1,結果返回了函式的位址放在了fs的第乙個位置。

當i = 2時,又將i 指向了2,函式位址返回到了fs的第二個位置上。

當i = 3 時,i 指向了3,然後返回了函式位址在fs的第三個位置。

所以當呼叫函式顯示的時候,i 已經是3,所以得到的結果是一樣的。

def

count():

fs=for i in range(1,4):

deff(j):

defg():

return j*j

return

g

#返回為乙個包含3個函式f位址的列表

returnfs

print('

count函式返回乙個列表,列表分別為函式f位址

',count())

f1,f2,f3 =count()

print(f1,'

f1執行結果是

',f1())

print(f2,'

f2執行結果是

',f2())

print(f3,'

f3執行結果是

',f3())

count函式返回乙個列表,列表分別為函式f位址 [.f..g at 0x7ff488311d08>, .f..g at 0x7ff488311c80>, .f..g at 0x7ff488311d90>]

.f..g at 0x7ff488311c80> f1執行結果是 1

.f..g at 0x7ff488311d08> f2執行結果是 4

.f..g at 0x7ff488311d90> f3執行結果是 9

這樣修改後就得到了希望的結果。

**中f(j)將迴圈中i的值傳給了j,當i處於迴圈中時返回的函式並不是指向i,而是將它的數值傳給了j並指向j。

python返回函式 python中返回函式

python的函式不但可以返回int str list dict等資料型別,還可以返回函式!例如,定義乙個函式 f 我們讓它返回乙個函式 g,可以這樣寫 deff print call f 定義函式g defg print call g 返回函式g return g 仔細觀察上面的函式定義,我們在函...

python返回 python 返回函式

返回函式 1.高階函式除了能夠接收函式作為引數外,還能把函式作為結果返回 2.例如乙個求和函式,通常情況下的定義以及呼叫 def sum nums x 0for n in nums x x n return x sum 1,2,3,4,5 不返回求和的結果,而是返回求和的函式 def sum 1 n...

python 返回函式

返回函式 python的函式不但可以返回int str list dict等資料型別,還可以返回函式!例如,定義乙個函式 f 我們讓它返回乙個函式 g,可以這樣寫 deff print call f 定義函式g defg print call g 返回函式g return g仔細觀察上面的函式定義,...