Je me demandais si quelqu'un avait des idées sur l'utilisation de Python globale par rapport au référencement du module lui-même. Alors que dans le passé, je mondial en cas de besoin, je l'ai trouvé un peu plus clair à faire la deuxième méthode (et, récemment, tend à favoriser cette syntaxe):Utilisation de Python de global vs spécification du module
import sys
mod = sys.modules[__name__]
counter = 0
def incrementGlobal():
global counter
counter += 1
def incrementMod():
mod.counter += 1
Il est évident que les deux fonctionnent très bien, mais si quelqu'un a des opinions fortes (quoi de plus pythonique, performance etc), j'adorerais les entendre. Btw Je finis par utiliser l'un ou l'autre de ces cas dans des situations où le module encapsule naturellement toutes les méthodes et attributs de ce qui serait une seule classe, et plutôt que de faire référence à incrementmodule.IncrementClass.counter, je peux simplement utiliser incrementmodule.counter.
Comment le second est-il plus clair? – delnan
Je suppose que ce n'est pas beaucoup plus clair, mais je préfère car il est immédiatement évident qu'une variable au niveau du module est en cours de modification, plutôt qu'une variable locale (vous empêche de vérifier si la variable est dans la déclaration globale en haut) – gnr
Si le 'global' et l'affectation sont si loin, vous avez des problèmes de clarté pire que cela;) – delnan