Supposons que j'ai le code python suivant :
def outer():
string = ""
def inner():
string = "String was changed by a nested function!"
inner()
return string
Je veux qu'un appel à external() renvoie "La chaîne a été modifiée par une fonction imbriquée!", mais j'obtiens "". J'en conclus que Python pense que la ligne string = "string was changed by a nested function!"
est une déclaration d'une nouvelle variable locale à inner(). Ma question est : comment dire à Python qu'il doit utiliser la chaîne external() ? Je ne peux pas utiliser le global
, car la chaîne n'est pas globale, elle vit simplement dans une portée externe. Des idées ?