使用"和"作为回报

use*_*724 7 python methods return python-2.7

我正在攻读Udacity的Web应用工程课程.我注意到教师在他的验证方法中使用了andoperator in return语句.我不明白如何返回2个参数.我想,它可能像if声明.谁能解释它到底是什么?

这是验证方法:

USER_RE = re.compile(r"^[a-zA-Z0-9_-]{3,20}$")
def valid_username(username):
    return username and USER_RE.match(username)
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Ned*_*der 12

and运营商评估是否在它的两个参数都TRU十岁上下,但在一个稍微令人惊讶的方式:首先,它检查其左参数.如果它是真实的,那么它返回其正确的论点.如果左参数是伪造的,那么它返回左参数.

所以代码中的最后一行:

return username and USER_RE.match(username)
Run Code Online (Sandbox Code Playgroud)

是相同的:

if username:
    return USER_RE.match(username)
else:
    return username
Run Code Online (Sandbox Code Playgroud)

username如果它们不是空的话,那些字符串就很啰嗦.match如果模式匹配,则regex 函数返回truish匹配对象None,如果不匹配,则返回falsish值.

最终结果是,valid_username如果username不是空字符串,并且用户名与给定模式匹配,则返回值.

注意这里的"和"与返回两个值无关,它计算一个值.