Python if语句,如果变量值为字符串或任何类型
如何生成一个if语句,询问我的变量是否包含string或任何类型,如果是,它将执行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
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')