Поиск…


а также

Оценивает второй аргумент тогда и только тогда, когда оба аргумента являются правдивыми. В противном случае вычисляется первый аргумент false.

x = True
y = True
z = x and y # z = True

x = True
y = False
z = x and y # z = False

x = False
y = True
z = x and y # z = False

x = False
y = False
z = x and y # z = False

x = 1
y = 1
z = x and y # z = y, so z = 1, see `and` and `or` are not guaranteed to be a boolean

x = 0
y = 1
z = x and y # z = x, so z = 0 (see above)

x = 1
y = 0
z = x and y # z = y, so z = 0 (see above)

x = 0
y = 0
z = x and y # z = x, so z = 0 (see above)

1 в приведенном выше примере можно изменить на любое правдоподобное значение, а 0 можно изменить на любое значение false.

или же

Оценивает первый аргумент правды, если один из аргументов правдив. Если оба аргумента ложны, вычисляется второй аргумент.

x = True
y = True
z = x or y # z = True

x = True
y = False
z = x or y # z = True

x = False
y = True
z = x or y # z = True

x = False
y = False
z = x or y # z = False

x = 1
y = 1
z = x or y # z = x, so z = 1, see `and` and `or` are not guaranteed to be a boolean

x = 1
y = 0
z = x or y # z = x, so z = 1 (see above)

x = 0
y = 1
z = x or y # z = y, so z = 1 (see above)

x = 0
y = 0
z = x or y # z = y, so z = 0 (see above)

1 в приведенном выше примере можно изменить на любое правдоподобное значение, а 0 можно изменить на любое значение false.

не

Он возвращает противоположность следующего утверждения:

x = True
y = not x # y = False

x = False
y = not x # y = True

Оценка короткого замыкания

Python минимально оценивает булевы выражения.

>>> def true_func():
...     print("true_func()")
...     return True
... 
>>> def false_func():
...     print("false_func()")
...     return False
... 
>>> true_func() or false_func()
true_func()
True
>>> false_func() or true_func()
false_func()
true_func()
True
>>> true_func() and false_func()
true_func()
false_func()
False
>>> false_func() and false_func()
false_func()
False

`and` и` or` не гарантированно возвращают логическое

Когда вы используете or , он либо вернет первое значение в выражении, если оно истинно, иначе оно будет вслепую возвращать второе значение. То есть or эквивалентно:

def or_(a, b):
    if a:
        return a
    else:
        return b

Для and , оно вернет свое первое значение, если оно ложно, иначе оно вернет последнее значение:

def and_(a, b):
    if not a:
        return a
    else:
        return b

Простой пример

В Python вы можете сравнить один элемент, используя два бинарных оператора: один с обеих сторон:

if 3.14 < x < 3.142:
    print("x is near pi")

На многих языках (в большинстве?) Это будет оцениваться способом, противоречащим обычной математике: (3.14 < x) < 3.142 , но в Python он рассматривается как 3.14 < x and x < 3.142 , как и большинство не-программистов ожидал бы.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow