2016-04-18 17 views
0

Ich habe versucht, eine globale Variable in einer Funktion zu setzen. global die Variable auf Kategorie = ''So legen Sie eine globale Variable fest

In einem meiner Funktion würde ich es auf einen anderen Wert setzen mag:

elif methode=='show_select_dialog': 
writeLog('Methode: show select dialog', level=xbmc.LOGDEBUG) 
dialog = xbmcgui.Dialog() 
cats = [__LS__(30120), __LS__(30121), __LS__(30122), __LS__(30123), __LS__(30116)] 
ret = dialog.select(__LS__(30011), cats) 

if ret == 6: 
    refreshWidget() 
elif 0 <= ret <= 5: 
    writeLog('%s selected' % (cats[ret]), level=xbmc.LOGDEBUG) 

    global Kategorie 
    Kategorie = (cats[ret])   
    refreshWidget() 

Wenn ich log die Variable Kategorie in Funktion refreshWidget der Wert korrekt ist (cats[ret]), aber danach, wenn die Funktion refreshedWidget aufgerufen wird wieder der Wert ist weg ...

elif methode == 'get_item_serienplaner': 
sp_items = refreshWidget() 

Einmal habe ich die Variable geändert cats[ret] Ich brauche es als cats[ret]

+0

ja, das ist ein einfacher Tippfehler ... es wird auch '' Kategorie'' – user294015

Antwort

1

Sie müssen Ihre Var außerhalb Ihrer Funktionen und jedes Mal, wenn Sie es in einer Funktion verwenden möchten, müssen Sie die global varName angeben. Wie ich sehe, ist Ihr globaler Var-Name bei der Deklaration Kategorie und nach der Verwendung Kategorie.

0

Python möchte sicherstellen, dass Sie wirklich wissen, dass Sie globale Variablen verwenden, indem Sie explizit das Schlüsselwort global benötigen.

Um eine globale Variable innerhalb einer Funktion zu verwenden, müssen Sie explizit delcare verwenden Sie verwenden es.

Hier ein kleines Beispiel:

myGlobalVar= 0 

def set_globvar(): 
    global myGlobalVar # Needed to modify global copy of globvar 
    myGlobalVar = 5 

def print_globvar(): 
    print myGlobalVar  # No need for global declaration to read value of myGlobalVar 

set_globvar() 
print_globvar()   # Prints 5 

in Ihrem Fall sehe ich, dass Sie erklären, dass Sie global Kategorie zugreifen möchten, aber Sie erklären nicht den Zugang zu global Kategory. Ich weiß nicht, ob das ein einfacher Tippfehler ist oder ob es sich um zwei verschiedene Variablen handelt. In jedem Fall müssen Sie schreiben global yourGlobalVariable

+0

ja das ist ein Tippfehler es bedeutet auch, '' Katagorie'' – user294015

+0

Also ... habe meine Antwort Ihr Problem beheben? – Stefano

+0

leider nicht ... vielleicht erkläre ich das nicht richtig. Aber ich habe einen anderen Weg gefunden, das Problem zu lösen. Jetzt benutze ich '' WINDOW.setProperty() '' und '' WINDOW.getProperty() '' und es funktioniert perfekt für mich ... – user294015

0

Gibt es wirklich globale in Python? Ja, es gibt ein globales Schlüsselwort, mit dem Sie auf Variablen im Dateibereich zugreifen können. Eine andere Möglichkeit, auf die Variable zuzugreifen, ist die import-Anweisung. Nehmen wir an, Sie haben eine Datei namens file.py. Um in die Variable zu schreiben, könnten Sie. Sie könnten genauso einfach auf andere Dateivariablen zugreifen.

import file 

anyVariable = 42 

# ... 
def aFunc(): 
    file.anyVarible = file.anyVarible + 1 
Verwandte Themen