Desarrollo con Python
  • Conceptos básicos
    • 🐍Introducción a Python
      • 🐍Variables
      • 🐍Strings
      • 🐍Números
      • 🐍Comentarios
      • 🐍Funciones
      • 🐍Funciones Propias
      • 🐍Zen of Python
    • 💿Primer programa
  • Operadores en python
    • ❎Operadores
      • ❎Operadores Aritméticos
      • ❎Operadores de asignación
      • ❎Booleanos
      • ❎Operadores de comparación
      • ❎Operadores lógicos
      • ❎Operadores de identidad
      • ❎Operadores de pertenencia
  • Datos Complejos
    • ▶️Datos complejos
      • ▶️Listas
      • ▶️Tuplas
      • ▶️Diccionarios
      • ▶️Bytes y Bytearrays
      • ▶️Sets
      • ▶️NoneType
    • 💿Caso práctico: Agenda
  • Control de flujo
    • 🛑Estructuras de control de flujo
      • 🛑Sentencias if/elif/else
      • 🛑Sentencia for
      • 🛑Sentencia while
      • 🛑break/continue/pass
    • ⚠️Excepciones en Python3
    • 🎯Caso práctico: 4 in Row
  • Orientacion a objetos
    • 💾Scope y Namespaces
    • 💾Clases en Python 3
    • 💾Métodos y atributos
    • 💾Clases y Objetos
    • 💾Decorators
  • Trabajando con objetos
    • 🔢Trabajando con Objetos
      • 🔢Trabajando con Números
      • 🔢Trabajando con Strings
      • 🔢Trabajando con Listas
      • 🔢Trabajando con Tuplas
      • 🔢Trabajando con Sets
      • 🔢Trabajando con Diccionarios
  • Programación Modular
    • 🧩Programación modular
      • 🧩Paquetes
      • 🧩PIP y paquetes externos
      • 🧩Pandas
      • 🧩NumPy
      • 🧩Matplotlib
      • 📄Caso Práctico
  • Proyectos finales
    • 🐍Videojuego Snake
    • 📥Detección de Spam con Machine Learning
Con tecnología de GitBook
En esta página
  • 1. ¿Qué es una función?
  • 2. Definiendo funciones personalizadas
  • 3. Argumentos de las funciones
  • 3.1 Argumentos posicionales
  • 3.2. Argumentos de palabra clave
  • 3.3 Parámetros con valores por defecto u opcionales
  • 4. Sentencia Return
  • 5. Docstrings
  1. Conceptos básicos
  2. Introducción a Python

Funciones

1. ¿Qué es una función?

En matemáticas, una función es una relación o asignación entre una o más entradas y un conjunto de salidas. Una función se suele representar así:

y = f(x)

Todos los lenguajes de programación modernos implementan el concepto de función. Sin embargo, en programación, las funciones son construcciones mucho más genéricas y versátiles que en la definición matemática mostrada anteriormente. Una función va a consistir en un bloque de código que encapsula una tarea específica o un grupo de tareas relacionadas. Las funciones permiten dividir programas complejos en fragmentos más pequeños y modulares.

var = "Hola mundo"

len(var)
10

len_var = len(var)
len_var
10

La función que se muestra anteriormente forma parte de un conjunto de funciones que están definidas en el interprete de Python y podemos utilizar siempre que lo necesitemos.

Para utilizar estas funciones no necesitamos conocer el detalle del código fuente que la implementa, únicamente necesitamos conocer su interfaz:

  • Qué argumentos recibe

  • Qué valores devuelve

Cuando invocamos la función a través de su nombre y le proporcionamos los argumentos necesarios, el interprete de Python automáticamente recorre el código fuente que define esta función y ejecuta las tareas pertinentes sobre los argumentos proporcionados. Cuando la función termina, la ejecución vuelve a la línea de código donde se invocó la función. La función puede devolver un valor de retorno que podemos utilizar a lo largo de nuestro código.

2. Definiendo funciones personalizadas

La sintaxis utilizada para definir funciones en Python es la siguiente:

def <nombre_funcion>([<parámetros>]):
    <sentencia(s)>

El último elemento, <sentencia(s)>, se denomina cuerpo de la función. El cuerpo es el bloque de sentencias en Python que se ejecutará cuando se llame a la función. El cuerpo de una función de Python se define por la sangría.

def mi_funcion(arg1, arg2):
    print(arg1)
    print(arg2)

La sintaxis utilizada para invocar una función es la siguiente: <nombre_funcion>([<argumentos>])

Los <argumentos> son los valores que se pasan a la función. Se corresponden con los <parámetros> en la definición de la función en Python.

mi_funcion ("Hola mundo", "Adios mundo")
Hola mundo
Adios mundo
print(1)
mi_funcion(2,3)
print(4)
1
2
3
4

Se pueden definir funciones que no reciban ningún argumento, pero los paréntesis siguen siendo necesarios. Tanto una definición de función como una llamada a una función deben incluir siempre paréntesis, incluso si están vacíos.

def funcion2():
    print("Hola mundo")
    print("Adios mundo")
funcion2()
Hola mundo
Adios mundo

3. Argumentos de las funciones

Los argumentos que le proporcionamos a una función en Python pueden ser de diferentes tipos.

3.1 Argumentos posicionales

La forma más sencilla de pasar argumentos a una función en Python es con argumentos posicionales (también llamados argumentos requeridos). En la definición de la función, debe especificarse una lista de parámetros separada por comas dentro de los paréntesis.

def funcion3(arg1, arg2, arg3):
    print(arg1)
    print(arg2)
    print(arg3)

Los argumentos que le proporcionamos en la invocación de la función debe respetar el orden y el número de parámetros definidos.

funcion3("Texto 1", "Texto 2", "Texto 3")
Texto 1
Texto 2
Texto 3
funcion3("Texto 1", "Texto 2")

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[19], line 1
----> 1 funcion3("Texto 1", "Texto 2")

TypeError: funcion3() missing 1 required positional argument: 'arg3'

Los parámetros se comportan como variables que están definidas de manera local a la función (únicamente en el cuerpo de la función). Cuando se invoca la función, los argumentos que se le proporcionan se asignan a los parámetros en el orden en el que estuvieran definidos.

def funcion4():
    var = "Variable 'var' dentro de la función"
    print(var)
var = "Variable 'var' fuera de la función"

funcion4()
print(var)

Variable 'var' dentro de la función
Variable 'var' fuera de la función

3.2. Argumentos de palabra clave

Otra forma de invocar una función en Python es indicando los argumentos de la forma <palabra clave>=<valor>. En ese caso, cada <palabra clave> debe coincidir con un parámetro en la definición de la función.

def mi_funcion(arg1, arg2):
    print(arg1)
    print(arg2)
var = "Hola mundo"
var2 = "Adios mundo"
mi_funcion(arg1=var, arg2=var2)
Hola mundo
Adios mundo

mi_funcion(arg1=var2, arg2=var)
Adios mundo
Hola mundo

Utilizar argumentos de palabra clave, nos exime de tener que respetar el orden de los parámetros definidos en la función

mi_funcion(arg2=var, arg1=var2)
Adios mundo
Hola mundo
mi_funcion(arg2=var, arg3=var2)

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[25], line 1
----> 1 mi_funcion(arg2=var, arg3=var2)

TypeError: mi_funcion() got an unexpected keyword argument 'arg3'

Por otro lado, el número de argumentos debe seguir respetándose.

mi_funcion(var, arg2=var2)
Hola mundo
Adios mundo

Una de las cosas interesantes que nos permite hacer Python, es combinar argumentos posicionales y de palabra clave en la misma llamada a una función. En estos casos, los argumentos posicionales deben indicarse primero.

mi_funcion(arg1=var, var2)

  Cell In[28], line 1
    mi_funcion(arg1=var, var2)
                             ^
SyntaxError: positional argument follows keyword argument

3.3 Parámetros con valores por defecto u opcionales

Si especificamos un parámetro en la definición de una función en Python utilizando la forma <nombre>=<valor>, entonces <valor> se convierte en un valor por defecto para ese parámetro.

Los parámetros definidos de esta manera se denominan parámetros por defecto u opcionales.

def mi_funcion(arg1, arg2="valor por defecto"):
    print(arg1)
    print(arg2)
mi_funcion("Hola mundo")
Hola mundo
valor por defecto
mi_funcion("Hola mundo", "Adios mundo")
Hola mundo
Adios mundo

4. Sentencia Return

Las funciones en Python pueden retornar un valor despues de haber ejecutado las sentencias de código definidas. Para devolver un valor, se debe utilizar la palabra return dentro del cuerpo de la función.

Debemos de tener en cuenta varias cosas cuando utilizamos la palabra return:

  1. Cuando se ejecuta esta sentencia en Python, el intérprete termina inmediatamente la ejecución de la función y regresa a la línea de código desde dónde la hubiésemos invocado.

def mi_funcion():
    print("Sentencia 1 dentro de mi_funcion")
    print("Sentencia 2 dentro de mi_funcion")
    return
print("Sentencia 1 fuera de mi_funcion")
mi_funcion()
print("Sentencia 2 fuera de mi_funcion")

Sentencia 1 fuera de mi_funcion
Sentencia 1 dentro de mi_funcion
Sentencia 2 dentro de mi_funcion
Sentencia 2 fuera de mi_funcion
  1. Si indicamos definimos la palabra return de la siguiente forma return <valor> se retornará el <valor> especificado en la llamada a dicha función.

def funcion2():
    return "Valor de mi_funcion"
    print("Esta sentencia nunca va a ejecutarse")
var = funcion2()
print(var)
Valor de mi_funcion
funcion2()
'Valor de mi_funcion'
funcion2()[0:5]
'Valor'
  1. Si no indicamos el término <valor> en la sentencia return se devuelve un tipo de datos conocido como None

def mi_funcion():
    return
var = mi_funcion()
print (var)
None
  1. Puede utilizarse la sentencia return para devolver varios valores utilizando la sintaxis return <valor1>,<valor2>,...,<valorn>

def mi_funcion():
    return "Texto 1", "Texto 2", "Texto 3"
var1,var2,var3 = mi_funcion()

print(var1)
print(var2)
print(var3)
Texto 1
Texto 2
Texto 3

5. Docstrings

Cuando la primera declaración en el cuerpo de una función en Python es un string de la forma """texto""", se conoce como docstring de la función.

Los docstring se utilizan para proporcionar la documentación de una función. Puede contener el propósito de la función, los argumentos que toma, información sobre los valores de retorno, o cualquier otra información que se considere útil.

def mi_funcion():
""" Esto es un docstring de la funcion """
    print("Hola mundo")
def mi_funcion(arg1=0.0, arg2=0.0):
    """
    Esto es una funcion para demostrar que es un docstring
    Keyword arguments:
    arg1 -- primer argumento de la función (por defecto 0.0)
    arg2 -- segundo argumento de la función (por defecto 0.0)
    """
    print(arg1)
    return arg2
# Visualiza la interfaz de la función en Jupyter Notebook con Tab+Shift
mi_funcion()

AnteriorComentariosSiguienteFunciones Propias

Última actualización hace 1 año

Existe un PEP (Python Enhancement Proporsal) que establece el estilo con el que deben definirse los docstrings:

https://www.python.org/dev/peps/pep-0257/
🐍
🐍
Page cover image