Arquitectura de Código: Funciones frente a Métodos

Hasta ahora, has utilizado herramientas como print(), int(), input() y len(). Todas ellas entran en la categoría de funciones. Sin embargo, a partir de este punto, empezarás a interactuar con los métodos. Un método es, en esencia, una clase específica de función: se comporta como una función y se programa de forma muy similar, pero difiere radicalmente en dos aspectos: cómo actúa y cómo se invoca.

Las Funciones: Propiedad del Código Global

Una función independiente no pertenece a ningún tipo de dato en particular; le pertenece a todo el programa en general.

  • Comportamiento: Recibe datos a través de sus argumentos, procesa esa información, puede generar datos nuevos y (generalmente) devuelve un resultado.
  • Invocación Típica: Se escribe el nombre de la función y se le pasan los argumentos entre paréntesis.

2. Los Métodos: Propiedad de los Datos (Objetos)

Un método hace todo lo que hace una función, pero con un superpoder adicional: es capaz de cambiar el estado interno de la entidad que lo invocó.

  • Comportamiento: El método es “propiedad” exclusiva del tipo de dato para el que trabaja. Un método de listas solo funciona con listas; no puedes usarlo en un número entero o en una cadena de texto.
  • Invocación Típica (Sintaxis de Punto): Para llamar a un método, debes escribir primero el nombre del dato (la variable), seguido de un punto (.), el nombre del método y finalmente los paréntesis con sus argumentos.
resultado = datos.metodo(argumento)

Te preguntarás: ¿Por qué estamos hablando de programación orientada a objetos en medio del bloque de listas? Porque para añadir nuevos elementos a una lista existente (hacer que crezca de 5 a 6 elementos, por ejemplo), Python no utiliza una función global a la que le pasas la lista. En su lugar, las listas tienen sus propios métodos integrados de fábrica para alterar su tamaño.

Si intentas invocar estas herramientas como funciones globales, el intérprete de Python no las reconocerá y romperá el programa.

Resumen

  • Las funciones pertenecen al código global y se invocan directamente: funcion(datos).
  • Los métodos pertenecen a un tipo de dato específico y se invocan usando la sintaxis de punto: datos.metodo().
  • Los métodos tienen la capacidad de modificar directamente el estado interno de la variable que los invoca (mutabilidad).