Maison > développement back-end > Tutoriel Python > Comment puis-je attribuer dynamiquement des variables locales en Python ?

Comment puis-je attribuer dynamiquement des variables locales en Python ?

Linda Hamilton
Libérer: 2024-12-02 03:11:13
original
610 Les gens l'ont consulté

How Can I Dynamically Assign Local Variables in Python?

Affectation dynamique de variables en Python

En Python, définir dynamiquement des variables locales en modifiant directement le dictionnaire locals() n'est pas une solution viable. Contrairement à la croyance populaire, de telles modifications ne persisteront pas dans la portée de la fonction.

Approches alternatives

Pour définir dynamiquement des variables locales, envisagez d'utiliser l'une des méthodes suivantes :

Dictionnaire

Créer un dictionnaire et attribuer une valeur-clé s'associe dynamiquement :

d = {}
d['xyz'] = 42
Copier après la connexion

Attribut d'objet

Utiliser un objet et définir les attributs de manière dynamique :

class C: pass

obj = C()
setattr(obj, 'xyz', 42)
Copier après la connexion

Modifier

L'accès aux variables dans des espaces de noms non fonctionnels (modules, définitions de classe, instances) implique généralement un dictionnaire recherches. Cependant, les fonctions locales sont optimisées pour la vitesse en précompilant les noms de variables connus du compilateur.

Dans l'implémentation C de Python, l'appel de locals() dans une fonction crée un dictionnaire initialisé avec les valeurs de variables locales actuelles. Ce dictionnaire est mis à jour avec les modifications apportées aux variables locales et est renvoyé lors des appels ultérieurs à locals().

Dans IronPython, les fonctions appelant locals() utilisent un dictionnaire comme magasin de variables locales. Les affectations aux variables locales modifient le dictionnaire, et vice versa. Cependant, lier un nom différent à la fonction locale dans IronPython permet d'accéder aux variables locales de la portée de liaison, pas à celles de la fonction.

Attention

Il est important de noter que l'affectation au dictionnaire renvoyé par locals() peut produire des résultats imprévisibles. S'appuyer sur ces missions est fortement déconseillé.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal