1

我刚开始作为一名 Python 程序员。在进行 Python 挑战时,我在自己解决了其他人的解决方案后,通过查看其他人的解决方案来了解很多关于该语言的知识。

我到处都能看到 lambda 函数。它们看起来很简单,但可读性也差一些(至少现在对我来说)。

在其他东西上使用 lambda 函数有什么价值吗?我想知道在我的学习曲线早期是否值得学习!

4

4 回答 4

2

在需要的地方使用 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)]
于 2013-02-10T13:15:26.447 回答
0

Lambda 在需要时使用,当它们使代码更简洁但不那么清晰时,等等。它们并没有真正与列表推导(或任何其他推导)竞争。如果你在 Python 中发现一些可读性较差的东西,你可能应该将其更改为你认为更易读的东西。

于 2013-02-10T12:27:35.893 回答
0

整个lambda 演算是一件非常酷的事情。你应该尽早习惯这些概念,因为它们会让你有更广阔的思维。首先,我建议阅读

http://www.secnetix.de/olli/Python/lambda_functions.hawk

为什么 Python lambdas 有用?

Lambda 函数通常用于支持列表推导,因为它们产生的代码更少,更容易阅读(如果你曾经习惯它的话)并且是单行的。

于 2013-02-10T12:27:42.320 回答
0

在其他东西上使用 Lamba 函数有什么价值吗?

有时您希望创建非常短的函数,但并不想真正命名它们。例如,我经常将它们用于函数回调。

some_system.add_modifier(lambda x, y, z: return (x*2, y*2, z*2))

就像其他评论建议的那样,这并不是选择一个或一个的问题,而只是学习该语言的一些关键机制。当然,这并不意味着必须一直使用该功能,但了解它是件好事。

我想知道在我的学习曲线早期是否值得学习!

我会说学习它,但在你觉得舒服的地方使用它。程序员对他们学到的新功能感到疯狂是很常见的。:)

于 2013-02-10T16:04:27.657 回答