Maison >développement back-end >Tutoriel Python >Accès aux variables non locales dans Python 2.x : comment contourner les limitations ?

Accès aux variables non locales dans Python 2.x : comment contourner les limitations ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-22 08:37:30733parcourir

Accessing Nonlocal Variables in Python 2.x: How to Work Around the Limitations?

Accès aux variables non locales dans les fermetures dans Python 2.x

Python 2.x n'a pas le mot-clé nonlocal, ce qui soulève des questions sur l'accès aux variables non locales dans les fermetures. Les fonctions internes peuvent intrinsèquement lire des variables non locales, mais leur liaison n'est pas autorisée.

Solutions de contournement pour accéder aux variables non locales

Malgré cette limitation, vous pouvez utiliser des solutions de contournement :

  • Variables non locales mutables : Les variables non locales peuvent référencer des objets mutables. Les fonctions internes peuvent modifier ces objets, modifiant ainsi indirectement les valeurs des variables non locales.
  • Stockage du dictionnaire : Créez un dictionnaire pour stocker les éléments de données non locaux. Les fonctions internes peuvent accéder à ces éléments et les modifier selon leurs besoins.

Exemple d'utilisation d'un dictionnaire

Considérez l'extrait de code suivant, basé sur l'exemple de Wikipédia :

<code class="python">def outer():
    data = {'y': 0}

    def inner():
        data['y'] += 1
        return data['y']

    return inner

f = outer()
print(f(), f(), f())  # prints 1 2 3</code>

Dans cet exemple, les données du dictionnaire sont utilisées pour stocker la variable non locale y. La fonction interne peut incrémenter la valeur de y et renvoyer la valeur mise à jour sans violer la restriction relative à la reliure des variables non locales.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn