python中myab python中返回函式

2021-10-13 03:53:34 字數 1051 閱讀 1278

python的函式不但可以返回int、str、list、dict等資料型別,還可以返回函式!

例如,定義乙個函式 f(),我們讓它返回乙個函式 g,可以這樣寫:

def f():

print 'call f()...' # 定義函式g: def g():

print 'call g()...' # 返回函式g: return g

仔細觀察上面的函式定義,我們在函式 f 內部又定義了乙個函式 g。由於函式 g 也是乙個物件,函式名 g 就是指向函式 g 的變數,所以,最外層函式 f 可以返回變數 g,也就是函式 g 本身。

呼叫函式 f,我們會得到 f 返回的乙個函式:

>>> x = f() # 呼叫f() call f()...

>>> x # 變數x是f()返回的函式:

>>> x() # x指向函式,因此可以呼叫 call g()... # 呼叫x()就是執行g()函式定義的**

請注意區分返回函式和返回值:

def myabs():

return abs # 返回函式 def myabs2(x):

return abs(x) # 返回函式呼叫的結果,返回值是乙個數值

返回函式可以把一些計算延遲執行。例如,如果定義乙個普通的求和函式:

def calc_sum(lst):

return sum(lst)

呼叫calc_sum()函式時,將立刻計算並得到結果:

>>> calc_sum([1, 2, 3, 4])

但是,如果返回乙個函式,就可以「延遲計算」:

def calc_sum(lst):

def lazy_sum():

return sum(lst)

return lazy_sum

# 呼叫calc_sum()並沒有計算出結果,而是返回函式:

>>> f = calc_sum([1, 2, 3, 4])

>>> f

# 對返回的函式進行呼叫時,才計算出結果:

>>> f()

由於可以返回函式,我們在後續**裡就可以決定到底要不要呼叫該函式。

python中 python中的 與

這一部分首先要理解python記憶體機制,python中萬物皆物件。對於不可變物件,改變了原來的值,其別名 變數名 繫結到了新值上面,id肯定會改變 對於可變物件,操作改變了值,id肯定會變,而 是本地操作,其值原地修改 對於 號操作,可變物件和不可變物件呼叫的都是 add 操作 對於 號操作,可變...

python中否定for 在python中否定函式

有沒有一種方法可以否定乙個函式,使它返回負數。在我的函式中,我有條件句,每個條件句都讓這個 烏龜 移動。有沒有一種方法可以否定這一點,所以烏龜的每乙個動作都是否定的。我說的是 狀況 在def ttinterpret program interpret program as a tinyturtle ...

python中雙重迴圈 加速Python中的雙迴圈

有沒有辦法加快從上一次迭代更新其值的雙迴圈?在 中 def calc n,m x 1.0 y 2.0 container np.zeros n,2 for i in range n for j in range m x np.random.gamma 3,1.0 y y 4 y np.random....