gpt4 book ai didi

python - 为什么这个 lambda 需要 *arg,它有什么区别?

转载 作者:太空狗 更新时间:2023-10-30 00:44:21 28 4
gpt4 key购买 nike

我遇到了一个非常聪明的小函数,它接受两个函数,在给定参数 x 的情况下将一个函数叠加应用:

def compose(f,g):
return lambda *x: f(g(*x))

现在我的问题是 *x,因为我看不到它在这里真正做任何事情。为什么不能是简单的 x(没有星号)?

这是我的测试:

>>> def compose(f,g):
... return lambda *x: f(g(*x))
...
>>> this = lambda i: i+1
>>> that = lambda b: b+1
>>> compose(this,that)(2)
4

>>> def compose(f,g):
... return lambda x: f(g(x))
...
>>> compose(this,that)(2)
4

>>> def compose(f,g):
... return lambda *x: f(g(*x))
...
>>> compose(this,that)(2,2)
TypeError: <lambda>() takes exactly 1 argument (2 given)

最佳答案

如果 g(测试中的 that)也可以接受可变数量的参数,那么 lambda *x: f(g(*x)) 很有用。

否则,不会那么多。

目的是允许使用任意数量的参数调用组合函数,并将所有这些参数传递给组合中的内部函数。

关于python - 为什么这个 lambda 需要 *arg,它有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30604701/

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