0Pricing
Python Academy · Aula

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, map e para reduzir repetições.
  • Disponibiliza .func, .args e .keywords, além de ter uma variante de método chamada partialmethod.
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.

Todas as aulas deste curso

  1. Funções de primeira classe
  2. Closures e variáveis livres
  3. nonlocal e estado mutável
  4. Funções parciais
← Voltar para Python Academy