我在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作为字符串出来?
答案 0 :(得分:5)
这是因为args
总是一个元组,即使你只输入一个参数。所以,当你这样做时:
x = args
这就像在做:
x = ('abc',)
有两种(等效的)方法可以解决这个问题:要么明确地将x
分配给元组的第一个元素:
x = args[0]
或通过分配长度为1的元组来调用x,y
赋值使用的相同元组解包:
x, = args
答案 1 :(得分:1)
这应该有效:
def checkargs(*args):
try:
x, y = args
except ValueError:
(x,), y = args, 'something'
return x, y
但是,如果您要检查是否存在y
并将其分配给默认something
,请考虑重新设计界面以简单地使用默认的kwarg。