Maison  >  Article  >  développement back-end  >  Comment accéder aux variables non locales dans les fermetures en Python 2.x ?

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

Patricia Arquette
Patricia Arquetteoriginal
2024-10-22 08:38:30402parcourir

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

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!

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