Ir al contenido principal

Funciones en Python: cómo llamar y escribir funciones

Descubre cómo escribir funciones en Python reutilizables y eficientes. Domina los parámetros, las sentencias return y temas avanzados como las funciones lambda. Organiza mejor tu código con main() y otras buenas prácticas.
Actualizado 18 may 2026  · 14 min leer
career-building python skills with datacamp banner

Las funciones son una parte esencial del lenguaje de programación Python: es probable que ya te hayas encontrado y utilizado algunas de las muchas funciones fantásticas que vienen integradas en el lenguaje o en su ecosistema de librerías. Sin embargo, como científico/a de datos, necesitarás escribir tus propias funciones constantemente para resolver los problemas que te plantea tu información.

Este tutorial usa sintaxis de Python 3. Todos los ejemplos funcionan en Python 3.10+ y se han actualizado para reflejar las convenciones modernas (f-strings, anotaciones de tipo, parámetros solo posicionales y solo por palabra clave). La versión estable actual es Python 3.14.

Para ejecutar fácilmente por tu cuenta todo el código de ejemplo de este tutorial, puedes crear gratis un cuaderno en DataLab que ya tiene Python preinstalado e incluye todas las muestras de código. Si quieres más práctica escribiendo funciones en Python, echa un vistazo a este ejercicio práctico de DataCamp o prueba nuestro curso Python Data Science Toolbox.

Funciones en Python

En programación, usas funciones para agrupar un conjunto de instrucciones que quieres reutilizar o que, por su complejidad, conviene encapsular en un subprograma y llamar cuando haga falta. Es decir, una función es un bloque de código escrito para realizar una tarea concreta. Para llevar a cabo esa tarea, la función puede necesitar o no varios datos de entrada. Cuando termina, puede devolver o no uno o varios valores.

En Python hay tres tipos de funciones:

  • Funciones integradas, como help() para pedir ayuda, min() para obtener el mínimo, print() para imprimir un objeto en la terminal… Puedes ver un resumen con más de estas funciones aquí.

  • Funciones definidas por el usuario (UDF), que son funciones que creas tú para ayudarte; y

  • Funciones anónimas, también llamadas funciones lambda porque no se declaran con la palabra clave estándar def.

Funciones vs. métodos

Un método es una función que forma parte de una clase. Se accede a él con una instancia u objeto de esa clase. Una función no tiene esta restricción: se refiere a una función independiente. Esto significa que todos los métodos son funciones, pero no todas las funciones son métodos.

Fíjate en este ejemplo, donde primero defines una función plus() y luego una clase Summation con un método sum():

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGEgZnVuY3Rpb24gYHBsdXMoKWBcbmRlZiBwbHVzKGEsYik6XG4gIHJldHVybiBhICsgYlxuICBcbiMgQ3JlYXRlIGEgYFN1bW1hdGlvbmAgY2xhc3NcbmNsYXNzIFN1bW1hdGlvbihvYmplY3QpOlxuICBkZWYgc3VtKHNlbGYsIGEsIGIpOlxuICAgIHNlbGYuY29udGVudHMgPSBhICsgYlxuICAgIHJldHVybiBzZWxmLmNvbnRlbnRzICJ9

Si ahora quieres llamar al método sum() que forma parte de la clase Summation, primero necesitas definir una instancia u objeto de esa clase. Así que vamos a definir ese objeto:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIHBsdXMoYSxiKTpcbiAgcmV0dXJuIGEgKyBiXG4gIFxuY2xhc3MgU3VtbWF0aW9uKG9iamVjdCk6XG4gIGRlZiBzdW0oc2VsZiwgYSwgYik6XG4gICAgc2VsZi5jb250ZW50cyA9IGEgKyBiXG4gICAgcmV0dXJuIHNlbGYuY29udGVudHMgIiwic2FtcGxlIjoiIyBJbnN0YW50aWF0ZSBgU3VtbWF0aW9uYCBjbGFzcyB0byBjYWxsIGBzdW0oKWBcbnN1bUluc3RhbmNlID0gU3VtbWF0aW9uKClcbnN1bUluc3RhbmNlLnN1bSgxLDIpIn0=

Recuerda que esta instanciación no es necesaria cuando quieres llamar a la función plus(). ¡Podrías ejecutar plus(1,2) en el bloque de código de DataCamp Light sin ningún problema!

Parámetros vs. argumentos

Los parámetros son los nombres que usas al definir una función o método y en los que se mapean los argumentos. En otras palabras, los argumentos son los valores que pasas a cualquier llamada de función o método, mientras que el código de la función o método se refiere a ellos por sus nombres de parámetro.

Fíjate en el siguiente ejemplo y vuelve al bloque de DataCamp Light de arriba: pasas dos argumentos al método sum() de la clase Summation, aunque previamente definiste tres parámetros, concretamente self, a y b.

¿Qué pasó con self?

El primer argumento de todo método de clase es siempre una referencia a la instancia actual de la clase, que en este caso es Summation. Por convención, este argumento se llama self.

Esto significa que en este caso no pasas explícitamente la referencia a self porque self es el nombre del parámetro para un argumento que se pasa de forma implícita y que hace referencia a la instancia mediante la que se invoca el método. Se inserta automáticamente en la lista de argumentos.

Cómo definir una función: funciones definidas por el usuario (UDF)

Los cuatro pasos para definir una función en Python son los siguientes:

  1. Usa la palabra clave def para declarar la función y, a continuación, el nombre de la función.

  2. Añade parámetros a la función: deben ir entre paréntesis. Termina la línea con dos puntos.

  3. Añade las sentencias que debe ejecutar la función.

  4. Termina tu función con una sentencia return si debe devolver algo. Sin return, tu función devolverá el objeto None.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsbygpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpIFxuICByZXR1cm4gIn0=

Por supuesto, tus funciones se irán complicando: puedes añadir bucles for, control de flujo… y mucho más para afinarlas:

def hello():
    name = input("Enter your name: ")
    if name:
        print(f"Hello {name}")
    else:
        print("Hello World")

hello()

En la función anterior, pides al usuario que introduzca un nombre. Si no se proporciona, la función imprimirá “Hello World”. En caso contrario, verá un saludo personalizado.

Recuerda también que puedes definir uno o más parámetros de función para tu UDF. Aprenderás más sobre esto en la sección de argumentos de funciones. Además, tu función puede devolver uno o varios valores, o ninguno.

Aprende Python desde cero

Domina Python para la ciencia de datos y adquiere habilidades muy demandadas.
Empieza a aprender gratis

La sentencia return

Como estás imprimiendo algo en tu UDF hello(), en realidad no necesitas devolverlo. No habrá ninguna diferencia entre la función anterior y esta otra:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsb19ub3JldHVybigpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpICJ9

Sin embargo, si quieres seguir trabajando con el resultado de tu función y probar algunas operaciones sobre él, necesitarás usar la sentencia return para devolver realmente un valor, como una cadena, un entero, etc. Considera este caso: hello() devuelve la cadena "hello", mientras que la función hello_noreturn() devuelve None:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsbygpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpIFxuICByZXR1cm4oXCJoZWxsb1wiKVxuXG5kZWYgaGVsbG9fbm9yZXR1cm4oKTpcbiAgcHJpbnQoXCJIZWxsbyBXb3JsZFwiKVxuICBcbiMgTXVsdGlwbHkgdGhlIG91dHB1dCBvZiBgaGVsbG8oKWAgd2l0aCAyIFxuaGVsbG8oKSAqIDJcblxuIyAoVHJ5IHRvKSBtdWx0aXBseSB0aGUgb3V0cHV0IG9mIGBoZWxsb19ub3JldHVybigpYCB3aXRoIDIgXG5oZWxsb19ub3JldHVybigpICogMiJ9

La segunda función te da un error porque no puedes realizar operaciones con None. Obtendrás un TypeError que dice que no se puede hacer la operación de multiplicación entre NoneType (el None que devuelve hello_noreturn()) e int (2).

Truco: las funciones salen inmediatamente cuando encuentran una sentencia return, aunque eso signifique que no vayan a devolver nada:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBydW4oKTpcbiAgZm9yIHggaW4gcmFuZ2UoMTApOlxuICAgICBpZiB4ID09IDI6XG4gICAgICAgcmV0dXJuXG4gIHByaW50KFwiUnVuIVwiKVxuICBcbnJ1bigpIn0=

Otra cosa a tener en cuenta al trabajar con return es que puedes usarlo para devolver múltiples valores. Para ello, recurres a las tuplas.

Recuerda que esta estructura de datos es muy similar a una lista: puede contener varios valores. Sin embargo, las tuplas son inmutables, lo que significa que no puedes modificar los valores que almacena. Se construyen con paréntesis (). Puedes desempaquetar una tupla en varias variables usando la coma con el operador de asignación.

Revisa el siguiente ejemplo para ver cómo tu función puede devolver varios valores:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgXG5kZWYgcGx1cyhhLGIpOlxuICBzdW0gPSBhICsgYlxuICByZXR1cm4gKHN1bSwgYSlcblxuIyBDYWxsIGBwbHVzKClgIGFuZCB1bnBhY2sgdmFyaWFibGVzIFxuc3VtLCBhID0gcGx1cygzLDQpXG5cbiMgUHJpbnQgYHN1bSgpYFxucHJpbnQoc3VtKSJ9

Nota: la sentencia return return sum, a tendría el mismo resultado que return (sum, a): en el primer caso, en realidad se empaquetan sum y a en una tupla por debajo.

Cómo llamar a una función

En las secciones anteriores ya has visto muchos ejemplos de cómo llamar a una función. Llamar a una función significa ejecutar la función que has definido, ya sea directamente desde el intérprete de Python o desde otra función (como verás en la sección “Funciones anidadas”).

Llama a tu nueva función hello() simplemente ejecutando hello(), como en el bloque de DataCamp Light de abajo:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiJoZWxsbygpIn0=

Cómo añadir docstrings a una función de Python

Otro aspecto esencial al escribir funciones en Python: los docstrings. Describen qué hace tu función, por ejemplo, los cálculos que realiza o qué devuelve. Estas descripciones sirven como documentación para que cualquiera que lea el docstring entienda la función sin tener que seguir todo el código de la definición.

Los docstrings de función se colocan en la línea inmediata después del encabezado de la función y van entre comillas triples. Un docstring adecuado para tu función hello() sería: ‘Imprime “Hello World”’.

def hello() -> None:
    """Prints "Hello World"."""
    print("Hello World")

Nota: los docstrings pueden ser más extensos que el ejemplo mostrado. Si quieres profundizar, lo mejor es revisar repositorios en GitHub de librerías de Python como scikit-learn o pandas, donde encontrarás muchos ejemplos.

Anotaciones de tipo

Muy relacionadas con los docstrings —y casi igual de comunes en el Python moderno— están las anotaciones de tipo. Desde Python 3.5, puedes anotar los parámetros de tu función y su valor de retorno con los tipos esperados. Aquí tienes el ejemplo más simple:

def plus(a: int, b: int) -> int:
    return a + b

El : int tras cada parámetro indica “esto debería ser un entero”, y el -> int tras los paréntesis indica “esta función devuelve un entero”. Python no hace cumplir estas anotaciones en tiempo de ejecución —aún puedes pasar una cadena a plus() y no se quejará hasta que algo falle. Pero herramientas como mypy, pyright y los comprobadores de tipos integrados en editores como VS Code y PyCharm usan estas pistas para detectar errores antes de que ejecutes tu código.

Para tipos más complejos, puedes usar genéricos integrados directamente (Python 3.9+) o importar desde el módulo typing:

def greet(names: list[str]) -> None:
    for name in names:
        print(f"Hello {name}")

def find_user(user_id: int) -> dict | None:
    # returns the user dict, or None if not found
    ...
Las anotaciones de tipo son opcionales, pero se consideran una buena práctica para cualquier función que planees reutilizar, compartir o volver a tocar dentro de seis meses. Funcionan como documentación verificable por herramientas: tu IDE completará automáticamente en base a ellas, detectará errores tipográficos y te avisará cuando pases un tipo incorrecto.

Argumentos de funciones en Python

Antes has visto la diferencia entre parámetros y argumentos. En resumen, los argumentos son los valores que pasas en una llamada a función o método, mientras que el código se refiere a ellos por sus nombres de parámetro. Las UDF en Python pueden aceptar cuatro tipos de argumentos:

  • Argumentos por defecto
  • Argumentos obligatorios
  • Argumentos por palabra clave
  • Número variable de argumentos

Argumentos por defecto

Son aquellos que toman un valor predeterminado si no se pasa ningún valor durante la llamada. Puedes asignar ese valor con el operador =, como en este ejemplo:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIgPSAyKTpcbiAgcmV0dXJuIGEgKyBiXG4gIFxuIyBDYWxsIGBwbHVzKClgIHdpdGggb25seSBgYWAgcGFyYW1ldGVyXG5wbHVzKGE9MSlcblxuIyBDYWxsIGBwbHVzKClgIHdpdGggYGFgIGFuZCBgYmAgcGFyYW1ldGVyc1xucGx1cyhhPTEsIGI9MykifQ==

Argumentos obligatorios

Como su nombre sugiere, son los que tienen que estar. Deben pasarse durante la llamada y en el orden correcto, como en el ejemplo:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIHdpdGggcmVxdWlyZWQgYXJndW1lbnRzXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYSArIGIifQ==

Necesitas argumentos que se asignen a los parámetros a y b para llamar a la función sin errores. Si intercambias a y b, el resultado no cambiará, pero sí podría hacerlo si modificas plus() así:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIHdpdGggcmVxdWlyZWQgYXJndW1lbnRzXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYS9iIn0=

Argumentos por palabra clave

Si quieres asegurarte de que llamas a los parámetros en el orden correcto, puedes usar argumentos por palabra clave en la llamada. Sirven para identificar los valores por el nombre del parámetro. Tomemos el ejemplo anterior para verlo más claro:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYSArIGJcbiAgXG4jIENhbGwgYHBsdXMoKWAgZnVuY3Rpb24gd2l0aCBwYXJhbWV0ZXJzIFxucGx1cygyLDMpXG5cbiMgQ2FsbCBgcGx1cygpYCBmdW5jdGlvbiB3aXRoIGtleXdvcmQgYXJndW1lbnRzXG5wbHVzKGE9MSwgYj0yKSJ9

Observa que, usando argumentos por palabra clave, también puedes cambiar el orden de los parámetros y seguir obteniendo el mismo resultado al ejecutar la función:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYSArIGJcbiAgXG4jIENhbGwgYHBsdXMoKWAgZnVuY3Rpb24gd2l0aCBrZXl3b3JkIGFyZ3VtZW50c1xucGx1cyhiPTIsIGE9MSkifQ==

Número variable de argumentos

Si no sabes cuántos argumentos vas a pasar a una función, puedes usar la siguiente sintaxis con *args:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uIHRvIGFjY2VwdCBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHNcbmRlZiBwbHVzKCphcmdzKTpcbiAgcmV0dXJuIHN1bShhcmdzKVxuXG4jIENhbGN1bGF0ZSB0aGUgc3VtXG5wbHVzKDEsNCw1KSJ9

El asterisco (*) va antes del nombre de la variable que almacenará los valores de todos los argumentos variables sin palabra clave. Fíjate en que también podrías haber pasado *varint, *var_int_args o cualquier otro nombre a la función plus().

Truco: prueba a sustituir *args por otro nombre que incluya el asterisco. ¡Verás que el código sigue funcionando!

Verás que la función anterior usa la función integrada sum() de Python para sumar todos los argumentos que se pasan a plus().

Variables globales vs. locales

En general, las variables definidas dentro del cuerpo de una función tienen alcance local y las que se definen fuera tienen alcance global. Eso significa que las variables locales se definen dentro de un bloque de función y solo se pueden usar dentro de esa función, mientras que las globales pueden ser accedidas por todas las funciones de tu script:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgR2xvYmFsIHZhcmlhYmxlIGBpbml0YFxuaW5pdCA9IDFcblxuIyBEZWZpbmUgYHBsdXMoKWAgZnVuY3Rpb24gdG8gYWNjZXB0IGEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50c1xuZGVmIHBsdXMoKmFyZ3MpOlxuICAjIExvY2FsIHZhcmlhYmxlIGBzdW0oKWBcbiAgdG90YWwgPSAwXG4gIGZvciBpIG4gYXJnczoXG4gICAgdG90YWwgKz0gaVxuICByZXR1cm4gdG90YWxcbiAgXG4jIEFjY2VzcyB0aGUgZ2xvYmFsIHZhcmlhYmxlXG5wcmludChcInRoaXMgaXMgdGhlIGluaXRpYWxpemVkIHZhbHVlIFwiICsgc3RyKGluaXQpKVxuXG4jIChUcnkgdG8pIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVcbnByaW50KFwidGhpcyBpcyB0aGUgc3VtIFwiICsgc3RyKHRvdGFsKSkifQ==

Verás que obtendrás un NameError que dice que name 'total' is not defined cuando intentes imprimir la variable local total, definida dentro del cuerpo de la función. La variable init, en cambio, se puede imprimir sin problemas.

Parámetros solo posicionales y solo por palabra clave

Desde Python 3.8, puedes controlar mejor cómo deben pasarse los argumentos usando dos marcadores especiales en la firma de tu función: / y *. Todo lo que está antes de / solo puede pasarse posicionalmente; todo lo que está después de * solo puede pasarse por palabra clave.

def greet(name, /, greeting="Hello", *, punctuation="!"):
    print(f"{greeting} {name}{punctuation}")

 Así se ve al llamar a la función:

greet("Alice")                          # funciona
greet("Alice", greeting="Hi")           # funciona
greet("Alice", "Hi", punctuation="?")   # funciona

greet(name="Alice")                     # TypeError: name es solo posicional
greet("Alice", "Hi", "?")               # TypeError: punctuation es solo por palabra clave

¿Por qué querrías esto? Dos razones principales.

Primero, los parámetros solo posicionales te permiten renombrarlos más adelante sin romper el código de nadie: como no se permite usarlos como palabra clave, eres libre de cambiarlos.

Segundo, los parámetros solo por palabra clave obligan a quien llama a ser explícito con lo que pasa, lo que hace las llamadas más legibles cuando tienes varias opciones o ajustes opcionales.

En resumen, es una forma limpia de reforzar la intención.

Funciones anónimas en Python

Las funciones anónimas también se llaman funciones lambda en Python porque, en lugar de declararlas con la palabra clave estándar def, usas la palabra lambda.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRvdWJsZSA9IGxhbWJkYSB4OiB4KjJcblxuZG91YmxlKDUpIn0=

En el bloque de DataCamp Light anterior, lambda x: x*2 es la función anónima o lambda. x es el argumento y x*2 es la expresión o instrucción que se evalúa y devuelve. Lo especial de esta función es que no tiene nombre, a diferencia de los ejemplos que has visto en la primera parte de este tutorial. Si tuvieras que escribir la función anterior como UDF, el resultado sería:

def double(x):
  return x*2

Veamos otro ejemplo de función lambda con dos argumentos:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgYHN1bSgpYCBsYW1iZGEgZnVuY3Rpb25cbnN1bSA9IGxhbWJkYSB4LCB5OiB4ICsgeTtcblxuIyBDYWxsIHRoZSBgc3VtKClgIGFub255bW91cyBmdW5jdGlvblxuc3VtKDQsNSlcblxuIyBcIlRyYW5zbGF0ZVwiIHRvIGEgVURGXG5kZWYgc3VtKHgsIHkpOlxuICByZXR1cm4geCt5In0=

Usas funciones anónimas cuando necesitas una función sin nombre durante un corto periodo y que se crea en tiempo de ejecución. Contextos típicos: cuando trabajas con filter(), map() y reduce():

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImZyb20gZnVuY3Rvb2xzIGltcG9ydCByZWR1Y2VcblxubXlfbGlzdCA9IFsxLDIsMyw0LDUsNiw3LDgsOSwxMF1cblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYGZpbHRlcigpYFxuZmlsdGVyZWRfbGlzdCA9IGxpc3QoZmlsdGVyKGxhbWJkYSB4OiAoeCoyID4gMTApLCBteV9saXN0KSlcblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYG1hcCgpYFxubWFwcGVkX2xpc3QgPSBsaXN0KG1hcChsYW1iZGEgeDogeCoyLCBteV9saXN0KSlcblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYHJlZHVjZSgpYFxucmVkdWNlZF9saXN0ID0gcmVkdWNlKGxhbWJkYSB4LCB5OiB4K3ksIG15X2xpc3QpXG5cbnByaW50KGZpbHRlcmVkX2xpc3QpXG5wcmludChtYXBwZWRfbGlzdClcbnByaW50KHJlZHVjZWRfbGlzdCkifQ==

La función filter() filtra, como su nombre indica, la lista de entrada original my_list según el criterio >10. Con map(), en cambio, aplicas una función a todos los elementos de my_list. En este caso, multiplicas todos por 2.

Ten en cuenta que la función reduce() forma parte de la librería functools. La aplicas de forma acumulativa a los elementos de my_list, de izquierda a derecha, y reduces la secuencia a un único valor, 55 en este caso.

Usar main() como función en Python

Si tienes experiencia con otros lenguajes como Java, sabrás que la función main es necesaria para ejecutar funciones. Como has visto arriba, en Python no es estrictamente necesario. Aun así, incluir una función main() en tu programa puede ayudarte a estructurar el código de forma lógica: todos los componentes más importantes quedan contenidos dentro de esa función.

Puedes definir fácilmente una función main() y llamarla como has hecho con el resto de funciones anteriores:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiIjIERlZmluZSBgbWFpbigpYCBmdW5jdGlvblxuZGVmIG1haW4oKTpcbiAgaGVsbG8oKVxuICBwcmludChcIlRoaXMgaXMgYSBtYWluIGZ1bmN0aW9uXCIpXG5cbm1haW4oKSJ9

Sin embargo, tal y como está ahora, el código de tu main() se ejecutará cuando lo importes como módulo. Para evitarlo, llama a main() solo cuando __name__ == '__main__'.

Eso significa que el bloque anterior queda así:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiIjIERlZmluZSBgbWFpbigpYCBmdW5jdGlvblxuZGVmIG1haW4oKTpcbiAgaGVsbG8oKVxuICBwcmludChcIlRoaXMgaXMgYSBtYWluIGZ1bmN0aW9uXCIpXG4gIFxuIyBFeGVjdXRlIGBtYWluKClgIGZ1bmN0aW9uIFxuaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzpcbiAgICBtYWluKCkifQ==

Nota: además de __main__, también existe la función __init__, que inicializa una instancia de una clase u objeto. En pocas palabras, actúa como constructor o inicializador y se llama automáticamente cuando creas una nueva instancia. Con esa función, el nuevo objeto se asigna al parámetro self, que ya viste en este tutorial. Observa este ejemplo:

class Dog:
    """A simple Dog class.

    Args:
        legs: Number of legs so that the dog can walk.
        color: The color of the fur.
    """

    def __init__(self, legs: int, color: str) -> None:
        self.legs = legs
        self.color = color

    def bark(self) -> str:
        return "bark" * 2

if __name__ == "__main__":
    dog = Dog(4, "brown")
    print(dog.bark())

Sigue practicando funciones en Python

¡Enhorabuena! Has llegado al final de este breve tutorial sobre funciones en Python. Si quieres repasar otros conceptos básicos de programación en Python, no te pierdas Data Types for Data Science, un curso en el que consolidarás y practicarás tus conocimientos de listas, diccionarios, tuplas, conjuntos y fechas y horas.

Certifícate en el puesto de Científico de Datos de tus sueños

Nuestros programas de certificación te ayudan a destacar y a demostrar que tus aptitudes están preparadas para el trabajo a posibles empleadores.

Consigue tu Certificación
Timeline mobile.png

Preguntas frecuentes sobre funciones en Python

¿Qué es una función en Python?

Una función es un bloque de código reutilizable que realiza una tarea concreta. Puede recibir entradas, procesarlas y devolver salidas.

¿Cómo se define una función en Python?

Para definir una función en Python, usa la palabra clave def, ponle nombre, añade parámetros opcionales entre paréntesis, escribe tu código y, opcionalmente, return un valor.

¿Cuál es la diferencia entre funciones y métodos en Python?

Las funciones son independientes, mientras que los métodos pertenecen a clases. Todos los métodos son funciones, pero no todas las funciones son métodos.

¿Qué tipos de funciones hay en Python?

Python tiene funciones integradas (como print()), funciones definidas por el usuario (tus creaciones) y funciones anónimas (funciones lambda de corta duración).

¿Cuál es la diferencia entre parámetros y argumentos?

Los parámetros son marcadores de posición en la definición de tu función, y los argumentos son los valores reales que pasas al llamar a la función.

¿Qué es una función lambda?

Una función lambda es una función sin nombre y de una sola línea para tareas rápidas.

¿Por qué usar la función __main__?

La función __main__ ayuda a organizar tu código y asegura que ciertas partes solo se ejecuten cuando el script se ejecuta directamente, no al importarlo.

¿Cuál es la diferencia entre variables globales y locales?

Las variables globales funcionan en todas partes, mientras que las locales solo viven dentro de su función.

Temas

Aprende más sobre Python

Curso

Introducción a Python

4 h
6.8M
Domina los fundamentos del análisis de datos con Python en cuatro horas y descubre sus paquetes más usados.
Ver detallesRight Arrow
Iniciar curso
Ver másRight Arrow
Relacionado

Tutorial

Funciones lambda de Python: Guía para principiantes

Aprende sobre las funciones lambda de Python, su finalidad y cuándo utilizarlas. Incluye ejemplos prácticos y mejores prácticas para una implementación eficaz.
Mark Pedigo's photo

Mark Pedigo

Tutorial

Tutorial y ejemplos de funciones y métodos de listas en Python

Aprende sobre las funciones y métodos de las listas de Python. ¡Sigue ahora los ejemplos de código para list() y otras funciones y métodos de Python!
Abid Ali Awan's photo

Abid Ali Awan

Tutorial

Función Print() de Python

Aprenda cómo puede aprovechar la capacidad de una simple función de impresión de Python de varias maneras con la ayuda de ejemplos.
Aditya Sharma's photo

Aditya Sharma

Tutorial

Tutorial de comprensión del diccionario Python

¡Aprende todo sobre la comprensión de diccionarios en Python: cómo puedes utilizarla para crear diccionarios, para sustituir los for loops (anidados) o las funciones lambda por map(), filter() y reduce(), ...!
Sejal Jaiswal's photo

Sejal Jaiswal

Tutorial

Tutorial sobre cómo ejecutar scripts en Python

Aprenda cómo puede ejecutar un script Python desde la línea de comandos, y también cómo puede proporcionar argumentos de línea de comandos a su script.
Aditya Sharma's photo

Aditya Sharma

Tutorial

Función del guión bajo(_) en el tutorial de Python

En este tutorial, vas a aprender sobre los usos del guión bajo(_) en python.
Hafeezul Kareem Shaik's photo

Hafeezul Kareem Shaik

Ver másVer más