所以我想创建一个函数,并根据传入的参数类型执行不同的操作。具体来说,我希望它在输入字符串时执行一项操作,如果输入了列表则需要执行其他操作。这在Python中可行吗?如果是这样我将如何去做呢?
目前我已尝试使用isinstance()但它似乎没有点击我的任何if语句:
def tester(*args):
if (isinstance(args, str)):
return "String"
elif (isinstance(args, list)):
return"List"
else:
return "You dun goofed"
编辑:用户一次只能传递一个参数,无论是列表还是字符串。
答案 0 :(得分:3)
*args
是传递给参数的参数的元组。 splat(*
)运算符解包函数调用中给出的参数,例如。
>>> def tester(*args):
print args
print type(args)
>>> tester(1, 'a')
(1, 'a')
<type 'tuple'>
所以你可能想做的就是检查每个args上的isinstance
,并确保它们都是str
或list
,例如:
if all(isinstance(a, str) for a in args):
答案 1 :(得分: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"