Opérateur is en Python

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

L'opérateur is en Python est utilisé pour vérifier si deux variables se réfèrent au même objet en mémoire. Cela est différent de l'opérateur ==, qui vérifie si deux variables ont la même valeur. Dans ce laboratoire, nous allons explorer comment l'opérateur is fonctionne et comment il peut être utile en programmation Python. Il s'agit d'un concept important à comprendre, en particulier lorsqu'on travaille avec des objets mutables comme les listes et les dictionnaires. Dans ce laboratoire, nous allons explorer l'utilisation de l'opérateur is en Python avec des exemples simples et complexes, et voir comment il peut être utilisé pour écrire du code efficace et fiable.

Utilisation de base

Dans cette étape, nous allons commencer par l'utilisation la plus basique de l'opérateur is.

  1. Ouvrez l'interpréteur Python dans le terminal.
python3
  1. Définissez deux variables, a et b, et attribuez la même valeur à chacune d'elles.
a = "Hello"
b = "Hello"
  1. Affichez l'adresse mémoire de a et b à l'aide de la fonction id().
print(id(a))
print(id(b))
  1. Utilisez l'opérateur is pour vérifier si a et b se réfèrent au même objet.
print(a is b)

La sortie du code ci-dessus devrait être True, car a et b se réfèrent au même objet en mémoire.

Objets immuables vs mutables

Dans cette étape, nous allons explorer le comportement de l'opérateur is avec des objets immuables et mutables.

  1. Définissez deux variables, c et d, et attribuez-lui une liste vide [].
c = []
d = []
  1. Affichez l'adresse mémoire de c et d à l'aide de la fonction id().
print(id(c))
print(id(d))
  1. Utilisez l'opérateur is pour vérifier si c et d se réfèrent au même objet.
print(c is d)

La sortie du code ci-dessus devrait être False, car c et d sont des objets mutables et ne sont pas le même objet en mémoire.

  1. Maintenant, définissez deux variables, e et f, et attribuez-lui une valeur entière.
e = 10
f = 10
  1. Affichez l'adresse mémoire de e et f à l'aide de la fonction id().
print(id(e))
print(id(f))
  1. Utilisez l'opérateur is pour vérifier si e et f se réfèrent au même objet.
print(e is f)

La sortie du code ci-dessus devrait être True, car e et f sont des objets immuables et partagent le même objet en mémoire.

Paramètres de fonction

Dans cette étape, nous allons explorer comment l'opérateur is peut être utilisé avec les paramètres de fonction.

  1. Définissez une fonction my_function() qui prend deux paramètres, x et y.
def my_function(x, y):
    print(x is y)
  1. Appelez la fonction my_function() deux fois, une fois avec des objets immuables et une fois avec des objets mutables.
my_function(10, 10)
my_function([], [])

La sortie de la première appel devrait être True et la sortie de la seconde appel devrait être False.

Utilisation avancée

Dans cette étape, nous allons explorer certaines utilisations avancées de l'opérateur is.

  1. Définissez une classe MyClass avec un attribut value.
class MyClass:
    def __init__(self, value):
        self.value = value
  1. Définissez deux instances de la classe MyClass, obj1 et obj2, avec la même value.
obj1 = MyClass("Hello")
obj2 = MyClass("Hello")
  1. Affichez l'adresse mémoire de obj1.value et obj2.value à l'aide de la fonction id().
print(id(obj1.value))
print(id(obj2.value))
  1. Utilisez l'opérateur is pour vérifier si obj1.value et obj2.value se réfèrent au même objet.
print(obj1.value is obj2.value)

La sortie du code ci-dessus devrait être True, car l'attribut value est un objet immuable et les deux instances partagent le même objet en mémoire.

  1. Maintenant, définissez deux instances de la classe MyClass, obj3 et obj4, avec un objet mutable comme leur value.
obj3 = MyClass([])
obj4 = MyClass([])
  1. Affichez l'adresse mémoire de obj3.value et obj4.value à l'aide de la fonction id().
print(id(obj3.value))
print(id(obj4.value))
  1. Utilisez l'opérateur is pour vérifier si obj3.value et obj4.value se réfèrent au même objet.
print(obj3.value is obj4.value)

La sortie du code ci-dessus devrait être False, car l'attribut value est un objet mutable et les deux instances ne partagent pas le même objet en mémoire.

Récapitulatif

Dans ce laboratoire, nous avons appris à connaître l'opérateur is en Python et la manière dont il peut être utilisé pour vérifier si deux variables se réfèrent au même objet en mémoire. Nous avons exploré le comportement de l'opérateur is avec des objets immuables et mutables, des paramètres de fonction et des instances de classe. En comprenant l'opérateur is, nous pouvons écrire du code Python plus efficace et fiable.