Je n'utilise Python que depuis environ un an maintenant, mais j'ai remarqué que je ne pouvais pas distinguer clairement les opérateurs de comparaison ʻiset
==`. Décrit comme un commandement à moi-même.
ʻIsest l'identité d'objet
==` est l'égalité d'objet
Est. Comme son nom l'indique, Object Identity détermine s'il s'agit du même objet.
D'un autre côté, ==
a la même implémentation que la méthode __eq__
.
Par exemple, il est déterminé si les chaînes de caractères correspondent ou non même entre différents objets.
https://docs.python.org/3/reference/datamodel.html#object.eq
a = 'hoge'
print(a.__eq__('hoge')) # True
a = None
if a == None:
print('Not good')
En revanche, s'il est conforme à PEP8, les suivants seront alertés.
E711 comparison to None should be 'if cond is Nond:'
Cela dit que pour les singletons comme None, l'identité dans Object Identity doit être comparée. Par conséquent, il est souhaitable d'écrire comme suit.
a = None
if a is None:
print('Good')
Cependant, s'il n'est pas nécessaire d'indiquer clairement qu'il s'agit de Aucun, ↓ est Pythonique. (3. J'ai aussi écrit en aparté)
a = None
if not a:
print('Good')
De plus, par exemple, si ʻisest utilisé pour la comparaison de chaînes de caractères comme indiqué ci-dessous, il ne peut pas être évalué correctement. Si vous souhaitez effectuer une comparaison telle que des chaînes correspondantes, vous devez utiliser
==`.
(De plus, dans le cas de la comparaison de chaînes de caractères, vous devez également faire attention à l'unicode ou à str)
a = 'hoghoge'
if a is 'hogehoge':
print('This is not called!')
else:
print('This is called!')
if a:
La clause if est également souvent utilisée en Python.
c'est,
if a is not None:
Contrairement à un,
False
[]
None
''
0
Cela signifie qu'il est différent de tout.
S'il vaut mieux faire une comparaison explicite avec ceux-ci,
ʻSi a n'est pas
Si non,
if a:
D'ACCORD.
Assurez-vous de bien comprendre l'utilisation et d'écrire le code Pythonic correct.
Recommended Posts