Remarque : les underscores sont la pour respecter la cadrage
Donc python crée une variable locale et ne va pas rechercher dans les variable "globales" la valeur de x donc la recherche ne se fait que dans la portée "locale"
Alors que dans y = x + 1
x fait partie des variables "globales" de la classe bar car cette class a été déclarée à l'intérieur de la fonction et donc cela ne déclenche par d'erreur
Si en plus on demande au langage python de retourner une classe et pas une instance de classe
par curiosité :
deffoo():x=1classbar:y=x+1returnbarprint(foo())
cela retourne :
<class 'main.foo.<locals>.bar'>
Python version 3.11
PS: désolé pour la présentation, je comprends pas pourquoi les backquotes ne me font pas du beau code en python ...
[^] # Re: Et pourtant c'est simple
Posté par Christophe B. (site web personnel) . En réponse au journal Quizz Python : esp[èa]ce de nom. Évalué à 3. Dernière modification le 09 mars 2023 à 19:12.
J'ai répondu un peu trop rapidement ...
Tu as raison d'ailleurs les dernières versions de python sont plus précises
Remarque : les underscores sont la pour respecter la cadrage
Donc python crée une variable locale et ne va pas rechercher dans les variable "globales" la valeur de x donc la recherche ne se fait que dans la portée "locale"
Alors que dans y = x + 1
x fait partie des variables "globales" de la classe bar car cette class a été déclarée à l'intérieur de la fonction et donc cela ne déclenche par d'erreur
Si en plus on demande au langage python de retourner une classe et pas une instance de classe
par curiosité :
cela retourne :
<class 'main.foo.<locals>.bar'>
Python version 3.11
PS: désolé pour la présentation, je comprends pas pourquoi les backquotes ne me font pas du beau code en python ...