Maison >développement back-end >Tutoriel Python >Comment puis-je définir dynamiquement des variables locales en Python au-delà de l'utilisation de « locals() » ?

Comment puis-je définir dynamiquement des variables locales en Python au-delà de l'utilisation de « locals() » ?

DDD
DDDoriginal
2024-12-05 06:07:12739parcourir

How Can I Dynamically Set Local Variables in Python Beyond Using `locals()`?

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!

Déclaration:
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