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

Linda Hamilton
Libérer: 2024-10-22 08:35:30
original
852 Les gens l'ont consulté

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

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

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!

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!