首页 > 解决方案 > 调用python函数

问题描述

下面是在用户定义函数中使用 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

返回 25。

python lambda的新手,解释这个的正确方法是什么,解释器如何处理#2中的参数以及为什么#2中没有返回4,谢谢你的帮助!

标签: pythonfunctionlambda

解决方案


sample_func是一个函数工厂,它返回函数(在本例中为 lambda 函数)。

所以返回值sample_func是一个函数本身。因此,当您将它存储在#2 中的变量中时,您将 lambda 函数存储在那里。它相当于:

s = lambda x: x*x

然后当您调用函数 s(5) 时,它使用 x=5,并返回 5 5=25。类似地,s(4) 使用 x=4,并返回 4 4=16。

在更一般的意义上,lambda *args: return_value.

在这种情况下,参数aofsammple_func是未使用的,因为我们在 lambda 中重新声明了它。

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

相当于:

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

如果你想asample_funclambda 内部访问,只需调用 lambda 的参数:

def sample_func(a):
    return lambda x: a * x

现在,如果您运行代码,s(5)将返回10,等于2 * 5


推荐阅读