gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:09:53 26 4
gpt4 key购买 nike

所以我创建了一个转置函数,它可以选择添加列标题,我相信我在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com