Python函数参数的命名法

时间:2012-06-01 01:03:28

标签: python

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

我正在寻找像空白)= {形式/任意长度/实际/可变位置/固定}

之类的东西

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

2 个答案:

答案 0 :(得分:1)

您正在寻找的大部分内容都可以在the Python Tutorial找到。

从左到右:

  • a是位置参数。
  • b=3是一个位置参数,默认值为3.
  • *args是一个任意参数列表,解压缩为元组。
  • **kwargs是一个关键字参数,解压缩为字典。

答案 1 :(得分: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'
    
  5. 如果合法使用args,可以说它用于传递可能需要的和任意位置参数。

    >>> punk(a, *args)
    1
    4
    (5,)
    {}