調用lambda函數python

下面是在user-defined函數中使用lambda函數的示例:

def sample_func(a):       #1
    return lambda a:a*a

當它被調用時,

s=sample_func(2)          #2
print(s)

輸出似乎是一個函數地址,如<function sample_func.<locals>.<lambda> at 0000xx

在上面賦值給變量s之后

s(5)                      #3

returns 25.

對pythonlambda來說是新來的,正確的解釋方法是什么,解釋器如何處理#2中的參數,以及為什么#2中沒有返回4,謝謝你的幫助!

? 最佳回答:

所以這里有點詭計,因為變量a被多次使用。

但首先,在#2中要做的是調用some_func,它返回一個函數對象。lambda是一個函數對象,在本例中,您將其賦值給s。在#3中,調用該函數并傳入值5。此時s基本上等于:

def s(foo: int):
    return foo * foo

讓我們仔細看看這個函數:

def sample_func(a):       #1
    return lambda a:a*a

調用sample_func()時,它返回一個函數對象。此返回函數接受參數a,并返回a*a。所以現在發生的是傳遞到sample_func()的參數a基本上從未使用過。如果您想知道為什么,那么它與作用域在Python中的工作方式有關。以下代碼是一個更容易理解的示例:

1) def outer_function(foo: int):
2)     print("Currently in outer_function, and foo is " + foo)
3)     
4)     def inner_function(foo: int):
5)         print("Currently in inner_function and foo is " + foo)
6)     return inner_function

在上面的代碼中,第5行的foo變量引用了傳入inner_function()foo參數,它沒有引用outer_functionfoo參數。你可以把inner_function()當作你的lambda。

希望一切都有意義!

主站蜘蛛池模板: 无码精品人妻一区二区三区AV| 日韩精品人妻av一区二区三区| 精品日韩亚洲AV无码一区二区三区| 国产日韩精品一区二区三区 | 日本一区二区高清不卡| 亚洲a∨无码一区二区| 天堂Aⅴ无码一区二区三区| 欧美日韩一区二区成人午夜电影 | 日本亚洲成高清一区二区三区| 一区二区三区视频网站| 亚洲色大成网站www永久一区| 福利一区二区视频| 久久中文字幕无码一区二区 | 国内精品视频一区二区三区| 亚洲片一区二区三区| 国产亚洲日韩一区二区三区 | 国产一区二区三区播放| 无码成人一区二区| 国产精品成人免费一区二区| 国产成人精品一区二三区熟女| 一区二区高清视频在线观看| 国产一区二区草草影院| 天天视频一区二区三区| 亚洲国产一区明星换脸| 国产aⅴ一区二区| 亚洲av不卡一区二区三区| 人妻少妇精品视频三区二区一区| 精品福利视频一区二区三区| 无码人妻精品一区二| 亚洲日韩AV一区二区三区中文| 日本不卡一区二区三区视频| 亚洲AV成人一区二区三区观看| 国产suv精品一区二区33| 无码人妻精品一区二区三区9厂 | 成人一区二区三区视频在线观看| 国产麻豆精品一区二区三区| 国产精品分类视频分类一区 | 无码少妇一区二区浪潮av| 秋霞鲁丝片一区二区三区| 亚洲啪啪综合AV一区| 在线免费观看一区二区三区|