Affectation dynamique de variables en Python
En Python, il n'est pas possible de définir dynamiquement directement des variables locales. Alors que d'autres réponses suggèrent de modifier la fonction locals(), cette approche n'est pas fiable et peut ne pas toujours fonctionner, en particulier au sein des fonctions.
Alternatives pour l'affectation dynamique des variables
Au lieu de cela, il existe des méthodes alternatives pour attribuer dynamiquement des variables :
d = {} d['xyz'] = 42 print(d['xyz']) # Output: 42
class C: pass obj = C() setattr(obj, 'xyz', 42) print(obj.xyz) # Output: 42
def outer_function(x): def inner_function(y): return x + y return inner_function # Returns a closure add_foo = outer_function(10) print(add_foo(5)) # Output: 15
Comprendre la fonction locals()
La fonction locals() renvoie un dictionnaire des variables locales au sein d'une fonction. Cependant, la modification directe de ce dictionnaire n'affecte pas les valeurs réelles des variables. Par exemple :
def foo(): lcl = locals() lcl['xyz'] = 42 print(xyz) # Error: NameError: name 'xyz' is not defined
Cela est dû au fait que la modification de locals() modifie une copie du dictionnaire de variables locales, et non les variables elles-mêmes.
Conclusion
Bien que l'affectation dynamique de variables locales ne soit pas directement possible en Python, l'utilisation de dictionnaires, d'attributs d'objet ou de fermetures fournit des solutions alternatives pour obtenir des fonctionnalités similaires. Il est important de noter les nuances de la fonction locals() pour éviter toute confusion lorsque vous travaillez avec des variables locales en Python.
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!