Questão de Programação — Linguagens de programação — Quadrix 2024
- Código
- qg347824
- Banca
- Quadrix
- Órgão
- COREN-PR
- Ano
- 2024
- Nível
- Superior
- Cargo
- Analista de Tecnologia da Informação
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: E — ERRADO. A sintaxe apresentada está incorreta porque o asterisco que indica um número arbitrário de argumentos posicionais deve vir antes do nome do parâmetro (*args), e não depois (args*). A forma correta em Python para definir uma função que aceita um número arbitrário de argumentos posicionais é def func_coren(*args):.
Em Python, a definição de uma função começa com a palavra-chave def, seguida do nome da função, parênteses contendo os parâmetros e dois-pontos. Para aceitar um número arbitrário de argumentos posicionais, utiliza-se o operador * (asterisco) antes do nome do parâmetro. Esse parâmetro especial, convencionalmente chamado de *args, coleta todos os argumentos posicionais extras em uma tupla. A sintaxe correta seria:
def func_coren(*args):
passO erro na questão está na posição do asterisco: args* é inválido. O asterisco deve preceder o nome do parâmetro, não sucedê-lo. Essa é uma pegadinha clássica de concursos, que testa se o candidato conhece a sintaxe exata da linguagem.
É importante distinguir *args de **kwargs. Enquanto *args coleta argumentos posicionais em uma tupla, **kwargs coleta argumentos nomeados (palavras-chave) em um dicionário. Ambos são recursos poderosos para criar funções flexíveis, mas têm sintaxes e propósitos distintos.
A banca explora exatamente a confusão entre a posição do asterisco. O candidato que não domina a sintaxe pode não perceber o erro sutil e marcar a alternativa como correta. No entanto, a sintaxe args* não é reconhecida pelo interpretador Python e resultaria em um erro de sintaxe.
A sintaxe def func_coren(args*): está incorreta. O asterisco deve vir antes do nome do parâmetro, formando *args. A forma correta é def func_coren(*args):. A posição do asterisco é fundamental: ele é um operador de desempacotamento que, quando aplicado ao parâmetro, indica que todos os argumentos posicionais adicionais serão agrupados em uma tupla. Colocá-lo depois do nome (args*) não tem significado sintático em Python e geraria um erro.
A banca inverte a posição do asterisco para testar se você conhece a sintaxe exata. Lembre-se: o * vem antes do nome do parâmetro (*args), nunca depois. Essa é uma armadilha clássica em questões de Python.
Para fixar, compare as duas formas: *args (argumentos posicionais em tupla) e **kwargs (argumentos nomeados em dicionário). O número de asteriscos e a posição mudam completamente o comportamento. Em provas, desconfie sempre de sintaxes que parecem "quase corretas" — a banca adora inverter a ordem dos elementos.
Gabarito: E — ERRADO.
Link permanente: /questoes/qg347824