Credo che Python utilizzi l'ambito delle funzioni per le variabili locali. Cioè, in qualsiasi funzione data, se assegni un valore a una variabile locale, sarà disponibile da quel momento in avanti all'interno di quella funzione fino a quando non ritorna. Pertanto, poiché entrambi i rami del codice sono garantiti da assegnare a a
, non è necessario assegnare None
a a
inizialmente.
Si noti che quando è possibile accedere anche alle variabili dichiarate nelle funzioni esterne, in altre parole, Python ha delle chiusure.
def adder(first):
def add(second):
return first + second
return add
Definisce una funzione denominata adder. Quando viene chiamato con un argomento first
, restituirà una funzione che aggiunge qualsiasi argomento che riceve a first
e restituisce tale valore. Per esempio:
add_two = adder(2)
add_three = adder(3)
add_two(4) # = 6
add_three(4) # = 7
Tuttavia, anche se è possibile leggere il valore dalla funzione esterna, non è possibile modificarlo (a differenza di molte altre lingue). Ad esempio, immagina di provare ad implementare un accumulatore. Si potrebbe scrivere un codice in questo modo:
def accumulator():
total = 0
def add(number):
total += number
return total
return add
Purtroppo, cercando di utilizzare questi risultati di codice in un messaggio di errore:
UnboundLocalError: local variable 'total' referenced before assignment
Questo perché la linea total += number
cerca di modificare il valore di total
, che non può essere fatto in questo modo in Python.
fonte
2010-03-01 23:00:20
Non esiste una cosa come "dichiarare" una variabile in python! –