所以我创建了一个转置函数,它可以选择添加列标题,我相信我在 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
关于python - 这是 python 2 函数中的错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17001917/