Creo que Python usa el alcance de la función para las variables locales. Es decir, en cualquier función dada, si asigna un valor a una variable local, estará disponible desde ese momento en adelante dentro de esa función hasta que vuelva. Por lo tanto, dado que se garantiza que ambas ramas de su código se asignan a a
, no es necesario asignar None
al a
inicialmente.
Tenga en cuenta que cuando también puede acceder a las variables declaradas en funciones externas, en otras palabras, Python tiene cierres.
def adder(first):
def add(second):
return first + second
return add
Define una función llamada sumador. Cuando se invoca con un argumento first
, devolverá una función que agrega cualquier argumento que reciba a first
y devuelva ese valor. Por ejemplo:
add_two = adder(2)
add_three = adder(3)
add_two(4) # = 6
add_three(4) # = 7
Sin embargo, aunque se puede leer el valor de la función externa, no se puede cambiar (a diferencia de muchos otros idiomas). Por ejemplo, imagine tratar de implementar un acumulador. Es posible escribir código de esta manera:
def accumulator():
total = 0
def add(number):
total += number
return total
return add
Por desgracia, tratando de utilizar este código da como resultado un mensaje de error:
UnboundLocalError: local variable 'total' referenced before assignment
Esto es debido a que la línea de total += number
intenta cambiar el valor de total
, que no puede hacerse de esta manera en Python.
¡No existe tal cosa como "declarar" una variable en Python! –