【问题标题】:Function returns tuple instead of string函数返回元组而不是字符串
【发布时间】:2013-05-16 23:43:20
【问题描述】:

我在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。 def checkargs(x, y=something, *args) 会完成你想要的,并且更清晰。

标签: python string function python-2.7 tuples


【解决方案1】:

发生这种情况是因为args始终是一个元组,即使您只输入一个参数。所以,当你这样做时:

x = args

这就像在做:

x = ('abc',)

有两种(等效的)方法可以解决这个问题:或者将x 显式分配给元组的第一个元素:

x = args[0]

或调用与x,y 分配使用的相同的元组解包,方法是分配给长度为1 的元组:

x, = args

【讨论】:

    【解决方案2】:

    这应该可行:

    def checkargs(*args):
        try:
          x, y = args
        except ValueError:
          (x,), y = args, 'something'
        return x, y
    

    但是,如果您要检查y 的存在并在它不存在时将其分配给默认something,请考虑重新设计界面以仅使用默认kwarg。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多