Règles de portée Python : une approche simplifiée
Comprendre les règles de portée Python peut prêter à confusion, en particulier pour les programmeurs intermédiaires. Cet article fournit une explication concise des principes fondamentaux qui régissent la résolution de noms en Python, connus sous le nom de règle LEGB.
Règle LEGB
La règle LEGB dicte l'ordre dans lequel Python recherche un nom de variable :
Dans l'extrait de code donné :
class Foo: def spam(): for code4: x()
L'ordre de recherche LEGB pour la variable x serait :
Fonctions Lambda et portée
Les fonctions Lambda suivent également la règle LEGB. Cependant, accéder aux variables définies dans la portée environnante peut être délicat. Considérez :
y = 10 def outer(): x = 20 foo = lambda: x + y foo() # Error: 'y' is not defined
Dans ce cas, lambda foo ne peut pas accéder à y car il est défini dans l'espace de noms de la fonction englobante, et non dans les espaces de noms globaux ou intégrés. Pour accéder à y, vous devez le déclarer explicitement comme non local dans le lambda :
y = 10 def outer(): x = 20 foo = lambda: nonlocal y + x foo() # Returns 30
Conclusion
La règle LEGB fournit un moyen clair et cohérent de comprendre le nom Python résolution. Il simplifie la portée, permettant aux programmeurs de tracer et de déboguer plus facilement leur code. En comprenant ces règles, les développeurs peuvent éviter en toute confiance les erreurs de portée courantes et garantir que leurs applications Python sont robustes et maintenables.
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!