我正在 Udacity 上学习网络应用工程类(class)。我注意到讲师在他的验证方法中的 return
语句中使用了 and
运算符。而且我不明白如何返回 2 个参数。我认为,它可能类似于 if
语句。谁能解释一下它到底是什么?
验证方法如下:
USER_RE = re.compile(r"^[a-zA-Z0-9_-]{3,20}$")
def valid_username(username):
return username and USER_RE.match(username)
提前致谢。
最佳答案
and
运算符评估它的两个参数是否都是真实的,但以一种有点令人惊讶的方式:首先它检查它的左参数。如果它是真实的,那么它返回它的正确参数。如果左参数为假,则返回左参数。
所以你代码的最后一行:
return username and USER_RE.match(username)
等同于:
if username:
return USER_RE.match(username)
else:
return username
像 username
这样的字符串如果不为空则为真。如果模式匹配,则正则表达式 match
函数返回一个真正的匹配对象,如果不匹配,则返回一个虚假值 None
。
最终结果是,如果用户名不是空字符串且用户名与给定模式匹配,valid_username
将返回一个真值。
注意这里的“and”与返回两个值无关,它是计算一个值。
关于python - 使用 "and"作为返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11604808/