python - 使用 "and"作为返回

标签 python methods python-2.7 return

我正在 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/

相关文章:

python - 如何在python中使用SocketServer获取客户端的Name属性?

java - 无法引用另一个类中的方法

python - 我可以使用 groupby 在 python 中解决这个问题吗?

python - 如何在Django Rest Framework中获取xml格式

python - 来自 python 元组列表的 dask 数据框

python - 如何使用键盘中断Python中的recvfrom()调用?

javascript - 创建对象后向其添加附加函数

Java 用特定字符更改字符串的一部分

python - 如何遍历字典以删除与字符串匹配的值?

python-3.x - 使用Python 3.6.8导入geojson时返回错误