9. Funciones II#
(★☆☆, ★★☆, ★★★) Esta notación indica la dificultad de cada ejercicio, de menor a mayor.
Scoping#
-
★☆☆ ¿Qué imprime del siguiente programa?
-
★☆☆ ¿Qué imprime del siguiente programa?
-
★☆☆ Dado el siguiente programa
¿
var
es una variable local o global? -
★☆☆ Dado el siguiente programa
¿Qué imprime? ¿Por qué?
-
★☆☆ Dado el siguiente programa
¿Qué error produce? ¿Dónde? ¿Por qué?
-
★☆☆ Dado el siguiente programa
¿
var
es una variable local o global? -
★★☆ ¿Por qué es considerado una mala práctica usar variables globales?
Typehints#
-
★☆☆ ¿Qué es un typehint? ¿Para qué sirve? ¿Es obligatorio? ¿Es recomendable?
-
★☆☆ ¿Qué significa
def f(x: int) -> int:
? -
★☆☆ ¿Qué significa
def f(x: int) -> None:
? -
★☆☆ Dado el siguiente programa
- ¿Qué imprime? ¿Por qué?
- ¿Produce algún error? ¿Por qué?
Argumentos por omisión#
-
★☆☆ ¿Qué es un argumento por omisión? ¿Para qué sirve?
-
★☆☆ ¿Qué significa
def f(x = 3) -> int:
? -
★☆☆ ¿Qué imprime el siguiente programa?
-
★☆☆ Modificar el programa anterior para que la definición de la función
pow
utilice typehints.Cuidado
Debe mantenerse el
exp
como argumento por omisión. -
★☆☆ ¿Cuál es el error que produce el siguiente programa? ¿Por qué? ¿Cómo se soluciona?
Módulos#
-
★☆☆ En un archivo
calculadora.py
escribir las funcionessuma
,resta
,multiplicacion
ydivision
. Cada función debe recibir dos números y devolver el resultado de la operación correspondiente.En otro archivo
main.py
importar el módulocalculadora
y utilizar las funciones definidas.¿Cuál es el beneficio de hacer esto, en vez de tener todas las funciones en el mismo archivo?
-
★☆☆ Escribir un archivo llamado
words.py
que contenga una variable que sea una lista con palabras (strings). Escribir, luego, una función que lea las palabras enwords.py
y las almacene como valores en un diccionario. La clave a la que pertenece cada palabra es su propia longitud. Luego se pueden recuperar rápidamente todas las palabras de una determinada longitud. -
★★☆ Hacer dos archivos:
main.py
yfunciones.py
y completarlos de la siguiente manera:main.pyimport funciones def main(): print(funciones.f(3)) print(funciones.pi) if __name__ == '__main__': main()
funciones.pydef f(x): x = x + 1 return x pi = 3.14159 print('Este print es de funciones.py') print(f'El valor de 2*pi es {2*pi}')
- ¿Qué imprime? ¿Por qué?
- Quiero que los prints de
funciones.py
no se ejecuten cuando importo el módulo, pero sí cuando lo ejecuto directamente. ¿Cómo lo hago?