2016-09-01 3 views
1

Wenn ich dies ausführen es funktioniert, aber es sagtPython ändern externe Variable aus der Funktion

"name 'select_place' is assigned to before global declaration" 

Wenn ich an der zweiten globalen loszuwerden, kein Kommentar erscheint, sondern als select_place nicht mehr global ist, ist es nicht lesbar (wenn ausgewählt) in meiner letzten Codezeile. Ich bin wirklich neu in Python, idealerweise möchte ich eine Möglichkeit, den globalen Befehl nicht zu verwenden, aber nach der Suche kann ich immer noch nichts finden, das hilft.

Mein Code:

def attempt(x): 
    if location =='a': 
     global select_place 
     select_place = 0 
    if location =='b' 
     global select_place 
     select_place = 1 

place = ([a,b,c,d]) 

Dies ist der Beginn einiger Grafiken Schildkröte ist

def Draw_piece_a(Top_right): 
    goto(place[select_place]) 
+0

Der beste Weg, 'global' zu vermeiden, ist die Vermeidung globaler Variablen. Warum sollte 'versuch()' explizit * den Wert von 'select_place' nicht zurückgeben, anstatt eine globale Variable zu verwenden? –

Antwort

1

Sie müssen zunächst die Variable deklarieren, zusätzlich der Funktionscode gemacht werden kann deutlicher:

select_place = False 
def attempt(x): 
    global select_place 
    if location == 'a': 
     select_place = 0 
    elif location == 'b': 
     select_place = 1 

Auch gibt es keinen Rückgabewert für attempt(), ist das, was Sie wollen?

Verwandte Themen