Comment accéder aux variables non locales à partir de fonctions imbriquées en Python ?

DDD
Libérer: 2024-10-21 18:38:29
original
835 Les gens l'ont consulté

How to Access Nonlocal Variables from Nested Functions in Python?

Accès aux variables non locales dans les étendues de fonctions imbriquées

En Python, les étendues de fonctions imbriquées donnent accès aux étendues englobantes. Cependant, tenter de modifier une variable dans une portée englobante au sein d'une fonction imbriquée peut entraîner une UnboundLocalError.

Pour résoudre ce problème, vous disposez de plusieurs options :

1. Utilisation du mot-clé 'nonlocal' (Python 3) :

Pour Python 3 et versions ultérieures, le mot-clé nonlocal vous permet de relier des variables non locales dans des fonctions imbriquées.

<code class="python">def outer():
    ctr = 0

    def inner():
        nonlocal ctr
        ctr += 1

    inner()</code>
Copier après la connexion

2. Accès indirect via des listes (Python 2 et 3) :

Dans Python 2 et 3, vous pouvez utiliser une liste pour contenir la variable et l'incrémenter indirectement dans la fonction imbriquée.

<code class="python">ctr = [0]

def inner():
    ctr[0] += 1</code>
Copier après la connexion

3. Utilisation de variables globales (non recommandées) :

Bien que l'utilisation de global puisse permettre l'accès aux variables à partir des étendues englobantes, elle est généralement déconseillée en raison de conflits potentiels et de problèmes de lisibilité du code.

<code class="python">def outer():
    global ctr
    ctr = 0

    def inner():
        ctr += 1</code>
Copier après la connexion

Le choix de la solution appropriée dépend de votre version spécifique de Python et des considérations de conception de votre code.

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
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!