Ámbito y variables en funciones
Duración de la lección: 7:24 min
[1]:
#
# Accesso a variables definidas fuera del ámbito de la función
# =============================================================================
#
username = "wick.john"
def print_username():
print(username)
print_username()
wick.john
Explicación:
+-- Ambiente del módulo -------------+ +-- Ambiente de la función ------------------+
| { | | creado con la llamada a la funcion |
| 'username': "wick.john", | | { |
| 'print_username': #function, | <=== | 'ambiente_padre': ambiente del modulo |
| } | | } |
+------------------------------------+ +--------------------------------------------+
[2]:
#
# Ambito de las variables
# =============================================================================
#
int_var = 5
def my_function(int_var):
int_var = 3
print("inside:", int_var)
my_function(int_var)
print("outside:", int_var)
inside: 3
outside: 5
Codigo Memoria
-----------------------------------------------------------
ambiente = {}, funcion = {}
int_var = 5
ambiente = {'int_var': 5}, funcion = {}
my_function(int_var)
ambiente = {'int_var': 5}, funcion = {'int_var': 5}
(cuerpo de la funcion)
int_var = 3
ambiente = {'int_var': 5}, funcion = {'int_var': 3}
Comandos global y nonlocal
[3]:
#
# Se define la variable como global
#
global_var = 0
def user_function():
"""Cambia el valor de la variable global"""
global global_var
global_var += 1
display(global_var)
user_function()
display(global_var)
0
1
[4]:
#
# Sin nonlocal
#
def outer():
n = 1
def inner():
n = 2
print(n)
inner()
print(n)
outer()
2
1
[5]:
#
# Con nonlocal
#
def outer():
n = 1
def inner():
nonlocal n
n = 2
print(n)
inner()
print(n)
outer()
2
2