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

时间:2017-04-25 07:25:43

标签: python

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

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

checkMyValues("haime")

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

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

6 个答案:

答案 0 :(得分:0)

在您的函数中使用*args会使args成为tuple而不是str,这就是为什么它不会打印it is a string

试试这个

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

checkMyValues("haime")

有关*args*kwargs here

的更多信息

答案 1 :(得分:0)

从args中删除*它会起作用。将*添加到参数使其成为非密钥参数(List)。因此,您的检查失败。

答案 2 :(得分:0)

你需要遍历args(这是你传递给函数的参数的tuple):

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

输出:

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

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:-1)

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

答案 5 :(得分:-1)

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

$string = "SELECT id, title FROM table WHERE id = ?d AND qwe=?s";
$pattern = '/\?+([sdf])/i';
$data = array("s" => 111, "d" => 222, "f" => 333);
$inc = 0;

echo preg_replace_callback($pattern, function ($matches) use ($data) {
    switch ($matches[0]) {
        case '?s':
            return '`'.$data[$matches[1]].'`';
        case '?d':
            return (int) $data[$matches[1]];
        case '?f':
            return (double) $data[$matches[1]];
    }
}, $string);