2016-12-06 46 views
5

Próbuję szukać łatwego sposobu definiowania wielu zmiennych globalnych z poziomu funkcji lub klasy.Python - Najprostszy sposób definiowania wielu zmiennych globalnych

Oczywistym rozwiązaniem jest wykonanie następujących czynności:

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

To jest uproszczony przykład, ale przede wszystkim trzeba zdefiniować kilkadziesiąt zmiennych globalnych opartych na wejściu danej funkcji. Idealnie chciałbym zadbać o zdefiniowanie globalnej nazwy i wartości bez konieczności aktualizowania zarówno wartości, jak i samodzielnego definiowania nazwy globalnej.

Aby dodać więcej klarowności.

szukam odpowiednik python tego (JavaScript):

var a = 1 
    , b = 2 
    , c = 3 
    , d = 4 
    , e = 5; 
+2

Nie, nie musisz tego robić. Jest to całkowicie niewłaściwy sposób robienia prawie wszystkiego. Musisz przejrzeć listy, słowniki, funkcje i wartości zwracane. – TigerhawkT3

+0

Istnieje __very__ z pewnością sposób na napisanie kodu bez jednego globalnego. –

+1

@ TigerhawkT3 Całkowicie się zgadzam, problemem jest tutaj edycja bardzo kiepsko napisanego projektu.Przepisanie go byłoby jednak dużym wysiłkiem, więc utknąłem między rocka i twardym miejscem i zasadniczo próbowałem wymyślić rozwiązanie, biorąc pod uwagę moje ograniczenia. Które definiują wartości zmiennych globalnych z funkcji. –

Odpowiedz

2

porządku, jestem nowy siebie i był to duży problem dla mnie, jako dobrze i myślę, że ma do czynienia z frazowania kwestii (Wyraziłem to w taki sam sposób podczas szukania w Google i nie mogłem znaleźć odpowiedzi, która byłaby istotna dla tego, co próbowałem zrobić). Proszę, ktoś mnie poprawi, jeśli jest powód, dla którego nie powinienem tego robić, ale ...

Najlepszym sposobem utworzenia listy zmiennych globalnych byłoby ustawienie dla nich klasy w tym module.

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

teraz można je nazwać, zmienić je, itd. W dowolnej innej funkcji przez odwołanie się do nich jako takie:

print(globalBS.bsA) 

byłoby wydrukować „F” w dowolnej funkcji w tym module. Powodem tego jest fakt, że Python traktuje klasy jako moduły, więc sprawdza się to dobrze przy tworzeniu listy zmiennych globalnych - na przykład podczas próby utworzenia interfejsu z wieloma opcjami, takimi jak obecnie, bez kopiowania i wklejania ogromna lista globali w każdej funkcji. Po prostu utrzymam nazwę klasy tak krótko, jak to tylko możliwe - może jeden lub dwa znaki zamiast całego słowa.

Nadzieję, że pomaga!

-1

Jeśli są koncepcyjnie związane Jedną z opcji jest mieć je w słowniku:

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

Ale jak to było skomentował w swoim pytaniu, to nie jest najlepsze podejście do rozwiązania problemu, który wygenerował to pytanie.

+0

Po pierwsze, globale są niewłaściwą drogą. Po drugie, słowniki są zmienne i mogą być zmutowane bez ponownego przypisania. – TigerhawkT3

+0

@Martinbaste, rozważałem tę metodę, ale potem wymaga edycji całego kodu, który wywołuje zmienne globalne już .... –

-1

Funkcja wbudowana globals() odnosi się do zmiennych globalnych w bieżącym module. Możesz go używać tak, jak zwykłego słownika

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

Powtórz to dla wszystkich zmiennych.

Jednak z całą pewnością nie powinien tego zrobić

+0

'globals()' jest prawdopodobnie jeszcze gorszym pomysłem niż użycie 'global'. – TigerhawkT3

+0

W jaki sposób mógł użyć wyrażenia 'global' w czasie wykonywania w celu zdefiniowania zmiennych o nieznanych nazwach i wartościach pochodzących od użytkownika? –