2010-02-19 5 views

Répondre

6

Vous pouvez accéder aux variables globales à partir d'autres modules en les important explicitement.

Dans le module foo:

joe = 5 

Dans le module bar:

from foo import joe 
    print joe 

Notez que cela ne soit pas recommandé, cependant. Il est préférable de masquer l'accès aux variables d'un module en utilisant des fonctions.

+2

Il est même préférable de ne pas stocker d'état mutable dans les variables globales, mais plutôt d'utiliser des classes. –

+0

@Eli Bendersky, qu'entendez-vous par "Il est préférable de cacher l'accès aux variables d'un module en utilisant des fonctions"? @ Mike Graham, qu'entendez-vous par "utiliser des classes"? Comment faites-vous cela pour obtenir ce qu'il veut? – LWZ

+1

@LWZ: Ce que je voulais dire, c'est que lorsqu'un module permet à d'autres modules d'accéder directement à ses données, cela peut conduire à des problèmes difficiles à déboguer. Si l'accès aux données globales est absolument nécessaire pour une raison quelconque, au moins des fonctions get/set doivent être fournies. Ces fonctions facilitent grandement la modification ultérieure du code (par exemple, remplace les données globales par quelque chose d'autre) et le déboguent si des problèmes surviennent. –

0

Les étendues au-delà du local doivent être écrites via une référence à la portée, ou après une directive global ou nonlocal (3.x +).

2

Python ne prend pas en charge les globales partagées entre plusieurs modules: c'est une fonctionnalité. Le code qui modifie implicitement les variables utilisées loin est confus et non maintenable. La solution real consiste à encapsuler tout l'état d'une classe et à passer son instance à tout ce qui doit la modifier. Cela peut rendre le code plus clair, plus facile à maintenir, plus testable, plus modulaire et plus extensible.

Questions connexes