Las funciones en Python (como en otros lenguajes de programación) son bloques de código reutilizables. A la hora de ejecutarlas es necesario invocarlas por su nombre. Las funciones pueden tener datos de entrada y de salida.

Anterior entrada: Python List

Funciones en Python

Definiendo funciones en Python

La sintaxis para crear una función es:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
def identificador(arg):
cuerpo
def identificador(arg): cuerpo
def identificador(arg):
   cuerpo

La palabra clave def indica que es una función. El identificador es el nombre de la función. Los paréntesis envuelven los parámetros de entrada, seguidos por 2 puntos. El cuerpo de la función comienza en la siguiente línea y debe tener un margen adicional.

En el siguiente ejemplo vemos la función add() que suma los 2 números pasados como argumentos (n1, n2). En el cuerpo encontramos la instrucción return que se encarga de retornar el resultado.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
def add(n1,n2):
return n1 + n2
print(add(3,5)) # 8
def add(n1,n2): return n1 + n2 print(add(3,5)) # 8
def add(n1,n2):
  return n1 + n2 

print(add(3,5)) # 8

Importante: no olvidar los márgenes dentro de la función.

Argumentos por defecto

Puedes crear funciones con argumentos por defecto. De este modo, tienes la opción de llamar a la función omitiendo el argumento por defecto, o bien invocarla pasándole todos los argumentos.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
def add(n1, n2=3):
return n1 + n2
print(add(5)) # 8
print(add(5, 5)) # 10
def add(n1, n2=3): return n1 + n2 print(add(5)) # 8 print(add(5, 5)) # 10
def add(n1, n2=3):
  return n1 + n2

print(add(5)) # 8
print(add(5, 5)) # 10

 Argumentos *args

Cuando el número de argumentos pasados a una función es incierto, puedes definir un parámetro con el símbolo *. De este modo, los argumentos de entrada son transformados en una tuple. Y puedes acceder a ellos mediante un índice.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
def show_king(*kings):
print(kings[1])
show_king("Melchor", "Gaspar", "Baltasar") # Gaspar
def show_king(*kings): print(kings[1]) show_king("Melchor", "Gaspar", "Baltasar") # Gaspar
def show_king(*kings):
  print(kings[1])

show_king("Melchor", "Gaspar", "Baltasar") # Gaspar

Diccionario de argumentos **kwargs

Definimos con la sintaxis **parámetro, una función que acepta como argumentos un indeterminado número de pares clave/valor. Esto se traduce en un diccionario de entrada.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
def show_king(**kings):
print(type(kings)) # <class 'dict'>
print(kings["m"]) # Melchor
show_king(m = "Melchor", g = "Gaspar", b = "Baltasar")
def show_king(**kings): print(type(kings)) # <class 'dict'> print(kings["m"]) # Melchor show_king(m = "Melchor", g = "Gaspar", b = "Baltasar")
def show_king(**kings):
  print(type(kings)) # <class 'dict'>
  print(kings["m"]) # Melchor
  
show_king(m = "Melchor", g = "Gaspar", b = "Baltasar") 

Funciones lambda

Las funciones lambda son conocidas como expresiones lambda o funciones anónimas porque no tienen nombre.

La sintaxis para definir una función lambda es:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
lambda argumentos : expresión
lambda argumentos : expresión
lambda argumentos : expresión

En el siguiente ejemplo tenemos una expresión lambda que calcula el cuadrado de un número pasado como argumento.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
square = lambda n : n * n
print(square(4)) # 16
square = lambda n : n * n print(square(4)) # 16
square = lambda n : n * n
print(square(4)) # 16

Las expresiones lambda son útiles a la hora de ordenar listas en python. List tiene el método sort que ordena los elementos en orden alfabético por defecto. Sin embargo podemos modificar el modo de ordenamiento mediante el parámetro key de sort: sort(key= lambda …).

A continuación ordenamos los modelos de coches por el precio de venta, con la ayuda de un expresión lambda.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cars = ["Mercedes GT 50000", "Audi A4 20000", "BMW M3 39930", "Ford Mustang 60000"]
cars.sort(key= lambda model : model.split(" ")[-1])
print(cars)
# ['Audi A4 20000', 'BMW M3 39930', 'Mercedes GT 50000', 'Ford Mustang 60000']
cars = ["Mercedes GT 50000", "Audi A4 20000", "BMW M3 39930", "Ford Mustang 60000"] cars.sort(key= lambda model : model.split(" ")[-1]) print(cars) # ['Audi A4 20000', 'BMW M3 39930', 'Mercedes GT 50000', 'Ford Mustang 60000']
cars = ["Mercedes GT 50000", "Audi A4 20000", "BMW M3 39930", "Ford Mustang 60000"]
cars.sort(key= lambda model : model.split(" ")[-1])
print(cars)
# ['Audi A4 20000', 'BMW M3 39930', 'Mercedes GT 50000', 'Ford Mustang 60000']

 

 


0 comentarios

Deja una respuesta

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies