Ich habe

# file1.py
global a, b, c, d, e, f, g

def useful1():
   # a lot of things that uses a, b, c, d, e, f, g

def useful2():
   useful1()
   # a lot of things that uses a, b, c, d, e, f, g

def bonjour():
   # a lot of things that uses a, b, c, d, e, f, g
   useful2()

Und

# main.py   (main file)
import file1

# here I would like to set the value of a, b, c, d, e, f, g  of file1 !

bonjour()

Wie gehe ich mit all diesen globalen Variablen um?

PS: Ich möchte nicht a, b, c, d, e, f, g für ALLE Funktionen hinzufügen, es wäre sehr überflüssig, Folgendes tun zu müssen:

def useful1(a, b, c, d, e, f, g):
...
def useful2(a, b, c, d, e, f, g):
...
def bonjour(a, b, c, d, e, f, g):
...
2
Basj 6 Dez. 2013 im 12:59

3 Antworten

Beste Antwort

Sie müssen sie nicht bestehen. Wenn Sie import file1 oben in main.py ausgeführt haben, können Sie direkt auf file1.a usw. verweisen.

Es riecht jedoch sehr schlecht, wenn so viele globale Variablen vorhanden sind. Sie sollten wahrscheinlich eine Klasse umgestalten.

7
Daniel Roseman 6 Dez. 2013 im 09:07

Verwenden Sie ein Diktat, um diese globalen Variablen zu verpacken, dann nur einen Parameter für Funktionen

0
linbo 6 Dez. 2013 im 09:06

Die kanonische Möglichkeit, Informationen innerhalb eines einzelnen Programms modulübergreifend auszutauschen, besteht darin, ein spezielles Modul zu erstellen (häufig als config oder cfg bezeichnet). Importieren Sie einfach das Konfigurationsmodul in alle Module Ihrer Anwendung. Das Modul wird dann als globaler Name verfügbar. Da es nur eine Instanz jedes Moduls gibt, werden alle am Modulobjekt vorgenommenen Änderungen überall wiedergegeben. Zum Beispiel:

config.py:

x = 0   # Default value of the 'x' configuration setting

mod.py:

import config
config.x = 1

main.py:

import config
import mod
print config.x
1
user2486495 6 Dez. 2013 im 09:10