返回函式,匿名函式

2021-09-25 11:49:05 字數 1362 閱讀 6085

1.返回函式

求和的函式,可以不返回求和的結果,而是返回求和的函式:

def calc_sum(*args):

def sum():

ax=0

for n in args:

ax=ax+n

return ax

return sum

2.匿名函式

以map()函式為例,計算f(x)=x2時,除了定義乙個f(x)的函式外,還可以直接傳入匿名函式:

print(list(map(lambda x:x*x,[1,2,3,4,5,6,7,8,9])))

[1, 4, 9, 16, 25, 36, 49, 64, 81]

過對比可以看出,匿名函式lambda x: x * x實際上就是:

def f(x):

return x * x

關鍵字lambda表示匿名函式,冒號前面的x表示函式引數

用匿名函式有個好處,因為函式沒有名字,不必擔心函式名衝突。此外,匿名函式也是乙個函式物件,也可以把匿名函式賦值給乙個變數,再利用變數來呼叫該函式:

f=lambda x:x*x

print(f(5))

25同樣,也可以把匿名函式作為返回值返回,比如:

def build(x, y):

return lambda: x * x + y * y

3.偏函式

nt()函式可以把字串轉換為整數,當僅傳入字串時,int()函式預設按十進位制轉換:

print(int(『12345』))

12345

但int()函式還提供額外的base引數,預設值為10。如果傳入base引數,就可以做n進製的轉換:

print(int(『12345』,base=6))

1865

假設要轉換大量的二進位制字串,每次都傳入int(x, base=2)非常麻煩,於是,我們想到,可以定義乙個int2()的函式,預設把base=2傳進去:

def int2(x,base=2):

return int(x,base)

print(int2(『1000000』))

print(int2(『1010101』))

6485

functools.partial就是幫助我們建立乙個偏函式的,不需要我們自己定義int2(),可以直接使用下面的**建立乙個新的函式int2:

import functools

int2=functools.partial(int,base=2)

print(int2(『1000000』))

print(int2(『1010101』))

6485

返回函式 匿名函式lambda 偏函式

1 函式作為結果值返回 例如 可變引數求和,不會立刻返回求和結果,而是返回求和函式 例如 可變引數求和 def lazy sum args defsum ax 0for n in args 返回函式內部引用了lazy num 函式的引數 ax ax n return ax return sum f ...

函式式程式設計之返回函式 匿名函式

1 返回函式 高階函式除了可以接受函式作為引數外,還可以把函式作為結果值返回。每次迴圈,都建立了乙個新函式,呼叫f1,f2,f3結果都為9 原因 返回的函式引用了變數i,三個函式都返回時,所引用的變數i變為了3,所以最終結果為9 返回函式不要引用任何迴圈變數,或者後續會發生變化的變數。如果一定要用迴...

python函式式程式設計(二)返回函式 匿名函式

1.函式作為返回值 高階函式除了可以接受函式作為引數外,還可以把函式作為結果值返回。我們來實現乙個可變引數的求和。通常情況下,求和的函式是這樣定義的 defcalc sum args ax 0 for n in args ax ax n return ax 如果不需要立刻求和,而是在後面的 中,根據...