Skip to main content
 首页 » 编程设计

python之这是 python 2 函数中的错误吗

2025年05月04日11hnrainll

所以我创建了一个转置函数,它可以选择添加列标题,我相信我在 python 和使用 *args 时遇到了一个错误:

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

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

以下不会报错:

def transpose(header=None,*args): 
    #code goes here 

唯一的问题是,这使得函数的第一个输入被分配给 header ,而无需执行 header=value,使 header 成为必需的输入,这不是我想要的,而且我敢肯定,许多使用任意数量的值创建函数的人也不是想要的。

有了这个错误,似乎不可能有一个使用 *args 的函数,并且输入不是必需的。这是 python 中的错误吗?

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

请您参考如下方法:

简短的 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