web-dev-qa-db-fra.com

Python - Le moyen le plus simple de définir plusieurs variables globales

J'essaie de rechercher un moyen simple de définir plusieurs variables globales à l'intérieur d'une fonction ou d'une classe.

L'option évidente consiste à effectuer les opérations suivantes:

global a,b,c,d,e,f,g......
a=1
b=2
c=3
d=4
.....

Ceci est un exemple simplifié, mais je dois essentiellement définir des dizaines de variables globales en fonction de la saisie d'une fonction particulière. Idéalement, j'aimerais définir le nom global et la valeur sans avoir à mettre à jour la valeur et définir le nom global de manière indépendante.

Pour ajouter plus de clarté.

Je cherche l’équivalent en python de cela (javascript):

var a = 1
  , b = 2
  , c = 3
  , d = 4
  , e = 5;
11
Stephen Gelardi

D'accord, je suis nouveau moi-même et cela a été un gros problème pour moi aussi et je pense que cela a à voir avec la formulation de la question (je l'ai formulée de la même manière lorsque je cherchais sur Google et je ne pouvais pas trouver une réponse qui en rapport avec ce que j’essayais de faire). S'il vous plaît, quelqu'un me corrige s'il y a une raison pour laquelle je ne devrais pas le faire, mais ...

Le meilleur moyen de définir une liste de variables globales consiste à définir une classe pour celles-ci dans ce module.

class globalBS():
    bsA = "F"
    bsB = "U"

maintenant, vous pouvez les appeler, les changer, etc. dans n'importe quelle autre fonction en les référençant ainsi:

print(globalBS.bsA)

afficherait "F" dans n’importe quelle fonction de ce module. La raison en est que python traite les classes en tant que modules, cela fonctionne donc bien pour configurer une liste de variables globales, comme lorsque vous essayez de créer une interface avec plusieurs options comme celle que je suis en train de faire, sans copier-coller liste énorme de globals dans chaque fonction. Je voudrais juste garder le nom de classe aussi court que possible - peut-être un ou deux caractères au lieu d'un mot entier.

J'espère que cela pourra aider!

4
qui

Vous pouvez simplement décompresser les variables:

global x, y, z
x, y, z = 4, 5, 6
3
d3x

La fonction intégrée globals() fait référence aux variables globales du module actuel. Vous pouvez l'utiliser comme un dictionnaire normal

globals()['myvariable'] = 5
print(myvariable) # returns 5

Répétez cette opération pour toutes vos variables.

Cependant, vous ne devriez certainement pas faire ça

0
blue_note

S'ils sont liés conceptuellement, une option consiste à les avoir dans un dictionnaire:

global global_dictionary
global_dictionary = {'a': 1, 'b': 2, 'c': 3}

Mais comme cela a été commenté dans votre question, ce n'est pas la meilleure approche pour traiter le problème qui a généré cette question.

0
Martinbaste