В функции фрагмента следующий код f
запускается на выполнение, как и ожидалось:Python - закороток странное поведение
def f():
print('hi')
f() and False
#Output: 'hi'
Но в следующем фрагменте кода подобного a
не увеличивается:
a=0
a+=1 and False
a
#Output: 0
Но если мы короткое замыкание с использованием True вместо False a
приращается:
a=0
a+=1 and True
a
#Output: 1
Как работает короткозамкнутый контур для этого?
Возможно, стоит уточнить, что '' (1 и True) 'оценивается как' True', который является целым числом 1. " –
Действительно. Хороший улов. –
Не должно 'a + = 1 и False' разрешать' a = (a + 1) и False', поскольку оператор '+' имеет [более высокий приоритет] (https://docs.python.org/3/reference/ expression.html # operator-priorityence), тогда все выражение разрешено «a = False»? – Hidden