python opérateur “ou” comportement bizarre

D'abord, le code:

>>> False or 'hello'
'hello'

Ce comportement étonnant vous permet de vérifier si x != Aucun et vérifier la valeur de x en une seule ligne:

>>> x = 10 if randint(0,2)==1 else None
>>> (x or 0) > 0
depend on x value...

Explication: "ou" fonctionne comme ceci: (lien)
"si x est faux, alors y, d'autre x"

Aucune langue que je sais vous permet de faire cela.
Alors, pourquoi Python?

Voulez-vous dire x or x > 0? Et c'est de court-circuit de l'évaluation -- beaucoup de langues vous permettent de le faire.
Javascript: val || default?
La vraie question est pourquoi ne pas ce sera une fonctionnalité de Python? Pourquoi l'hypothèse être vous ne pouvez pas faire quelque chose? Est ce que cela a des effets négatifs?
x or 0 > 0 ne pas vous laisser dépendent de la x valeur. En fait, il n'a aucun effet. Peut-être que vous avez voulu dire x = x or 0? Mais tout de même, c'est une chose étrange—et il pourrait tout aussi facilement être manipulé dans la ligne ci-dessus en faisant x = 10 if randint(0, 2)==1 else 0 au lieu de else None. Alors... en fait, je n'ai aucune idée de ce que vous souhaitiez.
je veux dire: (Aucun ou 0) < 1 (ce qui est Vrai).

OriginalL'auteur mclafee | 2012-12-13