Booléens Python - si x :, vs si x == Vrai, vs si x est Vrai

Excuses si cela a été demandé avant, mais j'ai cherché en vain une réponse à ma exacte question. En fait, avec Python 2.7, j'ai un programme en cours d'exécution d'une série d'outils de géotraitement, dépendait de ce qui est reqested via une série de Vrai/Faux les variables que l'utilisateur ajuste dans le script par exemple

x = True

if x:
    run function

Cependant, j'ai maintenant découvert que x n'a pas besoin d'être littéralement "Vrai" pour la fonction à exécuter. Par exemple:

In: x = True
    if x:
        print True

Out: True

In: x = 123
    if x:
        print True

Out: True

In: x = 'False'
    if x:
        print True

Out: True

In: x = False
    if x:
        print True

Out: 

De sorte que toute valeur autre que la valeur False semble avoir la valeur True, ce qui ne serait pas le cas si x == True ou si x est Vrai. Voyant que la PEP 8 recommande vivement uniquement à l'aide de la si x: variante, quelqu'un peut-il expliquer pourquoi ce comportement se produit? Il semble que, si x est plus un test de "si x n'est pas Faux" ou "si x existe". Avec cela à l'esprit, je crois que je dois utiliser si x est Vrai: dans ce cas, en dépit de ce que PEP 8 a à dire.

Salutations

source d'informationauteur ssast