Maison  >  Article  >  développement back-end  >  Comment contourner l'absence du mot-clé non local dans les fermetures Python 2.x ?

Comment contourner l'absence du mot-clé non local dans les fermetures Python 2.x ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-22 08:35:30853parcourir

How to Workaround the Absence of the nonlocal Keyword in Python 2.x Closures?

Mot-clé non local dans Python 2.x : une solution de contournement pour l'implémentation de la fermeture

Dans Python 2.6, le mot-clé nonlocal, qui permet aux fonctions imbriquées dans d'autres fonctions (fermetures) pour modifier les variables définies dans la fonction englobante, n'est pas disponible.

Surmonter l'absence de non local :

Pour accéder aux variables non locales dans les fermetures en Python 2 .x, une solution de contournement est nécessaire. Au lieu d'utiliser le mot-clé nonlocal, les développeurs peuvent créer un dictionnaire pour stocker les données requises.

Les fonctions internes peuvent accéder à ce dictionnaire et modifier son contenu. Ce faisant, ils interagissent efficacement avec la variable non locale représentée par le dictionnaire.

Exemple :

Considérez le code suivant qui tente d'implémenter une fermeture dans Python 2.6 en utilisant le mot-clé nonlocal :

<code class="python">def outer():
    x = 0
    def inner():
        nonlocal x
        x += 1
        return x
    return inner</code>

Ce code entraînera une erreur car le mot-clé nonlocal n'est pas reconnu dans Python 2.6.

Pour implémenter cette fermeture en utilisant la solution de contournement, nous pouvons modifier le code comme suit :

<code class="python">def outer():
    data = {'x': 0}
    def inner():
        data['x'] += 1
        return data['x']
    return inner</code>

Dans ce cas, le dictionnaire de données stocke la valeur de x et la fonction interne modifie son contenu. Cela permet à la fermeture d'interagir avec la variable non locale x.

En utilisant cette solution de contournement, les développeurs peuvent accéder et modifier les variables non locales dans les fermetures Python 2.x, leur permettant d'implémenter un code plus complexe et flexible.

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