如何创建一个if语句,询问我的变量是否包含字符串或任何类型,如果是,那么它将执行我的if语句下的代码。 下面的代码只是我的实验,但它并不像我希望的那样有效。
def checkMyValues(*args):
if isinstance(args, str) == True:
print("it is a string!")
checkMyValues("haime")
但这不输出"它是一个字符串!"。
任何帮助将不胜感激。谢谢
答案 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);