这是python 2函数中的一个错误吗?

Rya*_*axe 1 python args

所以我创建了一个转置函数,可以选择添加列标题,我相信我遇到了python中的一个bug并使用了*args:

>>> def transpose(*args,header=None):
  File "<stdin>", line 1
    def transpose(*args,header=None):
                        ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

所以是的,因为*args是任意数量的值,你不能在它之后放任何东西,但是你应该能够放置variable=value因为那个变量有一个自动赋值使它与*args分开,因为你可以用它来调用它header=['col1','col2','col3']等等

以下内容不会出错:

def transpose(header=None,*args):
    #code goes here
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,这使得函数的第一个输入被分配给头而不需要做header=value,做出header必要的输入,这不是我想要的,我肯定不是很多人使用任意创建函数想要的数量.

有了这个错误,它似乎不可能有一个使用*args和输入不是要求的功能.这是python中的错误吗?

注意:我使用的是python2.7,所以如果它是一个bug,它很可能只是该版本中的一个bug

tor*_*rek 5

短python 2.x答案是"不要那样做".:-)(正如@Bakurui所说,它内置于Python 3.x.)

无论如何你真的想要这样做,这里是如何(只是args部分):

def transpose(*args, **kwargs):
    header = kwargs.pop('header', None)
    if kwargs:
        raise TypeError('unexpected keyword args to transpose()')
    print 'transpose: args:', args
    print 'transpose: header:', header
Run Code Online (Sandbox Code Playgroud)