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
isetis nottest de l'identité de l'objet:x is yest vrai si et seulement sixetysont le même objet.x is not ydonne 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
Nonedoivent toujours être faites avecisouis 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