2017-12-07 3 views
0

Im Hauptprogramm zu erklären, werde ich eine Funktion in medallia_utils genannt word_checker anrufen.Wie eine globale Variable in einem Modul

Ich möchte die Dictionary-Variable Operes in einer Funktion word_checker in Medallia_utils definiert, so dass ich es als Global deklarieren möchte.

Als ich tun, um diese innerhalb von medallia_utils:

def word_checker(name, comment): 
    import re 
    from collections import defaultdict 
    global Opers 

Das System sagt

NameError: global name 'Opers' is not defined 

ich auch in medallia_utils außerhalb der Funktion word_checker diese Variable global zu definieren versucht, indem

global Opers 

oder

global __Opers__ 

aber nichts funktioniert so weit. Ich bekomme den gleichen Fehler.

Was ist die Syntax beheben, um dies zu erreichen?

+1

Wie machst du das? Du nicht. Vermeiden Sie so viele Globals wie möglich. Importieren Sie es, injizieren Sie es oder finden Sie eine andere Möglichkeit, um Daten zu erhalten, wo immer es möglich ist. – MCBama

Antwort

2

Es gibt keine "Syntax-Reparatur", die das funktioniert. Wenn Sie eine in einem anderen Modul definierte Variable verwenden möchten, müssen Sie sie importieren.

+0

Ich habe Probleme. Wenn ich ein Wörterbuch lokal in einem importierten Modul definiere und versuche, es am Ende einer Funktion in diesem Modul "zurückzugeben", meldet die Hauptfunktion ein leeres Wörterbuch, obwohl ich über gedruckte Anweisungen im importierten Modul nicht sehen kann leer. Also habe ich versucht, eine Variable global zu deklarieren, damit das importierte Modul darauf operieren kann. –

+0

Das ist nicht die Lösung. Sie sollten herausfinden, warum Ihr Diktat leer wird. –

+0

ja. Ich arbeite daran. –

0

Sie müssen die Variable etwas halten, nachdem Sie es als global zB deklarieren.

global name 
name = 'bob'