Concursos Públicos

Funções em Python: guia completo para concursos

Seja para as carreiras de Tecnologia da Informação ou para cargos que exigem Ciência de Dados, Python deixou de ser um diferencial para se tornar um requisito básico. É necessário conhecer diversos aspectos da linguagem. Funções lambda, o escopo de variáveis e a recursão estão entre os tópicos mais cobrados nas questões sobre Python nos concursos públicos mais recentes. 

Neste artigo, vamos abordar:

  • O que são funções em Python e como criá-las com def
  • Funções recursivas e a condição de parada
  • Funções anônimas (lambda) e seus usos com filter(), map() e sorted()
  • Escopo de variáveis: local, global e a regra LEGB
  • Parâmetros padrão mutáveis: a pegadinha clássica das provas

Criando funções com def

Em Python, funções são criadas com a palavra reservada def, seguida do nome, dos parâmetros entre parênteses e de dois-pontos. O corpo da função é delimitado pela indentação — e não por chaves, como ocorre em C ou Java.

def saudacao(nome):
    return f”Olá, {nome}!”

print(saudacao(“Maria”))  # Olá, Maria!

Esse detalhe é frequentemente explorado pelas bancas. Parece trivial, mas já foi perguntado diretamente: “Em Python, qual instrução cria uma função?”, sendo a resposta correta o def. Confundir com function (do JavaScript) ou lambda (usado para funções anônimas) é o erro mais comum.

Funções recursivas

Uma função recursiva é aquela que chama a si mesma durante a execução. Para que o código não entre em loop infinito, toda função recursiva precisa de uma condição de parada — também chamada de caso base.

O exemplo mais clássico é o cálculo do fatorial:

def fatorial(n):
    if n == 0:       # condição de parada
        return 1

    return n * fatorial(n – 1)
print(fatorial(5))  # 120

Nas provas, é comum encontrar afirmações incorretas sobre o tema. Uma questão recente afirmou que “uma função recursiva tem uma função definida escrita dentro do corpo de outra função” — o que está errado. Recursão é quando a função chama a si mesma; funções aninhadas são um conceito distinto.

Funções lambda: a função anônima

As funções lambda permitem criar funções de uma única expressão, sem precisar nomeá-las. A sintaxe é:

lambda parâmetros: expressão

Exemplo direto:

soma = lambda x, y: x + y
print(soma(3, 5))  # 8

Não há explicitamente uma instrução de retorno, pois elas sempre retornam um valor. Lambdas são especialmente úteis como argumentos em funções de ordem superior (função que recebe outra função como parâmetro), e esse é exatamente o contexto que mais aparece nos concursos públicos.

Funções lambda com sorted()

Aqui, a lambda define o critério de ordenação. Esse padrão é recorrente em questões recentes.

Funções lambda com filter()

aux = [10, 9, 8, 7, 6, 5, 6, 4, 3, 2, 1]
pares = list(filter(lambda x: x % 2 == 0, aux))
print(pares)  # [10, 8, 6, 6, 4, 2]

Uma questão apresentou exatamente esse trecho e exigia identificar a saída correta. O ponto de atenção: filter() retorna um objeto iterável — por isso, o list() é necessário para exibir o resultado como lista.

A armadilha da lista de lambdas

Veja este código cobrado em uma questão:

nums = [1, 2, 3]
res = [lambda n: n * 2 for n in nums]
print(res[0], res[1], res[2])

Nesse caso, res é uma lista de funções, não de valores. Imprimir res[0] sem chamá-la exibe o objeto função — e não o número 2. Para obter os valores calculados, seria necessário chamar cada função: res[0](1), res[1](2), res[2](3).

Escopo de variáveis

O escopo de uma variável determina onde ela pode ser acessada no código. Em Python, essa hierarquia segue a regra LEGB:

EscopoSiglaDescrição
LocalLDentro da função atual
EnclosingEFunções aninhadas externas
GlobalGNível do módulo (arquivo)
Built-inBFunções nativas do Python

Uma variável declarada dentro de uma função é local por padrão e não pode ser acessada fora dela. Para modificar uma variável global de dentro de uma função, usa-se a palavra-chave global:

contador = 0

def incrementar():
    global contador
    contador += 1

incrementar()
print(contador)  # 1

Uma questão recente abordou esse ponto ao afirmar que “variáveis globais podem ser modificadas dentro de uma função através da palavra-chave global — o que é correto. O erro clássico nas provas é afirmar que variáveis locais podem ser acessadas fora da função, o que não é verdade.

Parâmetros padrão mutáveis: a pegadinha clássica

Este é, provavelmente, o comportamento mais inesperado de Python para quem está começando. Quando um parâmetro padrão é mutável — como uma lista —, ele é criado uma única vez e reutilizado em todas as chamadas seguintes.

def adicionar(item, lista=[]):
    lista.append(item)
    return lista

print(adicionar(“X”))    # [‘X’]
print(adicionar(“Y”))    # [‘X’, ‘Y’]  ← atenção!
print(adicionar(“Z”))    # [‘X’, ‘Y’, ‘Z’]  ← atenção!

A saída não é [‘X’], depois [‘Y’], depois [‘Z’]. A lista padrão é compartilhada entre as chamadas. 

A solução correta é usar None como padrão e criar a lista internamente:

def adicionar(item, lista=None):
    if lista is None:
        lista = []
    lista.append(item)

    return lista

Conclusão

Os tópicos de funções lambda Python, recursão, escopo e parâmetros padrão formam um conjunto coeso e com alto índice de cobrança nas provas de TI. Dominar a sintaxe do def e do lambda, entender a regra LEGB e reconhecer a armadilha dos parâmetros mutáveis são diferenciais importantes para acertar questões.

https://www.w3schools.com/python/python_functions.asp

https://cs.stanford.edu/people/nick/py/python-function.html

https://www.datacamp.com/tutorial/python-lambda-functions

Concursos Abertos

Concursos 2026

Igor Pires Ferreira

Posts recentes

Responsável pelo ICMS para SEFAZ/SC

Oi, vais bem?!! Neste novo artigo do Estratégia Concursos vamos analisar um assunto muito importante para a prova de Auditor Fiscal catarinense: responsável pelo ICMS para SEFAZ/SC de acordo com a legislação nacional…

11 horas atrás

Concurso IBGE temporários tem vagas para nível superior?

Concurso IBGE 2026: processo seletivo temporário oferece mais de mil vagas para nível superior de…

14 horas atrás

Concursos PM e CBM BA autorizados; 3.360 vagas!

Foram oficialmente autorizados os próximos concursos da Polícia Militar e Corpo de Bombeiros da Bahia…

14 horas atrás

Concurso Polícia Penal RN 2026: as principais datas do edital

Inscrições em breve e provas no mês de setembro. Confira neste artigo as principais datas…

14 horas atrás

Importação de bens imateriais e serviços no IBS

Fala, pessoal, tudo certo? Hoje vamos tratar de um tema que vem ganhando cada vez…

14 horas atrás

Concurso Polícia Penal RS: edital com 213 vagas e até R$ 9,7 mil!

Fundatec alerta candidatos sobre golpe envolvendo inscrições do concurso Polícia Penal RS O Concurso Polícia…

15 horas atrás