Ya hemos trabajado con funciones en Python. De hecho, nuestro primer programa ya usaba una función. print() es en realidad una función. min(), max(), input(), sorted(), y todos los demás comandos con paréntesis son todas funciones.
Las funciones ejecutan varios comandos y, en algunos casos, devuelven un resultado. min() calcula el mínimo de varios valores y devuelve ese valor. print(), por otro lado, imprime un valor en la salida.
Las funciones son especialmente útiles para eliminar código repetitivo. También podemos definir nuestras propias funciones personalizadas. Imagina que te gustaría imprimir un cierto objeto 3 veces y hacer algo más entre medio:
Para definir una función personalizada, es necesario usar la palabra clave def seguida del nombre de la función (print_triangle en nuestro caso), seguida de () y dos puntos : para marcar el inicio del bloque de la función. La lista de comandos que la función debe ejecutar se coloca en un bloque indentado dentro del cuerpo de la función.
Ambos programas realizan exactamente las mismas operaciones, pero el segundo define la parte repetitiva en una función y se asegura de que el código no se copie y pegue.
Por otro lado, el primero tiene mucho código copiado y pegado, y si decidimos cambiar el * por % al imprimir un triángulo, sería necesario hacer muchos cambios y revisar cada línea para hacer el cambio. Esto puede volverse realmente engorroso para códigos más grandes y es muy propenso a errores.
Desafío
Define una función que imprima un rectángulo de y llámala 3 veces. Los bordes del rectángulo deben ser del símbolo #, y la parte interior debe estar vacía.