Если нет x % y: сделайте что-нибудь
У меня есть вопрос о следующем утверждении в Python
if not x % y:
# do something
Увидев это в куске кода и экспериментируя, я обнаружил, что если значение по модулю равно нулю, то он пропустит код "сделать что-то".
Мой вопрос заключается в том, существует ли общее правило о том, если и если нет утверждений с подразумеваемыми условиями, и есть ли какие-либо хорошие ссылки на Python "трюки", подобные этому?
Я прошу прощения за широкий вопрос, но это бросило меня в петлю, когда я впервые увидел его. Я хотел бы научиться как можно большему количеству этих коротких трюков!3 ответа:
None
является ложным.- числа, которые не равны нулю, считаются истинными;
0
- ложными- строки с любым содержанием истинны;
""
ложны- контейнеры с чем-либо в них истинны;
[]
,()
, и{}
(и другие пустые контейнеры) являются ложнымиЭто можно переопределить в ваших собственных типах, определив
__len__()
или__nonzero__()
(Последний называется__bool__()
в Python 3). Вы даже можете определить, например, ноль, который оценивает как правда:class trueint(int): def __nonzero__(self): return True __bool__ = __nonzero__ # Python 3 truezero = trueint(0) if truezero: print("yep, this zero is true!")
Вы, вероятно, не должны этого делать, так как это запутает программистов Python, но Вы могли бы.
В Python нет такого понятия, как "подразумеваемое условие"; есть истинные значения, и есть ложные значения.
Они ложны:
Все остальное должно считаться истинным, пока не доказано обратное.
None
- 0 (или любое число, равное ему)
- пустые последовательности (
''
,u''
,b''
,[]
,()
), отображения ({}
), или множества ({,}
)- объекты, возвращающие false из своего метода
__nonzero__()
Это поведение называется правдивостью в Python: http://www.udacity.com/wiki/CS258%20Truthiness%20in%20Python