web-dev-qa-db-fra.com

Comment "tester" NoneType en python?

J'ai une méthode qui retourne parfois une valeur NoneType. Alors, comment puis-je interroger une variable qui est un NoneType? J'ai besoin d'utiliserifméthode, par exemple

if not new:
    new = '#'

Je sais que ce n'est pas la bonne façon et j'espère que vous comprenez ce que je voulais dire.

273
CrveniZg

Alors, comment puis-je interroger une variable qui est un NoneType?

Utilisez l'opérateur is, comme ceci

if variable is None:

Pourquoi ça marche?

Puisque None est le seul objet singleton de NoneType en Python, nous pouvons utiliser l'opérateur is pour vérifier si une variable contient ou non None.

Citant de is docs ,

Les opérateurs is et is not testent l'identité de l'objet: x is y est vrai si et seulement si x et y sont le même objet. x is not y renvoie la valeur de vérité inverse.

Puisqu'il ne peut y avoir qu'une seule instance de None, is serait le moyen privilégié de vérifier None.


Écoutez-le de la bouche du cheval

Citations Lignes directrices de Python en matière de style de codage - PEP-008 (définies conjointement par Guido lui-même),

Les comparaisons avec des singletons comme None DOIVENT TOUJOURS ÊTRE EFFECTUÉES AVEC is OU is not, jamais les opérateurs d'égalité.

429
thefourtheye
if variable is None:
   ...

if variable is not None:
   ...
52
elhoucine

Python 2.7:

x = None
isinstance(x, type(None))

ou

isinstance(None, type(None))

==> vrai

1
Pesko

Je ne sais pas si cela répond à la question. Mais je sais que cela m'a pris un certain temps à comprendre. Je parcourais un site Web et tout d'un coup, le nom des auteurs n'y était plus. Donc besoin d'une déclaration de contrôle. 

if type(author) == type(None):
     my if body
else:
    my else body

Author peut être n'importe quelle variable dans ce cas, et None peut être n'importe quel type que vous recherchez.

0
Joshua Pachner

J'espère que cet exemple vous sera utile)

print(type(None) # NoneType

Donc, vous pouvez vérifier le type du nom de la variable

#Example
name = 12 # name = None
if type(name) != type(None):
    print(name)
else:
    print("Can't find name")
0
alexmosk25