Saltar a contenido

Creación de una función definida por el usuario

Repasemos nuestro programa:

Python
1
2
3
nombre = input("¿Cuál es tu nombre? ")
hola()
print(nombre)

Vimos que al ejecutar este programa, obtuvimos un error, ya que la función hola() no está definida en el programa:

Terminal (Entrada/Salida)
¿Cuál es tu nombre? Pablo
Traceback (most recent call last):
  File "c:\Users\usuario\hola_mundo.py", line 2, in <module>
    hola()
    ^^^^
NameError: name 'hola' is not defined

Para solucionar este problema, vamos a crear la función hola() en nuestro programa.

¿Qué es la palabra clave def?

La palabra clave def, en Python, se utiliza para definir una función que es creada por el programador. def es una abreviatura de "define" en inglés y le indica al intérprete de Python que el bloque de código que sigue a continuación es una función y no un bloque de código normal.

Así que Si deseas crear tus propias funciones para potenciar tus programas con nuevas, mejores y más robustas funcionalidades, ahora puede hacerlo utilizando esta palabra clave en Python.

¡Para recordar!

Una palabra clave (keyword en inglés)1 es una palabra reservada en un lenguaje de programación que tiene un significado especial y no puede ser utilizada como nombre de variables, funciones, clases, etc.

Sin embargo, recuerda que en Python todo es un objeto, y como tal y a diferencia de otros lenguajes, las palabras reservadas pueden ser redefinidas, por error o negligencia.

Redefinir una palabra clave no es recomendable, ya que puede llevar a confusiones y errores en el código, y es considerado una mala práctica.

¿Cómo se compone una función definida por el usuario?

Antes de ver la sintaxis de una función definida por el usuario, familiaricémonos con los elementos que la componen:

  1. la palabra clave def y un espacio en blanco,
  2. seguido del nombre de la función (que debe respetar las reglas y convenciones empleadas para definir los nombres de las variables),
  3. seguido del paréntesis de apertura,
  4. seguido de los parámetros que recibirán los argumentos para la ejecución de la función, si es que estos son necesarios,
  5. seguido del paréntesis de cierre,
  6. seguido seguido de dos puntos : (colon en inglés),
  7. y luego, a partir de la siguiente línea de código, debe haber un bloque de código indentado que contenga las instrucciones que la función ejecutará,
  8. y al menos una de esas instrucciones deberá retornar (return en inglés) un valor como resultado de la ejecución de dicha función.

En el caso de que la función no devuelva ningún valor, simplemente finalizará su ejecución sin retornar nada. En este caso, no sería una función si no una subrutina2, como estudiamos previamente.

Sintaxis de una función definida por el usuario

De acuerdo con los elementos definidos anteriormente, la sintaxis básica para definir una función en Python es la siguiente:

Sintaxis de función definida por el usuario en Python
def nombre_funcion(parametro_1, parametro_2, ..., parametro_n):
    # Bloque de código indentado
    # que contiene las instrucciones
    # que la función ejecutará
    instruccion_1
    instruccion_2
    ...
    instruccion_n

    return valor_a_retornar

¿Qué es la indentación?

Veamos por un momento el código con los caracteres auxiliares activos:

Python
def nombre_de_la_funcion(parametro_1, parametro_2, ..., parametro_n):
....# Bloque de código indentado
....# que contiene las instrucciones
....# que la función ejecutará
....return valor

Notemos los puntos que ahora han aparecido mágicamente aquí. Estos son solo producto de una configuración del editor de texto, VS Code en nuestro caso, que me indica explícitamente que presionamos la barra espaciadora cuatro veces, o la tecla TAB que es su equivalente si la configuración de indentación se encuentra en 4 espacios.

En términos generales, tendré que asegurarme de que todo mi código indentado (tabulado o sangrado -este último término proviene de la palabra sangría-) esté alineado ahora para que Python sepa que todas las líneas afectadas forman parte del mismo bloque de código.

¡Para recordar!

La indentación es el espacio en blanco al principio de una línea de código que indica que esa línea está dentro de un bloque de código.

En Python, la indentación es obligatoria y se utiliza para definir la estructura y jerarquía del código.

La indentación se realiza con espacios o tabulaciones, pero no se pueden mezclar ambos métodos en un mismo bloque de código.

La convención más común es utilizar 4 espacios para la indentación en Python.

Es muy importante no equivocarse con la indentación, ya que un error en un espacio de más o un espacio de menos puede provocar errores de sintaxis y comportamientos inesperados en el programa.

Escribir una función definida por el usuario

Veamos como se escribe, entonces, la función definida por el usuario que precisa nuestro programa:

Python
def hola():
    print("¡Hola!")

En este caso, la función hola() simplemente imprime un mensaje de saludo en pantalla, así que técnicamente no seria una función definida por el usuario si no más bien una subrutina2 que imprime un mensaje en pantalla.

Ahora que ya tenemos nuestra función hola() definida, veamos como se implementa en nuestro programa.

Referencias:


  1. Keyword: Es la definición estándar y correcta, en inglés, para referirse a palabras reservadas en lenguajes de programación. Su traducción al castellano es "palabra clave".
    Sin embargo, en el ámbito de la programación, se ha adoptado la costumbre de referirse a ellas como palabras reservadas. Aunque en este documento se ha optado por mantener la traducción correcta, es importante que el lector conozca que en la jerga de la programación se les llama palabras reservadas

  2. Una subrutina en Python es un bloque de código que realiza una tarea específica y puede ser llamada y ejecutada desde otros lugares en el programa.
    En Python, las subrutinas se implementan de igual manera que las funciones.
    La diferencia principal entre una función y una subrutina es que una función retorna (return en inglés) un valor (resultado), mientras que una subrutina no devuelve nada.