Dans de nombreuses ressources, j'ai trouvé que «portée» et «espaces de noms» sont utilisés de manière interchangeable, ce qui semble un peu déroutant car ils signifient des choses différentes.
- La portée définit la région du code où un nom est disponible.
- La règle LEGB définit la façon dont les noms sont recherchés.
- L'espace de noms est un endroit où vous recherchez des noms.
Alors j'ai lu:
- "les noms sont liés à un espace de noms en fonction de l'endroit où ils sont attribués ..." (ce qui, je crois, concerne les portées dans la portée lexicale).
- "les fonctions ajoutent une couche d'espace de noms supplémentaire à vos programmes" [ réf. ] (n'ajoutent-ils pas une portée locale supplémentaire?)
- "tous les noms attribués à l'intérieur d'une définition de fonction sont placés dans la portée locale (l'espace de nom associé à l'appel de fonction)."
- "portée globale - c'est-à-dire un espace de noms dans lequel vivent des variables créées (attribuées) au niveau supérieur du fichier de module."
* toutes les citations proviennent de l'apprentissage de python 5e édition ch17
Les espaces de noms en Python sont-ils la manière dont les étendues sont implémentées? S'agit-il de la même chose? Quelqu'un peut-il m'éclairer?