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

dmb*_*dmb 2 python string tuples function python-2.7

我在python中有一个类似于以下的函数:

def checkargs(*args):
    if len(args) == 1:
        x = args
        y = something
    elif len(args) == 2:
        x, y = args

    return x, y
Run Code Online (Sandbox Code Playgroud)

当我只输入一个参数(一个字符串)时,x作为一个元组出现.当我输入两个参数(两个字符串)时,x和y作为字符串返回.如果我只输入一个参数,我怎么能把x作为字符串出来?

lvc*_*lvc 5

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

x = args
Run Code Online (Sandbox Code Playgroud)

这就像做:

x = ('abc',)
Run Code Online (Sandbox Code Playgroud)

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

x = args[0]
Run Code Online (Sandbox Code Playgroud)

x,y通过分配长度为1的元组来调用分配使用的相同元组解包:

x, = args
Run Code Online (Sandbox Code Playgroud)