Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — Quadrix 2024

ProgramaçãoLinguagens de programação
Código
qg347824
Banca
Quadrix
Órgão
COREN-PR
Ano
2024
Nível
Superior
Cargo
Analista de Tecnologia da Informação
Acerca da programação orientada a objetos (POO), da linguagem de programação Python e da linguagem JavaScript, julgue o item a seguir.A sintaxe correta para definir uma função em Python, por exemplo, a função func_coren, que aceita um número arbitrário de argumentos posicionais está descrita a seguir.```pythondef func_coren(args*):pass
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

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”.

Sintaxe de funções em Python: argumentos arbitrários

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):
    pass

O 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.

1*args
Asterisco antes do nome
Coleta posicionais em tupla
2**kwargs
Dois asteriscos antes
Coleta nomeados em dicionário
3Erro comum
args* (asterisco depois)
Argumentos arbitrários em Python
LEVELsoulevel.com.br
Argumentos arbitrários em Python: *args (Asterisco antes do nome, Coleta posicionais em tupla); **kwargs (Dois asteriscos antes, Coleta nomeados em dicionário); Erro comum (args* (asterisco depois))

Item — ❌ ERRADO

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.

NÃO CAIA NESSA!

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.

NÃO CAIA NESSA!

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