gpt4 book ai didi

python - Python 3 中函数和 lambda 之间的差异以及何时使用which

转载 作者:行者123 更新时间:2023-12-01 04:39:14 25 4
gpt4 key购买 nike

我对 Python(以及一般编程)还很陌生。我想知道,既然lambda和函数非常相似,那么什么时候适合使用which,它们之间有什么区别?

我问的原因是我只见过 lambda 用于非常基本和简单的程序,例如:

sq = lambda x: x**2 
print(sq(25))

虽然函数可以更复杂,例如具有多个参数、不同的循环类型、if/else、递归、调用另一个函数(我认为是组合)等。

我知道你可以在 lambda 中调用函数,例如:

def turnUppercase(n):
return n.upper()

a = lambda x: turnUppercase(x)
print(a('Cookie'))

这个例子毫无意义,但仍然......我从未通过尝试其他东西来测试 lambda 的极限。

lambda 的限制是什么?如何扩展 lambda 的功能(如果只是为了给人们留下深刻印象)以匹配函数的功能? (在 lambda 内部调用一个函数,调用另一个 lambda,在内部循环,等等)。

注意我问的是 Python 3。

谢谢!

最佳答案

lambda 是一个无名函数。在 python 中,它必须适合一行。仅当您调用一个将另一个函数作为参数的函数时,它才最有用。

示例:

listOfLists.sort(key=lambda x:x[1]) #Sort list of lists by second element

(请参阅 sorting: Key Functions 。可能是 lambda 最常见的有效用法)

您可以在 lambda 中做很多愚蠢的事情(查看用 python 编写的任何代码高尔夫),但如果您要在实际维护的代码中使用它们,通常建议保持它们简单。

While functions can be much more complicated like having multiple parameters, different looping types, if/else, recursive, calling another function (composition, I think), etc.

顺便说一句,我认为在 lambda 中唯一不能做的就是递归。

多个参数:lambda x,y: x**2+y**2

循环(技术上):lambda x: [subprocess.call('pip install --upgrade ' + dist.project_name, shell=True) for dist in pip.get_installed_distributions()] (和是的,我知道我是一个可怕的人)

如果/否则:lambda x:“蓝色”如果 x > 1000,否则“橙色”

至于在 lambda 中不能做什么...呃,关键字参数? *参数?如果你的代码看起来不像一只喝醉的猫徘徊并随机敲击括号、方括号和大括号,那么有没有一点复杂性?

我认为一般规则是“如果你的老板向你询问‘为什么这是 lambda’,并且你可以立即回答并解释 lambda 的作用,那么你可能有理由使用 lambda。否则,最好宁可不使用它。”

关于python - Python 3 中函数和 lambda 之间的差异以及何时使用which,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31128660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com