You are on page 1of 18

Invocación

y scope
de funciones
Curso ING012
Invocación
¿Qué es?

● La invocación o llamado se
realiza cuando se quiere
ejecutar la función definida.
● Sin invocación, el código nunca
se ejecuta.

online.ing.puc.cl
Invocación
Error común
cuenta(3)

def cuenta(tope):
i = 0
while i < tope:
print(i)
i += 1
Invocación
Error común
cuenta(3)

def cuenta(tope):
i = 0
while i < tope:
print(i)
i += 1

...
>>> NameError: name ‘cuenta' is not defined
Invocación
Caso correcto
def cuenta(tope):
i = 0
while i < tope:
print(i)
i += 1

cuenta(3)
Invocación
Caso correcto
def cuenta(tope):
i = 0
while i < tope:
print(i)
i += 1

cuenta(3)

>0
>1
>2
Invocación
Utilizar el llamado

Se puede, opcionalmente, igualar un


llamado de función a una variable:
def calculo(numero):
resultado = (numero – 3) ** 3
return resultado
salida = calculo(5)

Ahora se tiene en salida el valor de


resultado
Scope
¿Qué es?

● El scope de una función


corresponde al manejo de las
variables dentro de la misma.
● Variables definidas dentro de una
función no existen fuera de ella.

online.ing.puc.cl
Scope
Ejemplo
def es_par(numero):
divisor = 2
if numero % divisor == 0:
return True
else:
return False

print(divisor)

...
>>> NameError: name ‘divisor' is not defined

online.ing.puc.cl
Scope
Consideraciones

● Que las variables “mueran” al


terminar la función evita errores.
● Se les llama variables locales, y
solo existen dentro de la función
que las define.

online.ing.puc.cl
Scope
Consideraciones

● Las variables fuera del scope de


la función, se pueden utilizar
pero no modificar.
● Fuera del scope: variables que no
fueron definidas en la función.

online.ing.puc.cl
Scope
Ejemplos

def fx(numero):
print(numero * factor)

factor = 0.5
fx(3)
print(factor)

> 1.5
> 0.5

online.ing.puc.cl
Scope
Ejemplos

def fx2(numero):
factor += 0.1
print(numero * factor)

factor = 0.5
fx2(3)

>>> UnboundLocalError: local variable


'factor' referenced before assignment

online.ing.puc.cl
Scope
Ejemplos

def fx3(numero):
factor = 0.9
print(numero * factor)

factor = 0.5
fx3(3)
print(factor)

> 2.7
> 0.5
Scope
Ejemplos

def fx4(numero):
print(numero * factor)

factor = 0.5
fx3(3)
fx4(3)

> 2.7
> 1.5

online.ing.puc.cl
Scope
Resumiendo

● Variables definidas en una


función son locales.
● Dentro de una función se pueden
leer variables de un scope mayor
o externo, pero no modificarlas.

online.ing.puc.cl