C'est assez basique mais je codais et commençais à me demander s'il existait un moyen pythonique de vérifier si quelque chose n'existait pas. Voici comment je le fais si c'est vrai:
var = 1
if var:
print 'it exists'
mais quand je vérifie si quelque chose n'existe pas, je fais souvent quelque chose comme ça:
var = 2
if var:
print 'it exists'
else:
print 'nope it does not'
Cela semble être un gaspillage si tout ce qui m'importe, c'est de savoir s'il est possible de vérifier si quelque chose n'existe pas sans rien d'autre.
Style LBYL, "regarde avant de sauter":
var_exists = 'var' in locals() or 'var' in globals()
Style EAFP, "plus facile de demander pardon que permission":
try:
var
except NameError:
var_exists = False
else:
var_exists = True
Préférez le second style (EAFP) lors du codage en Python, car il est généralement plus fiable.
Je pense que vous devez faire attention à votre terminologie, que quelque chose existe et que quelque chose est égal à Faux sont deux choses différentes. En supposant que vous souhaitiez ce dernier, vous pouvez simplement faire:
if not var:
print 'var is False'
Pour les premiers, ce serait le moins élégant:
try:
var
except NameError:
print 'var not defined'
Je vais faire un saut et tenter, cependant, que tout ce qui vous donne envie de vérifier si une variable est définie peut probablement être résolu de manière plus élégante.
Si c'est un dictionnaire, vous pouvez avoir
mydict['ggg'] = '' // doesn't matter if it is empty value or not.
if mydict.has_key('ggg'):
print "OH GEESH"
Cependant, has_key()
est complètement supprimé de Python 3.x, par conséquent, la méthode Python consiste à utiliser in
'ggg' in mydict # this is it!
# True if it exists
# False if it doesn't
Vous pouvez également utiliser in
pour Tuple, list et set.
Bien sûr, si la variable n'a pas été définie, vous devrez lever une exception en mode silencieux (il suffit de lever n'importe quelle exception ... laissez-la passer), si l'exception n'est pas ce que vous voulez voir (ce qui est utile pour de nombreuses applications, il vous suffit de vous connecter à l'exception.)
Il est toujours prudent de définir une variable avant de l’utiliser (vous rencontrerez "affectation avant la référence locale" qui signifie "var n’est pas dans la portée" en clair). Si vous faites quelque chose avec une requête, vous voudrez peut-être avoir un dictionnaire et vérifier si une clé existe ou non, utilisez in
.
Pour vérifier si une var a été définie:
var = 2
try:
varz
except NameError:
print("No varz")
Pour vérifier si c'est non/faux
if varz is None
...ou
if not varz
Qu'en est-il de la négation?
if not var:
print 'nope it does not'
Bien que cela soit pour voir si le var est faux/aucun et exploserait si var n'est pas défini.
Pour voir si var est défini:
try:
var
except NameError:
print 'not defined'
if not var:
#Var is None/False/0/
if var:
#Var is other then 'None/False/0'
en Python si varibale a une valeur quelconque de None/False/0 alors la condition If var
échouera ...
et pour les autres objets, elle appellera la méthode __nonzero__
Pythonic qui peut renvoyer True
ou False
en fonction de ses fonctionnalités.