Comment accéder aux variables non locales dans les fermetures en Python 2.x ?

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

How can Nonlocal Variables be Accessed in Closures in Python 2.x?

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

Dans Python 2.x, le mot-clé nonlocal, utilisé pour accéder et relier non local variables dans les fermetures, n'est pas disponible. Cependant, les fonctions internes peuvent toujours lire des variables non locales, bien qu'avec des limitations.

Pour contourner l'absence de mot-clé non local, on peut utiliser un dictionnaire pour stocker les données. Les fonctions internes peuvent alors accéder et modifier les objets stockés dans le dictionnaire, même si elles ne peuvent pas directement relier elles-mêmes les variables non locales.

Considérons l'exemple suivant :

def outer():
    d = {'y' : 0}
    def inner():
        d['y'] += 1
        return d['y']
    return inner

f = outer()
print(f(), f(), f()) #prints 1 2 3
Copier après la connexion

Ici, la fonction externe crée un dictionnaire 'd' et lui attribue une valeur pour 'y'. La fonction interne peut accéder et incrémenter « y » stocké dans le dictionnaire. Le résultat est que chaque invocation de 'f()' renvoie une valeur incrémentée, démontrant que les fonctions internes peuvent modifier indirectement les objets non locaux.

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!