Comment "tester" NoneType en python?
j'ai une méthode qui renvoie parfois une valeur Non-Type. Alors comment puis-je questionner une variable qui est un non-Type? J'ai besoin d'utiliser le si la méthode, par exemple
if not new:
new = '#'
je sais que c'est la mauvaise voie et j'espère que vous comprenez ce que j'ai voulu dire.
5 réponses
alors comment puis-je remettre en question une variable qui N'est pas un type?
utiliser is
opérateur, comme ceci
if variable is None:
pourquoi cela fonctionne-t-il?
depuis None
est le seul objet singleton de NoneType
en Python, nous pouvons utiliser is
opérateur pour vérifier si une variable a None
en elle ou pas.
citant de is
docs ,
Les opérateurs
is
etis not
test de l'identité de l'objet:x is y
est vrai si et seulement six
ety
sont le même objet.x is not y
donne la valeur de vérité inverse.
Puisqu'il ne peut y avoir qu'une seule instance de None
, is
serait le moyen préféré pour cochez la case None
.
entendre de la bouche du cheval
citant Python's Coding Style Guidelines - PEP-008 (conjointement défini par Guido lui-même),
les comparaisons avec des lettres uniques comme
None
doivent toujours être faites avecis
ouis not
, jamais l'égalité les opérateurs .
if variable is None:
print 'Is None'
--
if variable is not None:
print 'Isn\'t None'
Il peut également être fait avec isinstance
que par Alex Hall réponse :
>>> NoneType = type(None)
>>> x = None
>>> type(x) == NoneType
True
>>> isinstance(x, NoneType)
True
isinstance
est aussi intuitif, mais il y a la complication qu'il nécessite la ligne
NoneType = type(None)
qui n'est pas nécessaire pour les types comme int
et float
.
la façon la plus simple cependant, sans la ligne supplémentaire en plus de cardamome réponse est probablement:
isinstance(x, type(None))
alors comment puis-je questionner une variable qui N'est pas un type? J'ai besoin de l'utiliser si la méthode
utilisant isinstance()
ne nécessite pas un is
dans le if
- déclaration:
if isinstance(x, type(None)):
#do stuff
informations supplémentaires
Vous pouvez également vérifier la présence de plusieurs types dans une seule déclaration isinstance()
, comme indiqué dans la documentation "1519260920 . Il suffit d'écrire les types comme un tuple.
isinstance(x, (type(None), bytes))
Python 2.7 :
x = None
isinstance(x, type(None))
ou
isinstance(None, type(None))
= = > True