gpt4 book ai didi

python - Python 中的 Lambda 和函数

转载 作者:IT老高 更新时间:2023-10-28 21:18:28 29 4
gpt4 key购买 nike

我有两个初学者问题

  1. *z*foo**foo 对于 Python 中的函数是什么意思。
  2. 这行得通 - a = lambda *z :z 但这行不通 - a = lambda **z: z。因为它应该采用 0 个参数。这究竟意味着什么?

最佳答案

Python 中的

*z**z 指的是 args 和 kwargs。 args 是位置参数,kwargs 是关键字参数。 lambda **z 在您的示例中不起作用,因为 z 不是关键字参数:它只是位置。比较这些不同的结果:

    >>> a = lambda z: z
>>> b = lambda *z: z
>>> c = lambda **z: z
>>> a([1,2,3])
[1, 2, 3]
>>> b([1,2,3])
([1, 2, 3],)
>>> c([1,2,3]) # list arg passed, **kwargs expected
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: <lambda>() takes exactly 0 arguments (1 given)
>>> c(z=[1,2,3]) # explicit kwarg
{'z': [1, 2, 3]}
>>> c(x=[1,2,3]) # explicit kwarg
{'x': [1, 2, 3]}
>>> c({'x':[1,2,3]}) # dict called as a single arg
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: <lambda>() takes exactly 0 arguments (1 given)
>>> c(**{'x':[1,2,3]}) # dict called as **kwargs
{'x': [1, 2, 3]}
>>> b(*[1,2,3]) # list called as *args
(1, 2, 3)

关于python - Python 中的 Lambda 和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5232719/

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