【发布时间】:2013-06-21 17:23:31
【问题描述】:
我试图更好地理解下面的python代码以及作者为什么在return中使用“AND”语句。
def valid_password(self, password):
PASS_RE = re.compile(r'^.{6,128}$')
return password and PASS_RE.match(password)
进一步的代码...
if not self.valid_password(self.password):
params['error_password'] = "Please enter a valid password."
我尝试检查返回给调用者的结果对象,但我仍然不完全理解它是如何工作的。
似乎这会将密码返回给调用者以及密码是否有效的布尔值,但是我不明白调用函数如何检查对象的布尔值?这是我错过的关于 Python 的基本知识吗?
在这个例子旁边还有另一个类似用法的例子,但是它使用了“或”语句,这对我来说更令人困惑:
def valid_email(self, email):
EMAIL_RE = re.compile(r'^[\S]+@[\S]+\.[\S]+$')
return not email or EMAIL_RE.match(email)
任何关于这里到底发生了什么的建议将不胜感激。该代码可以正常工作并执行您期望它执行的操作,根据正则表达式验证输入并返回 True 或 False,但是我真的很想了解它是这样写的,而不是简单地返回 bool。
【问题讨论】:
-
嘿,伙计,我试图在我的回答中解释用于这些表达式的构建块,基本上是短路评估和 python 真值——它们是任何语言的重要概念。如果您需要更多说明,请告诉我。
标签: python object boolean return