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

Python lambda used as an argument, calling other arguments from parent function

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

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) 

需要分别 return 30、24 和 32。 不使用 lambda 的工作代码:

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

您不能在 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