Funções parciais
Use functools.partial
Funções parciais é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.
O que é uma parcial?
functools.partial cria uma nova função com alguns argumentos de uma função existente já preenchidos. É como pré-carregar argumentos para que você possa chamar o resultado com menos argumentos.
Importe-a com from functools import partial.
from functools import partial
def power(base, exp):
return base ** exp
square = partial(power, exp=2)
print(square(5))Predefinindo argumentos posicionais
Os argumentos posicionais passados a partial preenchem os parâmetros da função a partir da esquerda. Os argumentos restantes são fornecidos quando você chama a parcial.
from functools import partial
def multiply(a, b):
return a * b
double = partial(multiply, 2)
print(double(10))
print(double(50))Predefinindo argumentos nomeados
Os argumentos nomeados fornecidos a partial tornam-se valores padrão que ainda podem ser substituídos no momento da chamada.
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'))Parciais com funções integradas
Você também pode criar parciais de funções integradas. Aqui, criamos um analisador de inteiros na base 2 a partir de int.
from functools import partial
binary = partial(int, base=2)
print(binary('1010'))
print(binary('1111'))Retornos de chamada mais limpos
As parciais são excelentes para retornos de chamada em que você precisa passar uma função sem argumentos ou com um único argumento, mas deseja pré-carregar o contexto.
from functools import partial
def log(level, message):
return '[' + level + '] ' + message
error = partial(log, 'ERROR')
print(error('disk full'))Parciais em map
Uma parcial se encaixa muito bem em funções de ordem superior como map, fixando um argumento enquanto o outro varia para cada item.
from functools import partial
def add(a, b):
return a + b
add10 = partial(add, 10)
print(list(map(add10, [1, 2, 3])))Inspecionando uma parcial
Um objeto parcial disponibiliza a função envolvida por meio de .func, os argumentos posicionais fixos por meio de .args e as palavras-chave fixas por meio de .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)Empilhando parciais
Você pode criar uma parcial a partir de outra parcial, adicionando mais argumentos fixos passo a passo.
from functools import partial
def volume(l, w, h):
return l * w * h
base = partial(volume, 2)
slab = partial(base, 3)
print(slab(4))Parcial versus lambda
Uma lambda pode fazer o mesmo trabalho, mas partial costuma ser mais clara para fixar argumentos e disponibiliza a função envolvida para introspecção.
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))Um exemplo real: arredondamento
Crie uma função de arredondamento para duas casas decimais usando a função integrada round.
from functools import partial
round2 = partial(round, ndigits=2)
print(round2(3.14159))
print(round2(2.71828))partialmethod para classes
O recurso relacionado functools.partialmethod faz o mesmo para métodos dentro da definição de uma classe, preenchendo antecipadamente os argumentos de um 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())Verificação rápida
O que functools.partial faz?
Recapitulação: funções parciais
Você aprendeu que functools.partial:
- Cria uma nova função com alguns argumentos já preenchidos (posicionais ou nomeados).
- Permite substituir valores padrão nomeados predefinidos no momento da chamada.
- É ideal para retornos de chamada,
mape para reduzir repetições. - Disponibiliza
.func,.argse.keywords, além de ter uma variante de método chamadapartialmethod.
from functools import partial
add = lambda a, b: a + b
plus1 = partial(add, 1)
print(plus1(41))Perguntas Frequentes
A aula “Funções parciais” é grátis?
Sim — o texto completo de “Funções parciais” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.
O que vou aprender em “Funções parciais”?
Use functools.partial Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Python Academy?
Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Funções parciais”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Python Academy?
Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.