Al escribir funciones, podríamos tener variables que se declaran dentro del cuerpo de una función. Por ejemplo, si una variable name se declara en la función, se considera una nueva variable, que es totalmente diferente de la que se declaró fuera de la función:
name = 'Helen'
def greet():
name = 'Bob'
print('Hi', name)
greet() # Hi Bob
print('Outside:', name) # Outside: Helen
La variable name se declara en la función greet() y su alcance dura hasta el final de la función. A las variables declaradas dentro de algún ámbito generalmente se les llama variables locales. Tan pronto como el programa sale de la función, "olvida" esa variable.
Para acceder y modificar las variables fuera del ámbito actual, podemos usar la palabra clave global para decirle a Python que queremos tratar esa variable como global:
name = 'Helen'
def greet():
global name
name = 'Bob'
print('Hi', name)
greet() # Hi Bob
print('Outside:', name) # Outside: Bob
Esta vez, la función greet() modificó la variable global name y cambió su valor a Bob.
Desafío
Dada la siguiente función, intenta encontrar el error y corregirlo. La función debería devolver la suma de los valores pasados hasta el momento.
total = 0
def compute_sum(val):
total = total + val
return val
print(compute_sum(10))
print(compute_sum(20))
print(compute_sum(30))