


Introduction
Comprendre les espaces de noms, les lunettes et le comportement des variables dans les fonctions Python est crucial pour écrire efficacement et éviter les erreurs ou exceptions d'exécution. Dans cet article, nous nous plongerons dans divers aspects des espaces de noms et des étendues de variables Python et apprendrons comment Python gère en détail les variables locales, globales et enfermées.
Nous avons déjà discuté des fonctions Python en détail, qui peuvent être trouvés. Python utilise des principes d'abstraction pour masquer la logique complexe et exposer uniquement les sorties nécessaires, tandis que la décomposition crée des fonctions modulaires, lisibles et réutilisables.
Ces principes sont suffisamment évidents pour comprendre comment Python gère ses lunettes variables pour une définition de fonction et des fonctions imbriquées, que nous explorerons à travers des exemples détaillés. À la fin de cet article, vous devez clairement comprendre ces concepts et comment les appliquer efficacement dans vos programmes.
Aperçu
- Les espaces de noms de Python et les lunettes variables sont cruciaux pour le codage et la prévention des erreurs efficaces.
- L'article explore le comportement des variables locales, globales et entourées dans Python.
- La règle LEGB décrit la recherche de nom de variable de Python dans différentes lunettes.
- Les exemples pratiques démontrent une utilisation et une modification des variables globales et locales.
- Les fonctions imbriquées et la portée entourée sont couvertes, mettant l'accent sur le mot-clé non local.
Table des matières
- Quelles sont les variables de Python?
- Variables globales
- Variables locales
- Quels sont les espaces de noms?
- Quelles sont les lunettes variables dans Python?
- Quelle est la règle LEGB?
- Comment la portée variable de Python?
- 1. Utilisation de la variable globale dans la portée locale
- 2.Utilisation de la variable locale dans la portée locale
- 3. Modification de la variable globale à l'intérieur de la portée locale
- 4. Modification de la variable globale à l'intérieur de la portée locale en utilisant la déclaration
- 5. Modification des variables globales de portée locale à l'aide de la fonction
- Quelles sont les fonctions imbriquées?
- Qu'est-ce qu'une portée entourée d'une variable?
- 7. Modification de la variable globale à l'intérieur de la portée entourée sans déclaration
- 8. Modification de la variable imbriquée à l'intérieur de la portée locale en utilisant la déclaration
- Questions fréquemment posées
Quelles sont les variables de Python?
Les variables de Python sont des conteneurs qui stockent des données ou des valeurs (telles que int, float, str, bool, etc.). L'emplacement de la mémoire où une variable est stockée et également accessible pour une utilisation future est appelée l'opportunité d'une variable.
Il existe deux types de variables dans Python, à savoir:
Variables globales
- Ces variables relèvent de la portée du programme principal.
- Le programme principal ne peut pas utiliser la variable locale, car elle n'est disponible que pour la fonction.
Variables locales
- Ces variables relèvent de la portée de la fonction.
- De plus, la variable locale peut utiliser la variable globale à l'intérieur de la fonction lorsque la variable locale n'est pas définie à l'intérieur de la portée locale.
Lire aussi: Mutable vs objets immuables dans Python
Quels sont les espaces de noms?
L'espace de noms Python est aspace ou dictionnaire qui contient des identificateurs (communément appelés noms de variables) comme ses clés et leurs objets respectifs comme valeurs dans l'espace mémoire. Le langage de programmation Python a 4 types d'espaces de noms, à savoir:
- Espace de noms intégré
- Espace de noms global
- Entraîneur d'espace de noms
- Espace de noms local
Nous allons bientôt examiner différents exemples pour mieux comprendre ce concept. Mais avant cela, il est vraiment important de comprendre les étendues variables mentionnées ci-dessus.
Quelles sont les lunettes variables dans Python?
Dans Python, la portée se réfère à la zone ou à la région textuelle d'un programme où les variables sont directement accessibles. À tout moment pendant l'exécution, il y a:
- Portée locale : il s'agit de la portée la plus intérieure définie à l'intérieur d'une fonction. Pour cette portée, Python recherche la variable locale.
- Portée entourée : ce sont les portées des fonctions imbriquées. Ils contiennent des variables non locales qui ne sont ni locales ni globales.
- Portée globale : cette portée contient les variables définies au niveau du module et est accessible dans tout le module.
Remarque: vous créez ces lunettes définies par l'utilisateur dans votre programme pour l'exécuter efficacement. Cependant, les variables intégrées de Python ont également une portée connue sous le nom de portée intégrée.
- Portée intégrée : il s'agit de la portée de tous les mots clés ou méthodes prédéfinis que Python propose pour écrire de meilleurs codes. Par conséquent, ceux-ci sont disponibles dès que l'interprète Python commence. Notez également que ces lunettes ne sont jamais supprimées et sont accessibles dans tout le module.
Quelle est la règle LEGB?
Maintenant, vous avez une compréhension de base des espaces de noms et de la portée variable. Plongeons plus profondément pour comprendre comment les règles de portée sont appliquées dans le langage de programmation Python. Il y a une abréviation commune, la règle LEGB, qui stimule, entourant, global et constructeur.
La règle LEGB indique que l'interprète peut rechercher un identifiant de l'intérieur, ce qui signifie qu'il commence par la recherche d'un nom de variable ou d'un espace de noms dans la portée locale . Si l'espace de noms n'y est pas présent, il se déplacera vers la portée entourée de votre programme. Ext, il vérifie la portée globale pour trouver l'espace de noms. Enfin, si l'identifiant n'est toujours pas trouvé, l'interprète examine la portée intégrée fournie par Python.
De plus, si l'interprète ne trouve le nom dans aucun de ces emplacements, Python soulève une exception de NameError ' , ce qui signifie que la variable n'est pas définie dans le programme.
En outre, il est vraiment important de se rappeler que vous devrez vous déplacer vers le haut dans la hiérarchie de la règle LEGB de la portée actuelle .
Lire aussi: Guide complet de la programmation avancée Python
Comment la portée variable de Python?
Maintenant, allons un par un à travers tous ces exemples pour comprendre tous ces concepts en profondeur:
1. Utilisation de la variable globale dans la portée locale
Pour comprendre cela, prenons un exemple, ici la fonction « G (y) » imprime non seulement la variable globale « x » mais la modifie également comme « x 1 ».
Maintenant, puisque «x » n'est pas défini dans ` g (y)» , Python récupère la valeur de la variable globale ` x ».
Def g (y): Imprimer (x) Imprimer (x 1) # Puisque X n'est pas dans la portée locale, il ira et récupérera la valeur de x de la variable globale x = 1 G (x) # Global Inside Inside Variable local Imprimer (x) # variable globale
Sortir
1<br><br> 2<br><br> 1
La sortie montre la valeur de «x » et « x 1 » confirmant que la variable globale » x » reste inchangée, mais a été utilisée par la portée locale pour qu'il puisse sortir correctement les résultats.
2.Utilisation de la variable locale dans la portée locale
Maintenant, regardez cet exemple, nous avons ici une définition de fonction ` g (y) ` et à l'intérieur ci-dessous, la fonction donnée ` g` , le nom ` x` est défini comme une variable locale et également modifiée.
Def g (y): x = 10 # Variable locale x = 1 Imprimer (x) x = 1 # variable globale g (x) Imprimer (x)
Sortir
11<br><br> 1
Comme preuve, le « X » global reste inchangé, et la variable locale a utilisé sa variable de portée locale pour imprimer les instructions montrant 11 en tant que sortie via la fonction et 1 sortie par la portée globale, comme prévu.
Lire aussi: Guide complet des structures de données intégrées Python
3. Modification de la variable globale à l'intérieur de la portée locale
Mais est-il possible de modifier la variable globale x `sans le déclarer comme« global »?
La réponse est non! Vous ne pouvez pas modifier aucune valeur de variable globale à partir de la portée locale, car cela entraînera une erreur.
Def h (y): # La fonction peut utiliser la variable globale, si elle n'en a pas x = 10 # mais ne peut pas modifier la valeur globale à l'intérieur de la variable locale x = 1 H (x) Imprimer (x)
Sortir
Unboundlocalerror Traceback (dernier appel dernier)<br><br> <ipython-int-3-130c677cc9ab> dans <lign cellulaire:> ()<br><br> 3<br><br> 4 x = 1<br><br> ----> 5 h (x)<br><br> 6 Imprimer (x)<br><br> <ipython-int-3-130c677cc9ab> en h (y)<br><br> 1def h (y):<br><br> ----> 2 x = 10<br><br> 3<br><br> 4 x = 1<br><br> 5 h (x)</ipython-int-3-130c677cc9ab></lign></ipython-int-3-130c677cc9ab>
Unboundlocalerror: variable locale X `référencée avant l'attribution
Il en résulte un « Unboundlocalerror » parce que Python traite «x » comme une variable locale en raison de l'opération d'attribution, mais il n'a pas été initialisé localement. De plus, bien que les variables locales puissent accéder aux variables globales, vous ne pouvez pas apporter de modifications à la variable globale (vous ne pouvez lire, pas écrire).
Lire aussi: Fondamentaux de la programmation Python pour les débutants
4. Modification de la variable globale à l'intérieur de la portée locale en utilisant la déclaration
Mais comme je vous ai toujours dit que Python est en fait un langage doux et même s'il n'est pas recommandé de modifier ou de modifier la variable globale. Cela ne signifie pas que Python ne vous donne pas cette fonctionnalité, car en déclarant `x` en tant que« global »en utilisant le même mot-clé, la fonction peut modifier la variable globale` x ».
Def h (y): Global X # Maintenant, il peut modifier la valeur globale à l'intérieur de la variable locale # Mais ce n'est pas un bon moyen de codage, vous devez vous concentrer sur la réduction de cette utilisation globale des mots clés x = 10 x = 1 H (x) Imprimer (x)
Sortir
11
La sortie confirme que «x » a été mise à jour à l'échelle mondiale. Cependant, n'oubliez pas que les modifications affecteront l'ensemble du programme, car la modification de la fonction principale affectera également d'autres fonctions, ce qui n'est pas une bonne pratique de programmation.
5. Modification des variables globales de portée locale à l'aide de la fonction
En outre, vous pouvez modifier la variable globale à l'intérieur de la fonction ` g (x)` en incrément` x `par 10. Il imprimera la nouvelle valeur et la renvoie.
Remarque : Cela ne signifie pas que vous modifiez la variable globale elle-même, car elle, de toute façon, n'est pas possible sans le mot-clé «global» .
Def g (x): x = 10 print ("en f (x): x =", x) Retour x # Retour F (x) x = 2 z = g (x) print ("Dans la portée du programme principal: z =", z) print ("Dans la portée du programme principal: x =", x)
Sortir
en f (x): x = 12<br><br> Dans la portée du programme principal: z = 12<br><br> Dans la portée du programme principal: x = 2
Ici, le Global «X » reste inchangé, tandis que la valeur renvoyée « z » est la nouvelle valeur mise à jour.
Quelles sont les fonctions imbriquées?
Les fonctions définies dans une autre fonction ` def 'sont appelées fonctions imbriquées ou fonctions intérieures .
Voici un exemple pour une fonction imbriquée pour une meilleure compréhension:
def f (): def g (): Imprimer ("Inside Fonction G") g () Imprimer ("Fonction intérieure F") f ()
Sortir
Fonction intérieure g<br><br> Fonction intérieure f
Remarque : La fonction imbriquée ` g` est appelée dans la fonction ` f` , imprimant les messages des deux fonctions. L'appel de la fonction « G » en dehors du « F » WillResults dans une erreur, car « G » n'est pas défini dans la portée globale.
g () # Cette fonction n'est pas définie en dehors de la fonction f
Sortir
TypeError Traceback (dernier appel dernier)<br><br> <ipython-int-8-5fd69ddb5074> dans <lign cellulaire:> ()<br><br> ----> 1 g ()<br><br> TypeError: g () manquant 1 argument de position requis: 'x'</lign></ipython-int-8-5fd69ddb5074>
Qu'est-ce qu'une portée entourée d'une variable?
Python offre une portée variable différente et spéciale aux noms uniquement définis à l'intérieur de la fonction imbriquée, appelée portée entourée . Il est également connu sous le nom de portée « non locale ». La portée entourée est la portée de la fonction extérieure lorsqu'il existe une fonction locale, qui est une fonction intérieure ou imbriquée.
def f (): x = 1 def g (): Imprimer ("Inside Fonction G") Imprimer (x) g () Imprimer ("Fonction intérieure F") f ()
Cette variable `x` est présente à l'intérieur de la portée d'encluse, que vous pouvez également utiliser dans la portée locale, comme indiqué dans l'exemple ci-dessus. Voici sa sortie:
Sortir
Fonction intérieure g<br><br> 1<br><br> Fonction intérieure f
Maintenant, allons de l'avant et comprenons mieux cette nouvelle portée.
7. Modification de la variable globale à l'intérieur de la portée entourée sans déclaration
Encore une fois, la modification de la variable globale ` x 'à l'intérieur de la fonction imbriquée est impossible .
Def g (x): def h (): x = 1 print ('en h (x): x =', x) x = x 1 print ('en g (x): x =', x) H (x) retour x x = 3 z = g (x) print ('Dans la portée du programme principal: x =', x) print ('Dans la portée du programme principal: z =', z)
Sortir
en g (x): x = 4<br><br> ---------------------------------------------------------------------------<br> TypeError Traceback (dernier appel dernier)<br><br> <ipython-input-12-5bcfb2edb396> dans <lign cellulaire:> ()<br><br> 9<br><br> 10 x = 3<br><br> ---> 11 z = g (x)<br><br> 12 Print ('Dans la portée du programme principal: x =', x)<br><br> 13 Print ('Dans la portée du programme principal: z =', z)<br><br> <ipython-input-12-5bcfb2edb396> en g (x)<br><br> 5 x = x 1<br><br> 6 Imprimer ('en g (x): x =', x)<br><br> ----> 7 h (x)<br><br> 8 retour x<br><br> 9<br><br> TypeError: G</ipython-input-12-5bcfb2edb396></lign></ipython-input-12-5bcfb2edb396>
Comme la fonction « h () » est définie sans aucun paramètre, mais `h (x)» est appelé avec un argument. Cela donnera un `TypeError '. Aussi, bien que la variable entourée puisse accéder à la variable globale, vous ne pouvez pas effectuer de modifications dans la variable globale.
8. Modification de la variable imbriquée à l'intérieur de la portée locale en utilisant la déclaration
Semblable, à ce que le mot clé `` global '', Python offre à ses développeurs un mot-clé `` non local ». Cela permet à la fonction imbriquée de « h » de modifier la variable «x » définie dans la fonction d'enclosage « g ».
Def g (x): def h (): non local x # tel h () d'utiliser x de g (x) x = 1 print ('en h (x): x =', x) x = x 1 print ('en g (x): x =', x) h () # appelez h () sans aucun argument retour x x = 3 z = g (x) print ('Dans la portée du programme principal: x =', x) print ('Dans la portée du programme principal: z =', z)
Sortir
en g (x): x = 4<br><br> en h (x): x = 5<br><br> Dans la portée du programme principal: x = 3<br><br> Dans la portée du programme principal: z = 5
Les sorties montrent les modifications apportées dans les deux fonctions et que la variable globale « x » reste inchangée.
Enfin, notez que selon où les portées sont définies, chaque portée correspond à différents niveaux d'accès tout au long du programme et aura des durées de vie différentes pour l'espace de noms dans le code.
Lire aussi: un tutoriel Python complet pour apprendre la science des données à partir de zéro
Conclusion
Cet article a exploré comment Python gère les variables locales et globales et les fonctions imbriquées. Nous avons appris qu'un espace de noms est un dictionnaire que Python offre aux développeurs, à partir de laquelle vous pouvez trouver un nom de variable et sa valeur stockée dans la portée de la mémoire Python. De plus, les étendues sont de quatre types: local, enfermé, mondial et intégré.
Ceux-ci sont vraiment utiles pour éviter les conflits de nommage et pour garder une trace des noms / identificateurs se réfèrent aux objets dans les différentes parties du programme.
De plus, si vous souhaitez modifier une variable dans la portée globale de la portée locale, vous pouvez utiliser le mot-clé « global ». De même, vous pouvez utiliser le mot-clé «non local» pour fermer la portée.
- Portée locale : variables créées à l'intérieur d'une fonction, accessibles uniquement dans cette fonction, et supprimée lorsque la fonction revient ou toute exception est élevée, c'est-à-dire non gérée lors de l'écriture de la fonction.
- Encluse ou portée non locale : variables créées dans la fonction extérieure des fonctions imbriquées, accessibles à la fonction interne.
- Portée globale : variables créées dans le programme ` __main__ ', accessible tout au long du programme et dure jusqu'à la fin de l'interpréteur.
J'espère que cela vous a aidé à obtenir un aperçu de la rédaction de bons codes de niveau de production tout en suivant les meilleures pratiques liées à l'industrie et en réduisant les exceptions définies par les développeurs. Cependant, c'est la première étape vers la rendez-vous plus robuste notre programme, et nous avons beaucoup plus à couvrir.
Alors, restez à l'écoute pour le prochain article, où nous discuterons de la sérialisation des fichiers et de la désérialisation dans le langage de programmation Python!
Questions fréquemment posées
Q1. Quel est l'espace de noms dans Python?Ans. Les espaces de noms dans Python organisent et gérent les noms ou les identifiants dans un programme. Fondamentalement, ils agissent comme des conteneurs ou des dictionnaires qui stockent les noms mappés à leurs objets, tels que des variables et des fonctions.
Q2. Quelle est la règle LEGB à Python? Ans. La règle LEGB dans Python est l'ordre dans lequel un interprète Python regarde tout en travaillant avec les noms ou communément appelés identifiants. Il signifie local, enfermant, mondial et intégré:
1. Local : noms définis dans une fonction.
2. Enclosant : noms dans la portée locale de toute fonction de fermer (fonction imbriquée).
3. Global : Noms définis au niveau supérieur d'un script ou d'un module.
Intégré : des noms prédéfinis dans Python, tels que « imprimer » ou « len ».
Ans. Le mot clé global permet à une fonction de modifier une variable définie dans la portée globale et permet aux variables de résider en dehors de l'opération. Remarque: Ce n'est pas parce que vous pouvez le faire que vous devez l'utiliser (souvent), car ce n'est pas une bonne pratique de programmation.
Q4. Pourquoi est-il recommandé de minimiser l'utilisation des variables globales?Ans. La surutilisation des variables mondiales peut conduire à des programmes difficiles à comprendre et à entretenir. Cela peut également provoquer des changements involontaires, ce qui rend le débogage plus difficile. Il est généralement préférable d'utiliser des variables locales et de les passer au besoin.
Q5. À quoi sert le mot-clé «non local» dans les fonctions imbriquées?Ans. Semblable aux mots clés globaux, Python propose des mots clés «non locaux» pour modifier les variables entorantes. Les mots clés non locaux peuvent modifier les variables définies dans la fonction entourée d'une fonction imbriquée, fournissant un moyen de contrôler la portée variable dans les fonctions imbriquées.
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!

Hé là, codant ninja! Quelles tâches liées au codage avez-vous prévues pour la journée? Avant de plonger plus loin dans ce blog, je veux que vous réfléchissiez à tous vos malheurs liés au codage - les énumérez. Fait? - Let & # 8217

AI augmentant la préparation des aliments Bien qu'ils soient encore dans une utilisation naissante, les systèmes d'IA sont de plus en plus utilisés dans la préparation des aliments. Les robots dirigés AI sont utilisés dans les cuisines pour automatiser

Introduction Comprendre les espaces de noms, les lunettes et le comportement des variables dans les fonctions Python est crucial pour écrire efficacement et éviter les erreurs ou exceptions d'exécution. Dans cet article, nous plongerons dans divers ASP

Introduction Imaginez vous promener dans une galerie d'art, entourée de peintures et de sculptures vives. Maintenant, que se passe-t-il si vous pouviez poser une question à chaque pièce et obtenir une réponse significative? Vous pourriez demander: «Quelle histoire racontez-vous?

Poursuivant la cadence du produit, MediaTek ce mois-ci a fait une série d'annonces, notamment le nouveau Kompanio Ultra et Dimensity 9400. Ces produits remplissent les parties les plus traditionnelles des activités de MediaTek, qui comprennent des puces pour smartphone

# 1 Google a lancé agent2agent L'histoire: c'est lundi matin. En tant que recruteur propulsé par l'IA, vous travaillez plus intelligemment, pas plus difficile. Vous vous connectez au tableau de bord de votre entreprise sur votre téléphone. Il vous indique que trois rôles critiques ont été achetés, vérifiés et programmés pour

Je suppose que vous devez l'être. Nous semblons tous savoir que Psychobabble se compose d'un bavardage assorti qui mélange diverses terminologies psychologiques et finit souvent par être incompréhensibles ou complètement absurdes. Tout ce que vous avez à faire pour cracher

Selon une nouvelle étude publiée cette semaine. Pendant ce temps, le plastique continue de s'accumuler dans les décharges et les écosystèmes - dans le monde. Mais l'aide est en route. Une équipe d'angle


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

PhpStorm version Mac
Le dernier (2018.2.1) outil de développement intégré PHP professionnel

SublimeText3 version chinoise
Version chinoise, très simple à utiliser