Définition dynamique d'une variable : au-delà des paramètres locaux()
En Python, la définition dynamique d'une variable locale pose un défi si le nom de la variable lui-même est dynamique . Contrairement aux hypothèses populaires, les modifications apportées au dictionnaire locals() ne sont pas toujours fiables pour définir des variables locales dans les fonctions.
Approches alternatives :
Au lieu de s'appuyer sur les locaux( ), envisagez les alternatives suivantes :
Utiliser un Dictionnaire :
Créez un dictionnaire et attribuez le nom de la variable dynamique à une clé. Accédez à la valeur via le dictionnaire.
d = {} d['xyz'] = 42 print(d['xyz']) # Prints 42
Utilisation des attributs de classe :
Définissez une classe et définissez le nom de la variable dynamique comme attribut. Accédez à la valeur via l'instance de classe.
class C: pass obj = C() setattr(obj, 'xyz', 42) print(obj.xyz) # Prints 42
Comprendre le comportement de Locals() :
Bien que locals() puisse fonctionner à l'intérieur des fonctions en raison Pour les optimisations du compilateur, il est important de noter que la modification directe de locals() peut conduire à des résultats inattendus. Les affectations au dictionnaire renvoyé sont éphémères et seront écrasées lors du prochain appel locals().
Spécificités d'IronPython :
Dans IronPython, locals() se comporte différemment. L'appel de locals() sous un nom différent est lié aux variables locales de la portée où le nom était lié. Cependant, il n'est pas possible d'accéder aux fonctions locales via ce nom lié.
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!