🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

【Copiar y Pegar para Ejecutar】Curso Magistral para Crear Funciones en Python: Desde lo Básico de `def` hasta Usos Avanzados

Para ejecutar Python desde el símbolo del sistema o PowerShell en tu PC, necesitas descargar e instalar Python.
Si aún no lo has hecho, consulta el artículo Instalación de Python y configuración del entorno de desarrollo para instalar Python.

Al crear sitios web o desarrollar aplicaciones, ¿alguna vez te has encontrado pensando, "un momento, ya he escrito este proceso antes..."? Es algo muy común. La solución para este "proceso repetitivo" es lo que presentamos hoy: las "funciones" de Python.

En este artículo, explicaremos desde la forma básica de crear funciones en Python hasta algunas técnicas avanzadas muy útiles, todo ello acompañado de numerosos ejemplos de código para que incluso los principiantes en programación puedan seguirlo con confianza. La palabra clave es "copiar y pegar para ejecutar". Dejemos de lado la teoría complicada por ahora y ¡experimentemos primero la alegría de ver funcionar nuestro propio código!


Para empezar, ¿qué es una "función" en Python?

La forma más fácil de imaginar una función podría ser una "máquina expendedora".

De esta manera, una función es un "conjunto de tareas (procesos) específicos". Una vez que la creas, puedes llamarla una y otra vez para realizar el mismo trabajo, como si pulsaras un botón. Esto tiene la gran ventaja de hacer que tu código sea más corto, simple y fácil de modificar.

En Python, estas funciones se crean usando una instrucción llamada def (la instrucción def). ¡Veamos cómo crearlas en detalle!


【Lo Básico】Cómo Crear y Usar Funciones en Python

Comencemos por lo más básico. Crearemos la función más simple posible, una sin argumentos ni valor de retorno.

1. Sintaxis Básica: Definiendo una Función con `def`

Para crear una función, se empieza escribiendo def nombre_funcion(): y, en la siguiente línea, se sangra (indenta) para escribir el contenido del proceso. Aquí, crearemos una función simple llamada say_hello que simplemente muestra "¡Hola!".

# 1. Definir la función
def say_hello():
  print("¡Hola!")

# 2. Llamar a la función
say_hello()

Resultado de la ejecución:

¡Hola!

El punto clave es que no ocurre nada con solo definir (crear) la función. Solo cuando escribes el nombre de la función seguido de paréntesis, como say_hello(), la función es llamada y el código de su interior se ejecuta.


2. Usemos Argumentos

A continuación, probemos a usar "argumentos", que serían el "dinero" en nuestra analogía de la máquina expendedora. Al usar argumentos, puedes pasar información a la función desde el exterior y cambiar lo que hace.

Aquí, crearemos una función llamada greet que devuelve un saludo para un nombre dado. Cuando pones un nombre de variable (en este caso, name) dentro de los paréntesis, como def greet(name):, se convierte en un argumento.

# Definir una función que acepta un argumento
def greet(name):
  print(f"¡Hola, {name}!")

# Pasar valores específicos como argumentos al llamar a la función
greet("García")
greet("Rodríguez")

Resultado de la ejecución:

¡Hola, García!
¡Hola, Rodríguez!

Como puedes ver, simplemente cambiando el valor pasado como argumento, pudimos cambiar de forma flexible el resultado de la misma función.


3. Obtengamos Resultados con un Valor de Retorno

Ahora es el turno del "refresco" de la máquina expendedora: el "valor de retorno". Se utiliza cuando quieres devolver un resultado calculado dentro de la función al lugar desde donde se llamó. Para devolver un valor, se utiliza la instrucción return.

Creemos una función add que reciba dos números y devuelva su suma.

# Una función que toma dos argumentos y devuelve su suma
def add(a, b):
  total = a + b
  return total # Usa la instrucción return para devolver el resultado

# Llama a la función y guarda el valor de retorno en la variable 'result'
result = add(5, 3)

print(f"El resultado de 5 + 3 es {result}.")

Resultado de la ejecución:

El resultado de 5 + 3 es 8.

Cuando se ejecuta add(5, 3), se calcula total = 8 dentro de la función, y el valor 8 es devuelto por la instrucción return al lugar donde se llamó la función. Luego, ese 8 devuelto se asigna a la variable result.

Al usar return en lugar de simplemente imprimir con print(), puedes usar el resultado del cálculo en otro proceso, lo cual es extremadamente útil.


【Avanzado】Formas más Útiles de Usar Funciones

Ahora que dominas lo básico, veamos algunas formas más avanzadas de usar las funciones. Dominarlas te permitirá escribir código más flexible y eficiente.

1. Argumentos por Defecto: ¿Sin Argumentos? ¡No Hay Problema!

A veces quieres poder omitir un argumento al llamar a una función. Ahí es donde los "argumentos por defecto" son útiles. Estableces un valor por defecto de antemano, así: def nombre_funcion(nombre_argumento="valor_por_defecto"):.

# Establecer un valor por defecto "es" para el segundo argumento, lang
def greet_language(name, lang="es"):
  if lang == "ja":
    message = f"{name}さん、こんにちは!" # Hola, {name}! en Japonés
  elif lang == "en":
    message = f"Hello, {name}!"
  elif lang == "es":
    message = f"¡Hola, {name}!"
  else:
    message = "Idioma no especificado."
  
  return message

# Omitir el segundo argumento (se usará el valor por defecto "es")
print(greet_language("Sato"))

# Especificar el segundo argumento
print(greet_language("John", lang="en"))

Resultado de la ejecución:

¡Hola, Sato!
Hello, John!

Si omites el argumento como en `greet_language("Sato")`, se trata automáticamente como `lang="es"`, por lo que se muestra un saludo en español. ¡Muy práctico!


2. Argumentos de Palabra Clave: No te Preocupes por el Orden

Cuando una función tiene muchos argumentos, puede ser difícil recordar su orden. Si usas "argumentos de palabra clave", puedes especificarlos en el formato `nombre_argumento=valor`, así que no tienes que preocuparte por el orden.

def create_user_profile(name, age, country):
  return f"Nombre: {name}, Edad: {age}, País: {country}"

# Especificar argumentos en orden
profile1 = create_user_profile("López", 30, "España")
print(profile1)

# Usar argumentos de palabra clave para especificar en un orden diferente
profile2 = create_user_profile(country="México", name="Emily", age=25)
print(profile2)

Resultado de la ejecución:

Nombre: López, Edad: 30, País: España
Nombre: Emily, Edad: 25, País: México

El uso de argumentos de palabra clave también tiene el beneficio de hacer tu código más legible, ya que es inmediatamente evidente qué valor se está pasando a qué argumento.


【Sección Práctica】Ejecuta una Función de Python en tu Navegador

Finalmente, ¡probemos a ejecutar Python usando solo un archivo HTML, algo con lo que los creadores web ya están familiarizados! Copia todo el bloque de código de abajo, guárdalo con un nombre como `index.html` y ábrelo en tu navegador. Tendrás una aplicación web simple que devuelve un saludo basado en el texto que introduzcas.

Esto utiliza una tecnología llamada PyScript para ejecutar código Python directamente dentro de un archivo HTML. No se requiere ninguna configuración complicada. ¡Por favor, experimenta por ti mismo el "copiar y pegar para ejecutar"!

<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>¡Experimenta Funciones de Python en el Navegador!</title>
  <!-- Cargando PyScript -->
  <link rel="stylesheet" href="https://pyscript.net/releases/2024.1.1/core.css">
  <script type="module" src="https://pyscript.net/releases/2024.1.1/core.js"></script>
  <style>
    body { font-family: sans-serif; padding: 2em; line-height: 1.6; }
    input { padding: 8px; font-size: 1em; }
    button { padding: 8px 16px; font-size: 1em; cursor: pointer; }
    #output { margin-top: 1em; font-weight: bold; font-size: 1.2em; color: #2c3e50; }
  </style>
</head>
<body>

  <h1>Generador de Saludos</h1>
  <p>Introduce tu nombre y pulsa el botón.</p>

  <input id="user-name" type="text" placeholder="Introduce tu nombre...">
  <button py-click="generate_greeting">Generar Saludo</button>
  
  <div id="output"></div>

  <py-script>
    from pyscript import document

    # ★Define la función de Python aquí★
    def create_greeting_message(name):
      # Si el nombre está vacío, devuelve un saludo por defecto
      if not name:
        return "¡Por favor, introduce tu nombre!"
      # Si hay un nombre, devuelve un saludo usando ese nombre
      return f"¡Bienvenido al mundo web, {name}!"

    # Función a ejecutar cuando se hace clic en el botón
    def generate_greeting(event):
      # Obtener la entrada del usuario desde el elemento input
      input_element = document.querySelector("#user-name")
      user_name = input_element.value
      
      # Crear un mensaje de saludo usando la función definida arriba
      message = create_greeting_message(user_name)
      
      # Escribir el mensaje en el elemento div para mostrarlo
      output_div = document.querySelector("#output")
      output_div.innerText = message
  </py-script>

</body>
</html>

Puntos a Tener en Cuenta al Usar Funciones

Las funciones son muy poderosas, pero hay algunos puntos a tener en cuenta para usarlas correctamente.

  1. ¡La sangría es vital!
    En Python, la sangría significa un bloque de código. El proceso después de def siempre debe estar sangrado con el mismo número de espacios (normalmente cuatro). Si la sangría es incorrecta, causará un error.
  2. Usa nombres de función claros
    El nombre de una función debe dejar claro de inmediato lo que hace la función. Por ejemplo, son comunes los nombres que incluyen un verbo, como add o create_user_profile. Malos ejemplos son nombres como function1 o proc que no revelan su propósito.
  3. Sé consciente del ámbito de las variables
    Una variable definida dentro de una función (una variable local) no puede ser usada fuera de esa función. Este es un mecanismo importante para evitar que las funciones afecten involuntariamente al mundo exterior.

Veamos un ejemplo de ámbito de variable.

def my_function():
  # local_variable es una variable local válida solo dentro de my_function
  local_variable = "Esta es una variable dentro de la función"
  print(local_variable)

# Ejecutar la función
my_function()

# Intentar acceder a local_variable desde fuera de la función causa un error
# print(local_variable) # NameError: name 'local_variable' is not defined

Resultado de la ejecución:

Esta es una variable dentro de la función

Si descomentas la última línea, print(local_variable), y la ejecutas, ocurrirá un NameError. Esto se debe a que local_variable no existe fuera de la función. Esta propiedad de tener un "ámbito de influencia limitado" es lo que hace que el código sea seguro y fácil de gestionar.


Conclusión: ¡Domina las Funciones y Lleva tu Programación al Siguiente Nivel!

En este artículo, hemos aprendido todo, desde lo básico hasta las aplicaciones de las funciones de Python, junto con mucho código que puedes copiar y pegar para ejecutar.

Las funciones son uno de los conceptos más básicos y más importantes en la programación. Eliminan la necesidad de escribir el mismo proceso una y otra vez, y mejoran drásticamente la legibilidad general de tu código.

Primero, intenta jugar con el código de ejemplo de este artículo y crear tus propias funciones. Experimentar que "funciona" es el camino más rápido para mejorar.

Una vez que hayas dominado las funciones, ¿por qué no aprender a manejar datos de forma colectiva? El siguiente artículo ofrece una explicación detallada de las "listas" y los "diccionarios", las estructuras de datos más utilizadas en Python.

Siguiente Paso: Aprende sobre Estructuras de Datos de Python como Listas y Diccionarios