Python lambda用作参数,从父函数调用其他参数

时间:2015-10-06 19:11:42

标签: python lambda arguments

我是编程新手,在使用Python中的lambda函数时遇到一些麻烦。我理解为什么使用它及其有效性。只是在学习应用它时遇到了麻烦。我已经阅读了一个指南并观看了关于使用lambda作为论据的讲座。我尝试过使用map功能。不确定这是否是正确的方法,但这是我最基本形式的破解代码:

def Coord(x, y, z=lambda: z*2 if z < x or z < y else z)):
    print(z)
Coord(10,20,30) 
Coord(10,20,12) 
Coord(10,20,8) 

需要分别返回30,24和32。 不使用lambda的工作代码:

def Coord(x, y, z):
    while z < x or z < y:
        z*=2
print(z)

1 个答案:

答案 0 :(得分:1)

您不能在z的默认参数定义中使用Coord函数中的其他参数(在您的情况下是lambda函数)。

您可能想要这样做:

def Coord(x, y, w, z=lambda a,b,c: c*2 if c < a or c < b else c):
    print(z(x,y,w))

def Coord(x, y, w):
    z=lambda: w*2 if w < x or w < y else w
    print(z())

使用3个参数评估它们时,两个定义都是等价的,它们会导致:

>>> Coord(10,20,30)
30
>>> Coord(10,20,12)
24
>>> Coord(10,20,8)
16