Funciones en Python

  Funciones en Python

Las funciones en Python son bloques de código reutilizables que permiten estructurar mejor los programas, evitar la repetición de código y hacerlos más legibles.

La función print() en Python

La función print() en Python es una de las más utilizadas para mostrar información en la consola. Es fundamental para depurar y entender cómo se ejecuta el código.

¿Qué hace print()?

La función print() muestra el valor de sus argumentos en la consola. Esta función es útil para:

  • Mostrar resultados intermedios en el código.
  • Proporcionar retroalimentación al usuario.
  • Depurar errores en el código.

Ejemplos Básicos


Imprimir un solo valor

El código print("¡Hola, Mundo!") utiliza la función print() para mostrar el texto “¡Hola, Mundo!” en la consola.

python
print("¡Hola, Mundo!")

# Salida: ¡Hola, Mundo!

Imprimir múltiples valores

python
nombre = "Urian"
edad = 25
print("Nombre:", nombre, "Edad:", edad)
# Salida: Nombre: Urian, Edad: 25

Formato con f-strings

El formato con f-strings permite insertar variables dentro de cadenas usando {}. Solo necesitas anteponer f a la cadena y colocar el nombre de la variable dentro de las llaves. Es más limpio y legible,

python
nombre = "Brenda"
edad = 18
print(f"Nombre: {nombre}, Edad: {edad}")

# Salida: Nombre: Brenda, Edad: 18
  Conclusión

La función print() es versátil y útil en cualquier nivel de programación en Python. Permite desde lo más básico hasta configuraciones avanzadas para un mayor control de la salida de datos.

La función type() en Python

La función type() en Python es una herramienta fundamental que te permite determinar el tipo de un objeto. Esto es útil para entender qué tipo de datos estás manejando en tu código y para asegurarte de que las operaciones que realizas sean compatibles con esos tipos.

¿Cómo Funciona type()?

La función type() toma un argumento (un objeto) y devuelve el tipo de ese objeto. La sintaxis es simple:

python
type(objeto)

Ejemplos Prácticos


Determinar el Tipo de una Variable

python
numero = 10
print(type(numero))  
# Salida: <class 'int'>

texto = "Hola, mundo"
print(type(texto))   
# Salida: <class 'str'>

Identificar el Tipo de una Lista list

python
mi_lista = [1, 2, 3]
print(type(mi_lista))  

# Salida: <class 'list'>

Verificar el Tipo de un Diccionario dict

python
mi_dict = {"nombre": "Ana", "edad": 30}
print(type(mi_dict))  

# Salida: <class 'dict'>

Comprobar el Tipo de un Conjunto

python
mi_conjunto = {1, 2, 3}
print(type(mi_conjunto))  

# Salida: <class 'set'>

Usar type() en una Tupla tuple

python
mi_tupla = (1, 2, 3)
print(type(mi_tupla))  

# Salida: <class 'tuple'>
  Conclusión

La función type() es una herramienta útil en Python para verificar el tipo de los objetos. Conocer el tipo de datos que estás utilizando puede ayudarte a evitar errores en tu código y a escribir programas más robustos.

Definir funciones con def

Para definir una función en Python, se utiliza la palabra clave def seguida del nombre de la función, paréntesis y dos puntos. Dentro de la función, escribes el bloque de código que deseas ejecutar.

python
def saludar():
      print("Hola, bienvenido a Python")

saludar() es el nombre de la función. Todo lo que está dentro del bloque indentado será ejecutado cuando llames a la función.

Para llamar a la función, simplemente usa su nombre seguido de paréntesis:

python
saludar()

Funciones con parámetros y valores por defecto

Puedes definir funciones que acepten parámetros. Los parámetros permiten que una función reciba valores externos cuando es llamada.

python
def saludar(nombre):
      print(f"Hola, {nombre}")

Aquí, la función saludar() recibe un parámetro llamado nombre que se utiliza dentro del bloque.

Además, puedes definir valores por defecto para los parámetros. Si no se proporciona un valor, la función usará el valor por defecto:

python
def saludar(nombre="amigo"):
  print(f"Hola, {nombre}")

Si llamas a la función sin un argumento, usará el valor “amigo”:

python
saludar()  # Hola, amigo
saludar("Juan")  # Hola, Juan

Retorno de valores con return

Las funciones pueden devolver un valor con la palabra clave return. Esto te permite almacenar el resultado de una función y usarlo más tarde.

python
def sumar(a, b):
  return a + b

Llamar a la función y almacenar el valor devuelto:

python
resultado = sumar(5, 3)
print(resultado)  
# Salida: 8

Argumentos de palabra clave en Python

Los argumentos de palabra clave te permiten especificar valores para los parámetros de una función usando sus nombres. Esto hace que el código sea más claro y te permite pasar los argumentos en cualquier orden, siempre que los nombres coincidan con los definidos en la función.

python
def saludo(nombre, mensaje="Hola", emoji="😊"):
  return f"{mensaje}, {nombre} {emoji}"

# Llamada con argumentos posicionales
resultado1 = saludo("Uriany", "¡Hola!", "🌟")
print(resultado1)  
# Salida: ¡Hola!, Uriany 🌟

# Llamada con argumentos de palabra clave (el orden no importa)
resultado2 = saludo(emoji="🐱", mensaje="¡Buenos días!", nombre="Urian")
print(resultado2)  
# Salida: ¡Buenos días!, Urian 🐱

# Usando valores predeterminados
resultado3 = saludo(nombre="Laura")
print(resultado3)  
# Salida: Hola, Laura 😊
  Nota

Los argumentos de palabra clave deben aparecer después de los argumentos posicionales si se combinan en una misma llamada.

*args y **kwargs en Python

En Python, puedes usar *args y **kwargs para definir funciones que acepten un número variable de argumentos:

  • *args: Captura una lista de argumentos posicionales como una tupla.
  • **kwargs: Captura argumentos nombrados como un diccionario.

Esto permite que una función sea altamente flexible, adaptándose a diferentes cantidades y tipos de argumentos.

Sintaxis

python
def funcion_con_varios_argumentos(*args, **kwargs):
  print("Posicionales (args):", args)   # args es una tupla
  print("Nombrados (kwargs):", kwargs)  # kwargs es un diccionario

Ejemplo básico

python
def funcion_con_varios_argumentos(*args, **kwargs):
  print("Posicionales (args):", args)
  print("Nombrados (kwargs):", kwargs)

funcion_con_varios_argumentos(1, 2, 3, nombre="Urian", edad=30)

# Salida:
# Posicionales (args): (1, 2, 3)
# Nombrados (kwargs): {'nombre': 'Urian', 'edad': 30}

Uso en funciones dinámicas

Esto permite crear funciones que responden dinámicamente a los datos proporcionados:

python
def suma(*args):
  return sum(args)

def describir(**kwargs):
  for clave, valor in kwargs.items():
      print(f"{clave}: {valor}")

# Llamadas
print(suma(1, 2, 3, 4))  # Salida: 10
describir(nombre="Urian", edad=35, pais="Colombia")

# Salida:
# nombre: Urian
# edad: 35
# pais: Colombia
  Nota

Con *args y **kwargs , puedes construir funciones dinámicas, legibles y potentes que se adapten a diferentes escenarios sin necesidad de definir múltiples versiones o sobrecargar funciones.

Scope de las variables (local y global)

El scope (ámbito) de una variable se refiere a la parte del programa donde esa variable es accesible. Hay dos tipos principales de scope en Python:

  Scope

  • Scope local: Las variables definidas dentro de una función solo son accesibles dentro de esa función.
  • Scope global: Las variables definidas fuera de todas las funciones son accesibles desde cualquier parte del programa.

python
def funcion_local():
      mensaje = "Hola desde la función"  # Variable local
      print(mensaje)

  funcion_local()
  # print(mensaje)  # Esto lanzará un error porque "mensaje" no es accesible fuera de la función.

Por otro lado, las variables globales pueden ser usadas dentro de una función, pero no se pueden modificar a menos que uses la palabra clave global:

python
mensaje_global = "Soy global"

  def cambiar_mensaje():
      global mensaje_global  # Usamos la palabra clave 'global'
      mensaje_global = "He sido cambiado desde la función"

  cambiar_mensaje()
  print(mensaje_global)  # He sido cambiado desde la función