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
¿
vares 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
¿
vares 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
powutilice typehints.Cuidado
Debe mantenerse el
expcomo 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.pyescribir las funcionessuma,resta,multiplicacionydivision. Cada función debe recibir dos números y devolver el resultado de la operación correspondiente.En otro archivo
main.pyimportar el módulocalculadoray 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.pyque contenga una variable que sea una lista con palabras (strings). Escribir, luego, una función que lea las palabras enwords.pyy 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.pyyfunciones.pyy 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.pyno se ejecuten cuando importo el módulo, pero sí cuando lo ejecuto directamente. ¿Cómo lo hago?