我有一个类似下面的 Python 函数:
def checkargs(*args):
if len(args) == 1:
x = args
y = something
elif len(args) == 2:
x, y = args
return x, y
当我只输入一个参数(字符串)时,x的输出是元组。当我输入两个参数(两个字符串)时,x和y作为字符串返回。如果我只输入一个参数,如何让x以字符串形式输出?
我有一个类似下面的 Python 函数:
def checkargs(*args):
if len(args) == 1:
x = args
y = something
elif len(args) == 2:
x, y = args
return x, y
当我只输入一个参数(字符串)时,x的输出是元组。当我输入两个参数(两个字符串)时,x和y作为字符串返回。如果我只输入一个参数,如何让x以字符串形式输出?
args
始终是一个元组,即使您只放入一个参数。所以,当您执行以下操作时:x = args
x = ('abc',)
有两种(等效)方法可以修复这个问题:要么将x
显式地分配给元组的第一个元素:
x = args[0]
或者通过将值赋给长度为1的元组来调用与x,y
赋值相同的元组解包:
x, = args
def checkargs(*args):
try:
x, y = args
except ValueError:
(x,), y = args, 'something'
return x, y
y
并在其不存在时将其分配给默认的 something
,请考虑重新设计接口,以便简单地使用默认的关键字参数。
*args
。def checkargs(x, y=something, *args)
可以实现你想要的,并且更清晰易懂,但不改变原意。 - Neil