我是编程新手,在使用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)
答案 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