我在Python 3.9(f(x, y, z) = (x and y) or (not x and z)
(中制作了一个非常简单的函数,用于打印此操作的结果。让我感到奇怪的是,在某些情况下,它会打印0,而在其他情况下,则会打印False。例如,f(0, 1, 0)
打印0,而f(1, 0, 1)
打印False。为什么?
and
如果第一个值为false,则返回第一个值,否则返回第二个值。如果第一个值是真的,or
返回第一个值,否则返回第二个值。因此,and
和or
不会改变类型。然而,not
将始终转换为具有相反真性的布尔值。因此,not 1
变成False
,False and z
变成False
,如果x and y
不是真的,则表达式将计算为False
。这就是为什么您可以获得不同的数据类型。