Python if语句,如果变量值是字符串或任何类型

Python if statement if variable value is string or any Type

如何生成一个if语句,该语句将询问我的变量是否包含字符串或任何类型,如果包含,那么它将执行if语句下的代码。下面的代码只是我的实验,但它不能像我希望的那样工作。

1
2
3
4
5
def checkMyValues(*args):
    if isinstance(args, str) == True:
        print("it is a string!")

checkMyValues("haime")

但这不会输出"它是一个字符串!".

任何帮助都将不胜感激,谢谢


当您想要检查类型的参数列表时,您应该循环它,而不是检查元组本身的类型。然后它会给你预期的结果。下面是您的代码的修改版本

1
2
3
4
5
6
7
8
def checkMyValues(*args):
    for each in args:        
        if isinstance(each, str) == True:
            print("it is a string!")
        else:
            print("Its not a string")

checkMyValues("haime", 20, '40.2')


您需要循环遍历参数(它是您传递给函数的参数中的tuple):

1
2
3
4
def checkMyValues(*args):
    for arg in args:
        if isinstance(arg, str):
            print(arg,"is a string!")

输出:

1
2
3
4
5
6
checkMyValues("haime")
# haime is a string!

checkMyValues("haime", 7, [], None, 'strg')
# haime is a string!
# strg is a string!


从args中删除*,它将工作。向参数添加*使其成为非关键字参数(列表)。所以你的支票没用。


在函数中使用*args将使args成为tuple而不是str,这就是它不打印it is a string的原因。

试试这个

1
2
3
4
5
def checkMyValues(arg):
    if isinstance(arg, str): # Not need to compare == True
        print("it is a string!")

checkMyValues("haime")

更多有关*args*kwargs的信息,请点击此处。


我不太明白你的意思,但根据你的代码。也许你需要这个。

1
2
3
def checkMyValues(args):
    if isinstance(args, str):
        print("is string")


*args是元组而不是字符串

1
2
3
4
5
6
7
8
9
def checkMyValues(*args):
    for s in args:  
        z = type(s)
        if  z is str:
            print(s," is a string!")
        else:
            print(s," is not a string!")

checkMyValues("4","5",5)