Saltar al contenido principal
InicioSobre PythonAprender Python

Tutorial de funciones de Python

Un tutorial sobre funciones en Python que cubre cómo escribir funciones, cómo invocarlas y mucho más.
Actualizado feb 2024  · 14 min leer
banner de habilidades de python para el desarrollo profesional con DataCamp

Las funciones son una parte esencial del lenguaje de programación Python: es posible que ya hayas encontrado y utilizado algunas de las muchas y fantásticas funciones integradas en el lenguaje Python o que vienen con su ecosistema de bibliotecas. Sin embargo, como científico de datos, tendrás que escribir constantemente tus propias funciones para resolver los problemas que te planteen tus datos.

Run and edit the code from this tutorial online

Open Workspace

Funciones en Python

Las funciones se utilizan en programación para agrupar un conjunto de instrucciones que quieres utilizar repetidamente o que, debido a su complejidad, es mejor que estén contenidas en un subprograma y que se invoquen cuando sea necesario. Eso significa que una función es un fragmento de código escrito para realizar una tarea determinada. Para llevar a cabo esa tarea específica, la función puede necesitar o no varias entradas. Cuando se realiza la tarea, la función puede o no devolver uno o más valores.

En Python hay tres tipos de funciones:

  • Funciones integradas, como help() para pedir ayuda, min() para obtener el valor mínimo, print() para imprimir un objeto en el terminal... Tienes un resumen con más funciones de este tipo aquí.
  • Funciones definidas por el usuario (UDF), que son funciones que los usuarios crean para que les sirvan de ayuda.
  • Funciones anónimas, que también se llaman funciones lambda, porque no se declaran con la palabra clave estándar def.

Funciones frente a métodos

Un método es una función que forma parte de una clase. Accedes a él con una instancia u objeto de la clase. Una función no tiene esta restricción: solo hace referencia a una función independiente. Esto significa que todos los métodos son funciones, pero no todas las funciones son métodos.

Te ponemos un ejemplo en el que primero defines una función plus() y luego una clase Summation con un método sum():

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGEgZnVuY3Rpb24gYHBsdXMoKWBcbmRlZiBwbHVzKGEsYik6XG4gIHJldHVybiBhICsgYlxuICBcbiMgQ3JlYXRlIGEgYFN1bW1hdGlvbmAgY2xhc3NcbmNsYXNzIFN1bW1hdGlvbihvYmplY3QpOlxuICBkZWYgc3VtKHNlbGYsIGEsIGIpOlxuICAgIHNlbGYuY29udGVudHMgPSBhICsgYlxuICAgIHJldHVybiBzZWxmLmNvbnRlbnRzICJ9

Si ahora quieres invocar el método sum(), que forma parte de la clase Summation, primero tienes que definir una instancia u objeto de esa clase. Así pues, definamos dicho objeto:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIHBsdXMoYSxiKTpcbiAgcmV0dXJuIGEgKyBiXG4gIFxuY2xhc3MgU3VtbWF0aW9uKG9iamVjdCk6XG4gIGRlZiBzdW0oc2VsZiwgYSwgYik6XG4gICAgc2VsZi5jb250ZW50cyA9IGEgKyBiXG4gICAgcmV0dXJuIHNlbGYuY29udGVudHMgIiwic2FtcGxlIjoiIyBJbnN0YW50aWF0ZSBgU3VtbWF0aW9uYCBjbGFzcyB0byBjYWxsIGBzdW0oKWBcbnN1bUluc3RhbmNlID0gU3VtbWF0aW9uKClcbnN1bUluc3RhbmNlLnN1bSgxLDIpIn0=

Recuerda que esta instanciación no es necesaria cuando quieras invocar la función plus(). Podrías ejecutar plus(1,2) en el fragmento de código de DataCamp Light sin ningún problema.

Parámetros frente a argumentos

Los parámetros son los nombres utilizados para definir una función o un método, y a los que se asignarán los argumentos. Es decir: los argumentos son las cosas que se suministran a cualquier llamada a una función o método, mientras que el código de la función o método hace referencia a los argumentos por sus nombres de parámetro.

Observa el siguiente ejemplo y vuelve a mirar el fragmento anterior de DataCamp Light: pasas dos argumentos al método sum() de la clase Summation, aunque previamente hayas definido tres parámetros, que son self, a y b.

¿Qué ha pasado 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.

Todo esto significa que en este caso no pasas la referencia a self porque self es el nombre de parámetro de un argumento pasado implícitamente que hace referencia a la instancia con la que se invoca un método. Se inserta implícitamente 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. Utiliza la palabra clave def para declarar la función y escribe a continuación el nombre de la función.
  2. Añade parámetros a la función: deben estar dentro del paréntesis de la función. Termina la línea con dos puntos.
  3. Añade sentencias que deban ejecutar las funciones.
  4. Termina tu función con una sentencia de devolución si la función debe producir algún resultado. Sin la sentencia de devolución, tu función devolverá un objeto None.
eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsbygpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpIFxuICByZXR1cm4gIn0=

Por supuesto, tus funciones se harán más complejas a medida que avances: puedes añadirle bucles for, control de flujo y más cosas para hacerlas más precisas.

def hello():
  name = str(input("Enter your name: "))
  if name:
    print ("Hello " + str(name))
  else:
    print("Hello World") 
  return 
  
hello()

En la función anterior, pides al usuario que dé un nombre. Si no se da ningún nombre, la función imprimirá "Hello World". De lo contrario, el usuario obtendrá una respuesta personalizada de "Hello".

Recuerda que también que puedes definir uno o más parámetros de función para tu UDF. Aprenderás más sobre esto cuando abordes la sección Argumentos de las funciones. Además, puedes o no devolver uno o varios valores como resultado de tu función.

Empieza a aprender Python gratis

Python Data Science Toolbox (Part 1)

BeginnerSkill Level
3 hr
401.4K learners
Learn the art of writing your own functions in Python, as well as key concepts like scoping and error handling.

La return sentencia

Ten en cuenta que, 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:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsb19ub3JldHVybigpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpICJ9

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

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsbygpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpIFxuICByZXR1cm4oXCJoZWxsb1wiKVxuXG5kZWYgaGVsbG9fbm9yZXR1cm4oKTpcbiAgcHJpbnQoXCJIZWxsbyBXb3JsZFwiKVxuICBcbiMgTXVsdGlwbHkgdGhlIG91dHB1dCBvZiBgaGVsbG8oKWAgd2l0aCAyIFxuaGVsbG8oKSAqIDJcblxuIyAoVHJ5IHRvKSBtdWx0aXBseSB0aGUgb3V0cHV0IG9mIGBoZWxsb19ub3JldHVybigpYCB3aXRoIDIgXG5oZWxsb19ub3JldHVybigpICogMiJ9

La segunda función te da un error porque no puedes realizar ninguna operación con None. Obtendrás TypeError, que dice que no puedes hacer la operación de multiplicación para NoneType (None que es el resultado de hello_noreturn()) y int (2).

Consejo Las funciones salen inmediatamente cuando se encuentran con una sentencia return, aunque eso signifique que no devolverán ningún valor:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBydW4oKTpcbiAgZm9yIHggaW4gcmFuZ2UoMTApOlxuICAgICBpZiB4ID09IDI6XG4gICAgICAgcmV0dXJuXG4gIHByaW50KFwiUnVuIVwiKVxuICBcbnJ1bigpIn0=

Otra cosa que merece la pena mencionar cuando trabajas con la sentencia return es el hecho de que puedes utilizarla para devolver varios valores. Para ello, utiliza 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 ninguna cantidad almacenada en ellas. Las construyes con ayuda de dobles paréntesis (). Puedes descomponer tuplas en varias variables con la ayuda de la coma y el operador de asignación.

Echa un vistazo al siguiente ejemplo para entender cómo puede devolver tu función varios valores:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgXG5kZWYgcGx1cyhhLGIpOlxuICBzdW0gPSBhICsgYlxuICByZXR1cm4gKHN1bSwgYSlcblxuIyBDYWxsIGBwbHVzKClgIGFuZCB1bnBhY2sgdmFyaWFibGVzIFxuc3VtLCBhID0gcGx1cygzLDQpXG5cbiMgUHJpbnQgYHN1bSgpYFxucHJpbnQoc3VtKSJ9

Observa que la sentencia return return sum, a tendría el mismo resultado que return (sum, a): la primera en realidad incluye sum y a en una tupla.

Cómo invocar una función

En las secciones anteriores ya has visto muchos ejemplos de cómo puedes invocar una función. Invocar una función significa ejecutar la función que has definido, ya sea directamente desde el prompt de Python o a través de otra función (como verás en la sección "Funciones anidadas").

Invoca tu función recién definida hello() simplemente ejecutando hello(), igual que en el fragmento de DataCamp Light que aparece a continuación:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiJoZWxsbygpIn0=

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

Otro aspecto esencial de la escritura de funciones en Python: las docstrings. Las Docstrings describen lo que hace tu función, como los cálculos que realiza o los valores que devuelve. Estas descripciones sirven como documentación de tu función para que cualquiera que lea la docstring de tu función entienda lo que hace tu función, sin tener que ver todo el código de la definición de la función.

Las docstrings de las funciones se colocan en la línea inmediatamente posterior a la cabecera de la función y entre comillas triples. Una Docstring apropiada para tu función hello() es ‘Prints “Hello World”’.

def hello():
"""Prints "Hello World".

Returns:
    None
"""
  print("Hello World") 
  return 

Ten en cuenta que las docstrings pueden ser más extensas que la que se da aquí como ejemplo. Si quieres estudiar las docstrings con más detalle, lo mejor es que consultes algunos repositorios de Github de bibliotecas de Python como scikit-learn o pandas, donde encontrarás un montón de ejemplos.

Argumentos de función en Python

Antes has aprendido la diferencia entre parámetros y argumentos. En resumen, los argumentos son las cosas que se suministran a cualquier llamada a una función o método, mientras que el código de la función o método hace referencia a los argumentos por sus nombres de parámetro. Hay cuatro tipos de argumentos que pueden usar las UDF de Python:

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

Argumentos por defecto

Los argumentos por defecto son aquellos que adoptan un valor por defecto si no se pasa ningún valor de argumento durante la llamada a la función. Puedes asignar este valor por defecto mediante el operador de asignación =, como en el siguiente ejemplo:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIgPSAyKTpcbiAgcmV0dXJuIGEgKyBiXG4gIFxuIyBDYWxsIGBwbHVzKClgIHdpdGggb25seSBgYWAgcGFyYW1ldGVyXG5wbHVzKGE9MSlcblxuIyBDYWxsIGBwbHVzKClgIHdpdGggYGFgIGFuZCBgYmAgcGFyYW1ldGVyc1xucGx1cyhhPTEsIGI9MykifQ==

Argumentos obligatorios

Como su nombre indica, los argumentos obligatorios de una UDF son los que tienen que estar ahí. Estos argumentos deben pasarse durante la llamada a la función y precisamente en el orden correcto, como en el ejemplo siguiente:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIHdpdGggcmVxdWlyZWQgYXJndW1lbnRzXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYSArIGIifQ==

Necesitas argumentos asignados a los parámetros a y b para invocar la función sin que se produzca ningún error. Si cambias a y b, el resultado no será diferente, pero podría serlo si cambias plus() por lo siguiente:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIHdpdGggcmVxdWlyZWQgYXJndW1lbnRzXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYS9iIn0=

Argumentos de palabra clave

Si quieres asegurarte de que invocas todos los parámetros en el orden correcto, puedes utilizar argumentos de palabra clave en la llamada a la función. Se utilizan para identificar los argumentos por su nombre de parámetro. Tomemos el ejemplo anterior para que esto quede un poco más claro:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYSArIGJcbiAgXG4jIENhbGwgYHBsdXMoKWAgZnVuY3Rpb24gd2l0aCBwYXJhbWV0ZXJzIFxucGx1cygyLDMpXG5cbiMgQ2FsbCBgcGx1cygpYCBmdW5jdGlvbiB3aXRoIGtleXdvcmQgYXJndW1lbnRzXG5wbHVzKGE9MSwgYj0yKSJ9

Ten en cuenta que, al utilizar argumentos de palabra clave, también puedes cambiar el orden de los parámetros y seguir obteniendo el mismo resultado al ejecutar tu función:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYSArIGJcbiAgXG4jIENhbGwgYHBsdXMoKWAgZnVuY3Rpb24gd2l0aCBrZXl3b3JkIGFyZ3VtZW50c1xucGx1cyhiPTIsIGE9MSkifQ==

Número variable de argumentos

En los casos en que no sepas el número exacto de argumentos que quieres pasar a una función, puedes utilizar la siguiente sintaxis con *args:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uIHRvIGFjY2VwdCBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHNcbmRlZiBwbHVzKCphcmdzKTpcbiAgcmV0dXJuIHN1bShhcmdzKVxuXG4jIENhbGN1bGF0ZSB0aGUgc3VtXG5wbHVzKDEsNCw1KSJ9

El asterisco (*) se coloca delante del nombre de la variable que contiene los valores de todos los argumentos de las variables que no son palabras clave. Ten en cuenta que también podrías haber pasado *varint, *var_int_args o cualquier otro nombre a la función plus().

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

La función anterior utiliza la función integrada de Python sum() para sumar todos los argumentos que se pasan a plus(). Si quieres evitar esto y construir la función tú solo, puedes utilizar esta alternativa:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uIHRvIGFjY2VwdCBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHNcbmRlZiBwbHVzKCphcmdzKTpcbiAgdG90YWwgPSAwXG4gIGZvciBpIGluIGFyZ3M6XG4gICAgdG90YWwgKz0gaVxuICByZXR1cm4gdG90YWxcblxuIyBDYWxjdWxhdGUgdGhlIHN1bSAgXG5wbHVzKDIwLDMwLDQwLDUwKSJ9

Variables globales frente a variables locales

En general, las variables definidas dentro del cuerpo de una función tienen alcance local, y las que se definen fuera, alcace global. Eso significa que las variables locales se definen dentro de un bloque de función y solo se puede acceder a ellas dentro de esa función, mientras que las variables globales las pueden obtener todas las funciones que pueda haber en tu script:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgR2xvYmFsIHZhcmlhYmxlIGBpbml0YFxuaW5pdCA9IDFcblxuIyBEZWZpbmUgYHBsdXMoKWAgZnVuY3Rpb24gdG8gYWNjZXB0IGEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50c1xuZGVmIHBsdXMoKmFyZ3MpOlxuICAjIExvY2FsIHZhcmlhYmxlIGBzdW0oKWBcbiAgdG90YWwgPSAwXG4gIGZvciBpIGluIGFyZ3M6XG4gICAgdG90YWwgKz0gaVxuICByZXR1cm4gdG90YWxcbiAgXG4jIEFjY2VzcyB0aGUgZ2xvYmFsIHZhcmlhYmxlXG5wcmludChcInRoaXMgaXMgdGhlIGluaXRpYWxpemVkIHZhbHVlIFwiICsgc3RyKGluaXQpKVxuXG4jIChUcnkgdG8pIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVcbnByaW50KFwidGhpcyBpcyB0aGUgc3VtIFwiICsgc3RyKHRvdGFsKSkifQ==

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

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, utilizas la palabra clave lambda.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRvdWJsZSA9IGxhbWJkYSB4OiB4KjJcblxuZG91YmxlKDUpIn0=

En el fragmento 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, como los ejemplos que has visto en la primera parte de este tutorial de funciones. Si tuvieras que escribir la función anterior en una UDF, el resultado sería el siguiente:

def double(x):
  return x*2

Veamos otro ejemplo de función lambda en el que se trabaja con dos argumentos:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgYHN1bSgpYCBsYW1iZGEgZnVuY3Rpb25cbnN1bSA9IGxhbWJkYSB4LCB5OiB4ICsgeTtcblxuIyBDYWxsIHRoZSBgc3VtKClgIGFub255bW91cyBmdW5jdGlvblxuc3VtKDQsNSlcblxuIyBcIlRyYW5zbGF0ZVwiIHRvIGEgVURGXG5kZWYgc3VtKHgsIHkpOlxuICByZXR1cm4geCt5In0=

Utilizas funciones anónimas cuando necesitas una función sin nombre durante un breve periodo de tiempo, y se crea en tiempo de ejecución. El contexto específico en el que esto sería relevante es cuando trabajas con filter(), map() y reduce():

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImZyb20gZnVuY3Rvb2xzIGltcG9ydCByZWR1Y2VcblxubXlfbGlzdCA9IFsxLDIsMyw0LDUsNiw3LDgsOSwxMF1cblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYGZpbHRlcigpYFxuZmlsdGVyZWRfbGlzdCA9IGxpc3QoZmlsdGVyKGxhbWJkYSB4OiAoeCoyID4gMTApLCBteV9saXN0KSlcblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYG1hcCgpYFxubWFwcGVkX2xpc3QgPSBsaXN0KG1hcChsYW1iZGEgeDogeCoyLCBteV9saXN0KSlcblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYHJlZHVjZSgpYFxucmVkdWNlZF9saXN0ID0gcmVkdWNlKGxhbWJkYSB4LCB5OiB4K3ksIG15X2xpc3QpXG5cbnByaW50KGZpbHRlcmVkX2xpc3QpXG5wcmludChtYXBwZWRfbGlzdClcbnByaW50KHJlZHVjZWRfbGlzdCkifQ==

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

Ten en cuenta que la función reduce() forma parte de la biblioteca functools. Utiliza esta función acumulativamente a los elementos de la lista my_list, de izquierda a derecha, y reduce la secuencia a un único valor, 55, en este caso.

Utilizar main() como función

Si tienes alguna experiencia con otros lenguajes de programación, como Java, sabrás que la función main es necesaria para ejecutar funciones. Como has visto en los ejemplos anteriores, esto no es necesario para Python. Sin embargo, incluir una función main() en tu programa Python puede ser útil para estructurar tu código de forma lógica: los componentes más importantes están contenidos en esta función main().

Puedes definir fácilmente una función main() e invocarla igual que has hecho con todas las demás funciones anteriores:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiIjIERlZmluZSBgbWFpbigpYCBmdW5jdGlvblxuZGVmIG1haW4oKTpcbiAgaGVsbG8oKVxuICBwcmludChcIlRoaXMgaXMgYSBtYWluIGZ1bmN0aW9uXCIpXG5cbm1haW4oKSJ9

Sin embargo, tal y como está ahora, se invocará el código de tu función main() cuando se importe como módulo. Para asegurarte de que esto no ocurra, invoca la función main() cuando __name__ == '__main__'.

Eso significa que el código del fragmento de código anterior se convierte en:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiIjIERlZmluZSBgbWFpbigpYCBmdW5jdGlvblxuZGVmIG1haW4oKTpcbiAgaGVsbG8oKVxuICBwcmludChcIlRoaXMgaXMgYSBtYWluIGZ1bmN0aW9uXCIpXG4gIFxuIyBFeGVjdXRlIGBtYWluKClgIGZ1bmN0aW9uIFxuaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzpcbiAgICBtYWluKCkifQ==

Ten en cuenta que, además de la función __main__, tienes una función __init__ que inicializa una instancia de una clase o de un objeto. En pocas palabras, actúa como constructor o inicializador y se invoca automáticamente cuando creas una nueva instancia de una clase. Con esa función, el objeto recién creado se asigna al parámetro self, que has visto antes en este tutorial. Mira el siguiente ejemplo:

class Dog:
    """    
    Requires:
    legs - Legs so that the dog can walk.
    color - A color of the fur.
    """

    def __init__(self, legs, color):
        self.legs = legs
        self.color = color
        
    def bark(self):
        bark = "bark" * 2
        return bark

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

¿Quieres seguir practicando?

¡Enhorabuena! Has terminado este breve tutorial sobre funciones en Python. Si quieres repasar otro material básico de programación en Python, no te pierdas Tipos de datos para la ciencia de datos, un curso en el que consolidarás y practicarás tus conocimientos sobre listas, diccionarios, tuplas, conjuntos y fechas.

Temas

Más información sobre Python

Certificación disponible

Course

Writing Functions in Python

4 hr
80.7K
Learn to use best practices to write maintainable, reusable, complex functions with good documentation.
See DetailsRight Arrow
Start Course
Ver másRight Arrow
Relacionado

Cómo aprender Python desde cero en 2024: Guía del experto

Descubre cómo aprender Python, sus aplicaciones y la demanda de conocimientos de Python. Comienza hoy tu andadura en Python ​con nuestra guía completa.
Matt Crabtree's photo

Matt Crabtree

19 min

14 preguntas de la entrevista al analista de datos: cómo preparar una entrevista de analista de datos en 2024

Si estás buscando tu primer trabajo de analista de datos o quieres ascender en tu carrera, utiliza esta guía para prepararte para la entrevista, practicar algunas preguntas de la entrevista de analista de datos y conseguir el trabajo de tus sueños.
Matt Crabtree's photo

Matt Crabtree

12 min

if...elif...else en el tutorial de Python

Aprende a crear sentencias if...elif...else en Python.
DataCamp Team's photo

DataCamp Team

4 min

Cómo escribir un Bash Script: Un sencillo tutorial de Bash Scripting

Descubre los fundamentos de las secuencias de comandos bash y aprende a escribir una secuencia de comandos bash.
Kurtis Pykes 's photo

Kurtis Pykes

5 min

Tutorial de clasificación Naive Bayes con Scikit-learn

Aprende a construir y evaluar un Clasificador Naive Bayes utilizando el paquete Scikit-learn de Python.
Abid Ali Awan's photo

Abid Ali Awan

13 min

Clasificación K vecinos más próximos (KNN) con scikit-learn

Este artículo trata de cómo y cuándo utilizar la clasificación k vecinos más próximos con scikit-learn. Centrado en conceptos, flujo de trabajo y ejemplos. También cubrimos las métricas de distancia y cómo seleccionar el mejor valor para k mediante validación cruzada.
Adam Shafi's photo

Adam Shafi

14 min

See MoreSee More