Python lambda用作参数,从父函数调用其他参数
问题描述:
我是编程新手,在理解Python中的lambda函数方面有点麻烦。我明白为什么使用它和它的有效性。只是无法学会应用它。我读过一篇指南并观看了使用lambda作为参数的讲座。我试过使用地图功能。不知道如果这是正确的做法,但是这是我的断码在其最基本的形式:Python 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)
需要分别返回30,24,和32。 工作代码,而无需使用lambda:
def Coord(x, y, z):
while z < x or z < y:
z*=2
print(z)
答
在默认的参数定义无法使用其他参数从坐标函数Z(这是你的情况lambda函数)。
您可能需要做这样的事情:用3个参数进行评价,当
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())
两个定义是等价的,它们导致:
>>> Coord(10,20,30)
30
>>> Coord(10,20,12)
24
>>> Coord(10,20,8)
16
如果你是编程新手,你可能想首先使用lambdas做一些简单的事情,并理解它们是如何工作的,因为它代表着你的代码不能远程工作。 –
_“我已阅读指南并观看了使用lambda作为参数的演讲”_。有链接? – Kevin
是的 该指南是https://pythonconquerstheuniverse.wordpress.com/2011/08/29/lambda_tutorial/ 和最后约5分钟在这里 http://ocw.mit.edu/courses/electrical-engineering-and computer-science/6-00sc-introduction-to-computer-science-and-programming-spring-2011/unit-1/lecture-9-memory-and-search-methods/ – Ahoomaha