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

Python if语句,如果变量值为字符串或任何类型,python,Python,如何生成一个if语句,询问我的变量是否包含string或任何类型,如果是,它将执行if语句下的代码。 下面的代码只是我的实验,但它不能像我希望的那样工作 def checkMyValues(*args): if isinstance(args, str) == True: print("it is a string!") checkMyValues("haime") 但这不会输出“它是一个字符串!” 任何帮助都将不胜感激。谢谢*args是元组而不是字符串 def ch

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

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

checkMyValues("haime")
但这不会输出“它是一个字符串!”


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

*args是元组而不是字符串

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)

在函数中使用
*args
将使args成为
元组,而不是
str
,这就是它不会打印
它是字符串的原因

试试这个

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

checkMyValues("haime")

有关
*args
*kwargs

从args中删除*的详细信息,它将起作用。将*添加到参数使其成为非关键字参数(列表)。因此,您的检查失败。

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

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

您需要在参数上循环(这是传递给函数的参数的
元组
):

哪些产出:

checkMyValues("haime")
# haime is a string!

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

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

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')

您有
def
twiceops对不起。只是在这里,而不是在我实际的python代码中。定义行中参数前面的星号表示所有参数都在一个列表中传递。所以你得到一个列表,它的第一个元素是string类型。
*args
生成一个元组,而不是一个列表。是的,但我希望它是*args,因为我正在处理大量灵活的参数。我想我明白了。我需要在For循环中首先循环它,并在对其执行任何操作之前获取args的每个值。谢谢,顺便说一句,args是一个元组,而不是一个列表。可能是一个重要的区别。几分钟后我问了这个问题。我得到了和你答案相同的答案谢谢!顺便说一句,你可以删除“==True”,效果很好。酷。是的,isinstance()函数返回一个布尔值,如果没有“==”,它可以正常工作。如果您不理解这个问题,您应该在回答之前澄清它。
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')