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

Patricia Arquette
Libérer: 2024-10-22 08:37:30
original
648 Les gens l'ont consulté

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!