1
args = [4,5]
kwargs = {'x': 7}
func(a, b=2, *args, **kwargs)

指代 a、b、args 和 kwargs 的公认命名法是什么?

具体来说,请在此处填写空白:

'a' is a (_blank_) positional argument
'args' contains (_blank_) positional arguments
'b' is a (_blank_) keyword argument
'kwargs' contains (_blank_) keyword arguments

我正在寻找类似空白)= {正式/任意长度/实际/可变位置/固定}的东西

如果我在上面说错了,也请纠正我。

4

2 回答 2

1

正如 Edward Loper 已经描述的那样,您的条款是正确的。你只能更具体:

  1. 'a' 是第一个必需的位置参数。
  2. 'args' 传递非法的位置参数。(你知道,因为你在关键字参数之后使用它。)
  3. 'b' 是一个可选的关键字参数……命名为b ……,默认值为 2。
  4. 'kwargs' 传递任意关键字参数。

    def punk(a, b, *args, **kwargs):
        print a
        print b
        print args
        print kwargs
    
    a=1; b=2; args = [4,5]; kwargs={'x':7}
    punk(a, b=b, *args, **kwargs)
    Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
    TypeError: punk() got multiple values for keyword argument 'b'
    

如果您args合法使用,您可以说它用于传递可能需要的任意位置参数。

>>> punk(a, *args)
1
4
(5,)
{}
于 2012-06-01T01:29:56.763 回答
1

您正在寻找的大部分内容都可以在Python 教程中找到。

从左到右:

  • a是一个位置参数。
  • b=3是一个位置参数,默认值为 3。
  • *args是一个任意参数列表,解包为一个元组。
  • **kwargs是一个关键字参数,解压缩为字典。
于 2012-06-01T01:27:57.897 回答