2013-10-02 2 views
-1

Почему следующее выражение возвращает ошибку вместо False. Следуя документации http://docs.python.org/2/reference/expressions.html#boolean-operations, выражение должно возвращать False на основе первого аргумента.Python: & operator не возвращается False, основанный на первом аргументе

blubb = None 
print (False & (len(blubb[u'blubb2']) > 0)) 
+0

Возможно, вы имели в виду 'print (False и (len (blubb [u'blubb2 '])> 0))'? –

+0

Прости, да. Но почему тогда питон не запускает синтаксическую ошибку? – Andy

+1

Поскольку '&' является оператором побитового 'AND'. Он сравнивает бит значений с обеих сторон и возвращает значение, имеющее конкретный бит, равный '1', если оба значения имеют бит в этой позиции, равный« 1 »,« 0 »в противном случае. –

ответ

4

& оператор побитового и: он вычисляет оба операнда. Используйте оператору and для логических и, что короткие замыкания (т. Е. Прекращают оценивать, как только операнд неверен).

Смежные вопросы