Python - évaluation logique de commande dans l'instruction “if”

En Python on peut faire ceci:

if True or blah:
    print("it's ok") # will be executed

if blah or True: # will raise a NameError
    print("it's not ok")

class Blah:
    pass
blah = Blah()

if blah or blah.notexist:
    print("it's ok") # also will be executed
  • Quelqu'un peut-il m'indiquer la documentation sur cette fonctionnalité?
  • Est-il un détail de l'implémentation ou la fonctionnalité de la langue?
  • Est-il bon style de codage pour exploiter cette fonctionnalité?
Le blah or True on n'a pas de soulever une exception pour moi, il s'imprime.
C'est peut-être une chance?
uniquement si vous définissez blah premier. Notez que blah est ce n'est pas encore défini en haut de l'exemple, donc un NameError est élevé.

OriginalL'auteur Gill Bates | 2013-04-17