[英]Checking the type of parameter entered into a function
因此,我想创建一个函数,并根据传入的参数的类型使函数执行不同的操作。特别是,如果输入字符串,则我希望它做一件事,如果输入列表,则我想做其他事情。 这在Python中可行吗? 如果是这样,我将如何去做呢?
目前,我尝试使用isinstance(),但似乎并没有影响我的任何if语句:
def tester(*args):
if (isinstance(args, str)):
return "String"
elif (isinstance(args, list)):
return"List"
else:
return "You dun goofed"
编辑:用户一次只能传递一个参数,无论是列表还是字符串。
*args
是传递给参数的参数的元组 。 splat( *
)运算符解压缩函数调用中指定的参数。
>>> def tester(*args):
print args
print type(args)
>>> tester(1, 'a')
(1, 'a')
<type 'tuple'>
因此,您可能想要做的是检查每个arg上的isinstance
并确保它们都是str
或list
,例如:
if all(isinstance(a, str) for a in args):
看起来您要传递的只是函数的单个参数。 在这种情况下,请删除“ *”,因为它始终被视为参数的元组。 它是可变长度的参数 ,在不确定要使用的参数数量时将使用该参数。
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"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.