Maison >développement back-end >Tutoriel Python >Comment puis-je partager des variables globales entre des modules Python sans provoquer d'importations circulaires ?
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!