正则表达式对象如何在Python循环中工作?
我正在Python上构造一个if语句,当正则表达式的match函数发现一个巧合时,它会打印一些东西。我想知道,当我的语句的条件不是布尔值时,if语句为什么工作(我想是的) 这将产生:正则表达式对象如何在Python循环中工作?,python,python-3.x,regex,if-statement,Python,Python 3.x,Regex,If Statement,我正在Python上构造一个if语句,当正则表达式的match函数发现一个巧合时,它会打印一些东西。我想知道,当我的语句的条件不是布尔值时,if语句为什么工作(我想是的) 这将产生: "There's a match" 它为什么工作?Python类型有一个关联的“truthiness”值。您可以通过在不同的对象上执行bool()来尝试。最明显的例子是整数: bool(1) > True bool(0) > False 但它超出了这一范围bool(“”将为
"There's a match"
它为什么工作?Python类型有一个关联的“truthiness”值。您可以通过在不同的对象上执行bool()
来尝试。最明显的例子是整数:
bool(1)
> True
bool(0)
> False
但它超出了这一范围bool(“”
将为False
,而任何其他非空字符串将为True
。空列表、dict、tuple是False
,但一旦它们不是空的,就转到True
。这是由\uuubool\uuuu
类方法确定的,该方法规定了在对象上调用bool()
时应计算的内容
对于re.match
函数的输出,如果没有找到模式(计算结果为False
),它将返回None
),或者返回re.match
对象(计算结果为True
)
这就是为什么在您的例子中,由于成功地找到了模式,if子句的条件计算为True。Python类型有一个关联的“truthiness”值。您可以通过在不同的对象上执行bool()
来尝试。最明显的例子是整数:
bool(1)
> True
bool(0)
> False
但它超出了这一范围bool(“”
将为False
,而任何其他非空字符串将为True
。空列表、dict、tuple是False
,但一旦它们不是空的,就转到True
。这是由\uuubool\uuuu
类方法确定的,该方法规定了在对象上调用bool()
时应计算的内容
对于re.match
函数的输出,如果没有找到模式(计算结果为False
),它将返回None
),或者返回re.match
对象(计算结果为True
)
这就是为什么在您的例子中,由于成功地找到了模式,if子句的条件计算为True。当使用
re.match()
找到匹配项时,将返回re.match()
对象。在你的情况下,这是
<re.Match object; span=(0, 3), match='abc'>
如果未找到匹配项,则返回None
,这始终等于False
coincidence = re.match(r'\w{5}', 'abc')
print(coincidence)
#None
bool(coincidence)
#False
您的语句可以归结为
为真
,当返回一个对象时,它等于为真
,当使用re.match()
are.match()
对象被返回时,它等于为真。在你的情况下,这是
<re.Match object; span=(0, 3), match='abc'>
如果未找到匹配项,则返回None
,这始终等于False
coincidence = re.match(r'\w{5}', 'abc')
print(coincidence)
#None
bool(coincidence)
#False
您的语句可以归结为为真
,当返回一个对象时,它等于为真
没有“if循环”<代码>如果
没有循环。你是对的。我会改的。没有“如果循环”<代码>如果没有循环。你是对的。我会改的,很好的解释。如果我理解正确,If语句的参数类型转换为bool,这是原始问题的关键。对boolean的强制只发生在If
语句中。否则,您需要bool
。例如,bool(concurrence)为真
将在concurrence
不是空类型时返回True
。解释得很好。如果我理解正确,If语句的参数类型转换为bool,这是原始问题的关键。对boolean的强制只发生在If
语句中。否则,您需要bool
。例如,bool(concurrence)为真
将在concurrence
不是空类型时返回True
。