Pular para o conteúdo principal

Questão de Programação — Python — Quadrix 2025

ProgramaçãoPython
Código
qg600014
Banca
Quadrix
Órgão
CRO-SP
Ano
2025
Nível
Superior
Cargo
Analista de Desenvolvimento de Sistemas de Informação
Durante o desenvolvimento de um sistema de gestão odontológica para uma clínica de médio porte, a equipe de tecnologia optou por criar uma aplicação multiplataforma com recursos de agendamento, prontuário eletrônico e geração de relatórios financeiros. Para isso, diferentes módulos foram desenvolvidos em C#, Python e Java, aproveitando as características específicas de cada linguagem.Com base nessa situação hipotética e nos conhecimentos a respeito de sintaxe, tipos de dados, estruturas de controle, classes, herança e polimorfismo em C#, Python e Java, julgue o item a seguir.Em Python, é possível definir funções dentro de outras funções (funções aninhadas), o que pode ser útil para encapsular lógicas específicas de cálculo em relatórios.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Funções aninhadas em Python

Gabarito: letra C (Certo). Em Python, é perfeitamente válido definir funções dentro de outras funções — as chamadas funções aninhadas (nested functions) — e essa é uma técnica útil para encapsular lógica específica, como cálculos internos de um relatório, sem poluir o escopo global. A afirmação está correta.

O que são funções aninhadas? Em Python, uma função é um bloco de código definido com a palavra-chave def. Assim como você pode definir uma função no nível principal de um módulo, pode também defini-la dentro do corpo de outra função. A função interna só existe dentro do escopo da função externa — ela não é visível fora dela. Isso é uma forma de encapsulamento: a lógica auxiliar fica escondida, organizada e não interfere no restante do código.

Por que isso é útil? Imagine um relatório financeiro que precisa calcular um imposto com uma fórmula complexa. Em vez de criar uma função global que só é usada ali, você pode definir a função de cálculo dentro da função que gera o relatório. Isso mantém o código mais coeso e evita "poluir" o espaço de nomes global com funções que não serão reutilizadas. Além disso, funções aninhadas podem acessar variáveis da função externa (closure), o que permite capturar valores do contexto sem precisar passá-los como parâmetros.

Um exemplo prático:

def gerar_relatorio(valor_bruto):
    def calcular_imposto(valor):
        return valor * 0.15  # 15% de imposto

    imposto = calcular_imposto(valor_bruto)
    return valor_bruto - imposto

print(gerar_relatorio(1000))  # Saída: 850.0

Aqui, calcular_imposto é uma função aninhada dentro de gerar_relatorio. Ela encapsula a lógica do imposto e só pode ser chamada de dentro de gerar_relatorio. Se você tentar chamar calcular_imposto fora dela, receberá um erro NameError.

É importante não confundir funções aninhadas com funções lambda. As funções lambda são funções anônimas de uma única expressão, criadas com a palavra-chave lambda. As funções aninhadas são funções completas, com nome, que podem ter múltiplas linhas e comandos. Ambas são recursos válidos e úteis, mas servem a propósitos diferentes.

A banca explora aqui um conhecimento básico, mas fundamental, da sintaxe de Python. A afirmação é direta e correta: Python permite definir funções dentro de outras funções, e isso é útil para encapsular lógica. Não há pegadinha ou exceção — é uma característica da linguagem.

  1. 1def dentro de def
  2. 2Escopo local (encapsula)
  3. 3Acessa variáveis externas (closure)
  4. 4Invisível fora da função
LEVEL · soulevel.com.br

Alternativa C — ✅ Certo ⟵ GABARITO

A afirmação está correta. Python permite a definição de funções dentro de outras funções, conhecidas como funções aninhadas. Essa é uma técnica válida e útil para encapsular lógica específica, como cálculos internos de um relatório, mantendo o código organizado e evitando poluir o escopo global. A função interna só é acessível dentro do escopo da função externa, o que reforça o encapsulamento.

Gabarito: letra C

Link permanente: /questoes/qg600014