函数返回元组而不是字符串

时间:2013-05-22 03:29:49

标签: python string function python-2.7 tuples

我在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作为字符串出来?

2 个答案:

答案 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。