我刚开始作为一名 Python 程序员。在进行 Python 挑战时,我在自己解决了其他人的解决方案后,通过查看其他人的解决方案来了解很多关于该语言的知识。
我到处都能看到 lambda 函数。它们看起来很简单,但可读性也差一些(至少现在对我来说)。
在其他东西上使用 lambda 函数有什么价值吗?我想知道在我的学习曲线早期是否值得学习!
我刚开始作为一名 Python 程序员。在进行 Python 挑战时,我在自己解决了其他人的解决方案后,通过查看其他人的解决方案来了解很多关于该语言的知识。
我到处都能看到 lambda 函数。它们看起来很简单,但可读性也差一些(至少现在对我来说)。
在其他东西上使用 lambda 函数有什么价值吗?我想知道在我的学习曲线早期是否值得学习!
在需要的地方使用 lambda,在更合适的时候使用列表推导、生成器表达式等。
lambda 是一个单表达式函数,可以多次使用,或者作为一种回调。它可以产生单个值以及复杂的值。
列表理解是您评估一次然后根据需要使用它的东西。您会得到一个包含生成值的列表并使用它。
生成器表达式(我在这里提到它)是一个生成器(可迭代),您创建它然后只使用一次:在循环中,在另一个生成器表达式中,在列表推导中,甚至用于返回。
你甚至可以组合这些东西,像这样:
f = lambda n: [i for i in range(n, 2*n)]
g = (i * 2 for i in f(10))
l = [i * i for i in g]
ll = lambda n: [i * i * 2 for i in f(n)]
Lambda 在需要时使用,当它们使代码更简洁但不那么清晰时,等等。它们并没有真正与列表推导(或任何其他推导)竞争。如果你在 Python 中发现一些可读性较差的东西,你可能应该将其更改为你认为更易读的东西。
整个lambda 演算是一件非常酷的事情。你应该尽早习惯这些概念,因为它们会让你有更广阔的思维。首先,我建议阅读
http://www.secnetix.de/olli/Python/lambda_functions.hawk
Lambda 函数通常用于支持列表推导,因为它们产生的代码更少,更容易阅读(如果你曾经习惯它的话)并且是单行的。
在其他东西上使用 Lamba 函数有什么价值吗?
有时您希望创建非常短的函数,但并不想真正命名它们。例如,我经常将它们用于函数回调。
some_system.add_modifier(lambda x, y, z: return (x*2, y*2, z*2))
就像其他评论建议的那样,这并不是选择一个或一个的问题,而只是学习该语言的一些关键机制。当然,这并不意味着必须一直使用该功能,但了解它是件好事。
我想知道在我的学习曲线早期是否值得学习!
我会说学习它,但在你觉得舒服的地方使用它。程序员对他们学到的新功能感到疯狂是很常见的。:)