Funciones parciales
Use functools.partial
Funciones parciales es una lección gratuita de Python Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Python Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Python Academy incluye 4 lecciones en total.
¿Qué es una función parcial?
functools.partial crea una función nueva con algunos argumentos de una función existente ya establecidos. Es como precargar argumentos para poder llamar al resultado con menos argumentos.
Impórtela con from functools import partial.
from functools import partial
def power(base, exp):
return base ** exp
square = partial(power, exp=2)
print(square(5))Establecer argumentos posicionales
Los argumentos posicionales que se pasan a partial rellenan los parámetros de la función de izquierda a derecha. Los argumentos restantes se proporcionan al llamar a la función parcial.
from functools import partial
def multiply(a, b):
return a * b
double = partial(multiply, 2)
print(double(10))
print(double(50))Establecer argumentos con nombre
Los argumentos con nombre que se proporcionan a partial se convierten en valores predeterminados que aún puede sobrescribir al realizar la llamada.
from functools import partial
def greet(name, greeting='Hello'):
return greeting + ', ' + name
hola = partial(greet, greeting='Hola')
print(hola('Ada'))
print(hola('Bob', greeting='Hey'))Funciones parciales con funciones integradas
También puede crear funciones parciales a partir de funciones integradas. En este caso, creamos un analizador de enteros en base 2 a partir de int.
from functools import partial
binary = partial(int, base=2)
print(binary('1010'))
print(binary('1111'))Callbacks más limpios
Las funciones parciales son ideales para callbacks en los que debe pasar una función sin argumentos o con un solo argumento, pero quiere precargar el contexto.
from functools import partial
def log(level, message):
return '[' + level + '] ' + message
error = partial(log, 'ERROR')
print(error('disk full'))Funciones parciales en map
Una función parcial encaja perfectamente en funciones de orden superior como map: fija un argumento mientras el otro varía para cada elemento.
from functools import partial
def add(a, b):
return a + b
add10 = partial(add, 10)
print(list(map(add10, [1, 2, 3])))Inspeccionar una función parcial
Un objeto de función parcial expone la función envuelta mediante .func, los argumentos posicionales fijados mediante .args y los argumentos con nombre fijados mediante .keywords.
from functools import partial
def f(a, b, c):
return (a, b, c)
p = partial(f, 1, c=3)
print(p.func.__name__)
print(p.args)
print(p.keywords)Encadenar funciones parciales
Puede crear una función parcial a partir de otra función parcial y añadir más argumentos fijados paso a paso.
from functools import partial
def volume(l, w, h):
return l * w * h
base = partial(volume, 2)
slab = partial(base, 3)
print(slab(4))Función parcial frente a lambda
Una lambda puede hacer lo mismo, pero partial suele ser más clara para fijar argumentos y expone la función envuelta para la introspección.
from functools import partial
def power(base, exp):
return base ** exp
cube_p = partial(power, exp=3)
cube_l = lambda b: power(b, 3)
print(cube_p(2), cube_l(2))Un ejemplo real: redondear
Cree una función para redondear a dos decimales aplicando parcialmente la función integrada round.
from functools import partial
round2 = partial(round, ndigits=2)
print(round2(3.14159))
print(round2(2.71828))partialmethod para clases
La función relacionada functools.partialmethod hace lo mismo con los métodos dentro de una definición de clase, al establecer previamente argumentos de un método.
from functools import partialmethod
class Light:
def set(self, state):
self.state = state
return state
on = partialmethod(set, True)
off = partialmethod(set, False)
l = Light()
print(l.on())
print(l.off())Comprobación rápida
¿Qué hace functools.partial?
Repaso: funciones parciales
Ha aprendido que functools.partial:
- Crea una función nueva con algunos argumentos preestablecidos (posicionales o con nombre).
- Permite sobrescribir los valores predeterminados con nombre establecidos al realizar la llamada.
- Es ideal para callbacks,
mapy para reducir la repetición. - Expone
.func,.argsy.keywords, y cuenta con la variante de métodopartialmethod.
from functools import partial
add = lambda a, b: a + b
plus1 = partial(add, 1)
print(plus1(41))Preguntas frecuentes
¿La lección «Funciones parciales» es gratis?
Sí — el texto completo de «Funciones parciales» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Python Academy, actualiza a CoddyKit PRO. El curso de Python Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Funciones parciales»?
Use functools.partial Practicas Python Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Python Academy?
No se requiere experiencia previa. Python Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Funciones parciales»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Python Academy?
Sí. Cada lección de Python Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.