带有关键字的返回语句 - 和,或

时间:2015-02-25 10:19:49

标签: python

def myfunc():    #f1
    return 0 or 1

#The above returns 1

def myfunc():    #f2
    return 1 or 0

#The above also returns 1

def myfunc():    #f3
    return 0 or -1

#The above returns -1

def myfunc():    #f4
    return -1 or 1

#The above returns -1

def myfunc():    #f5
    return 1 or -1
#The above returns 1

def myfunc():    #f6
    return 1 and -1
#The above returns 1

f1f2f3返回非零值。但是在f4f5的情况下,它会在return关键字后面立即返回值。但是在f6的情况下,它返回-1。我无法理解这是如何运作的。

感谢您的解释:)

3 个答案:

答案 0 :(得分:3)

or返回第一个值,如果它等于True,否则返回第二个值。

在Python中,任何非0的整数在布尔上下文中都是True。因此,1和-1都是True,如果另一个值为0,则返回。

and正好相反:如果为True,则返回第一个值,否则返回第二个值。

答案 1 :(得分:0)

这可以帮到你:

>>> bool(0)
False
>>> bool(1)
True
>>> bool(-1)
True

请记住真相表:

TRUE OR ANYTHING is TRUE
FALSE AND ANYTHING is FALSE

答案 2 :(得分:0)

这称为短路,即and ornot的工作方式。
您可以在此处查看相关文档:https://docs.python.org/3.4/library/stdtypes.html#boolean-operations-and-or-not

所以在你的函数#f6中,第一个操作数1的计算结果为True,但是有一个and,因此python还必须评估以下-1

如果您直接从文档中了解x and y的定义适用于您的案例1 and -1,则说明:

  

如果1为假,则为1,否则为-1

由于1不是False,您将转到else部分,然后会返回-1
这就是为什么你得到-1作为第六个函数的返回。