0

所以我想创建一个函数并让它根据传入的参数的类型执行不同的操作。具体来说,我希望它在输入字符串时做一件事,如果输入列表则做另一件事。这在 Python 中可能吗?如果是这样,我将如何去做?

目前我已经尝试使用 isinstance() 但它似乎并没有触及我的任何 if 语句:

def tester(*args):
    if (isinstance(args, str)):
        return "String"
    elif (isinstance(args, list)):
        return"List"
    else:
        return "You dun goofed"

编辑:用户一次只能传入一个参数,无论是列表还是字符串。

4

2 回答 2

3

*args是传递给参数的参数元组。splat ( *) 运算符解包函数调用中给出的参数,例如。

>>> def tester(*args):
        print args
        print type(args)


>>> tester(1, 'a')
(1, 'a')
<type 'tuple'>

因此,您可能想要做的是检查isinstance每个参数并确保它们全部strlist例如:

if all(isinstance(a, str) for a in args):
于 2013-05-10T09:05:59.207 回答
2

看起来您要传递的只是函数的一个参数。在这种情况下,删除“*”,因为它始终被视为参数元组。它是可变长度参数,当您不确定函数所需的参数数量时使用。

def tester(args):
    if (isinstance(args, str)):
        return "String"
    elif (isinstance(args, list)):
        return"List"
    else:
        return "You dun goofed"

如果您的函数实际上需要可变长度参数并且您想检查传递的第一个参数是字符串还是列表,您可以执行以下操作:

def tester(*args):
    if (isinstance(args[0], str)):
        return "String"
    elif (isinstance(args[0], list)):
        return"List"
    else:
        return "You dun goofed"
于 2013-05-10T09:11:55.427 回答