繁体   English   中英

检查输入到函数中的参数的类型

[英]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并确保它们都是strlist ,例如:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM