Per Python 2.7 dobbiamo tipi di variabili: globali, locali. Ogni funzione crea il proprio ambito locale per le variabili.
Dall'ambito locale è possibile leggere senza alcuna restrizione. È anche possibile chiamare chiamata metodi globali, quindi è possibile modificare la variabile da globale. Ma non puoi riassegnare il valore.
Guardate questo codice:
requests = [1,2,3]
def modify():
requests.append(4)
def redeclare():
requests = [10,20,30]
modify()
print requests
# will give you [1,2,3,4]
redeclare()
print requests
# will give you [1,2,3,4]
Cosa sta succedendo? Non è possibile riassegnare la variabile requests
dall'ambito locale, quindi l'interprete crea per te l'altra variabile, in ambito locale per il contesto di chiamata redeclare
.
Riguardo al codice ... In primo luogo, si tenta di riassegnare la variabile dall'ambito globale. Perché? url_request
è int
, int
, è immutabile, quindi l'operazione url_request+=1
non è cambia valore, dovrebbe riassegnare il nuovo valore al nome della variabile. In secondo luogo, non si specifica global
identificativo per questa variabile. Quindi una sola opzione per l'interprete - per assumere url_request
come variabile locale. Ma ... Non hai dichiarato il valore da nessuna parte ...
UnboundLocalError
significa che si tenta di eseguire operazioni con valore variabile senza dichiararlo prima. Spero che questo ti aiuti a capire di più sulle variabili/nomi/ambiti Python.
fonte
2012-12-10 10:18:18
Non lo sapevo. Grazie mille. – user1561108
Non pensavo nemmeno per un secondo che '+ =' stava facendo un compito. –