Maison >développement back-end >Tutoriel Python >Comment puis-je partager des variables globales entre des modules Python sans provoquer d'importations circulaires ?

Comment puis-je partager des variables globales entre des modules Python sans provoquer d'importations circulaires ?

DDD
DDDoriginal
2024-11-26 12:59:09563parcourir

How Can I Share Global Variables Between Python Modules Without Causing Circular Imports?

Visibilité globale des variables dans les modules importés

Problème :

L'importation de modules peut entraîner des problèmes de visibilité lors de l'accès aux variables globales. Lorsqu'une variable globale est définie dans un module auxiliaire mais référencée dans le module principal, une erreur peut survenir indiquant que la variable n'est pas définie.

Exigence :

Un programme Python se connectant à une base de données MySQL cherche à conserver une variable partagée (un objet curseur de base de données) accessible à la fois au module principal et aux modules importés contenant l'utilitaire fonctions.

Solution proposée :

La solution proposée suggère d'importer la variable globale du module principal dans le module utilitaire importé. Cependant, cette approche peut entraîner des importations circulaires et des plantages.

Solution réelle :

Il existe plusieurs solutions à ce problème :

Évitez les variables globales :

Envisagez de convertir les fonctions utilitaires en méthodes d'instance d'une classe. Cela élimine le besoin d'une variable globale partagée.

Définissez la variable globale dans le module importé :

Définissez la variable globale dans le module importé en utilisant import au lieu de from . Cela permet au module importé de modifier la variable si nécessaire.

Utiliser un module externe pour les variables partagées :

Si la variable globale est partagée par plusieurs modules, placez-la dans un module séparé et demandez à tous les autres modules de l'importer. Cela garantit un accès cohérent à la variable.

Ajouter la variable au module intégré (non recommandé) :

Pour un véritable accès global, ajoutez la variable au module intégré . Cependant, cette approche doit être utilisée avec prudence pour éviter les conflits avec les éléments intégrés existants.

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