Executando verificação de segurança...
-4

Salve Andy!

Não conheço nenhum artifício da linguagem pra omitir esses parâmetros repetidos, mas também acredito que caso exista esse artifício isso só dificultaria a legibilidade do código.

Hoje em dia as IDEs possuem auto-complete, o que facilita bastante. Caso você queira reduzir seu código você pode passar como argumento um dicionário (não é uma boa opção e é mais trabalhoso na hora de chamar a função, mas solucionaria teu problema tendo que passar somente 1 variável)

def sum(nums):
    return (nums['a'] + nums['b'])
    
nums = {'a': 5, 'b': 7}

print(f'Sum of {nums["a"]} and {nums["b"]} is {sum(nums)}')
Carregando publicação patrocinada...
1

Passar dicionários como argumentos para resolver esse problema; ao meu ver é a melhor forma. Utilizar encapsulamento quando há um número alto ou padrões de dados conhecidos ou repetidos é uma boa prática de programação, isso proporciona um código mais fácil de ler, manutenível e menos propenso à erros, é algo que você aprende ao trabalhar com linguagens com paradigma de OO. Ao citar que passar um dicionário não é uma boa opção, fez você receber esses downvotes.

2
2

Vale lembrar que, caso não seja possível alterar as funções, ainda dá pra passar um dicionário:

def calcular_imposto(valor_bruto, aliquota, deducoes, dependentes, estado):
    # faz algo com os valores...

def calcular_salario_liquido(valor_bruto, aliquota, deducoes, dependentes, estado):
    # faz algo com os valores...
# mais trocentas funções com os mesmos parâmetros...

params = { 'valor_bruto': 10, 'aliquota': 20, 'deducoes': 3, 'dependentes': 4, 'estado': 'SP' }
calcular_imposto(**params)
calcular_salario_liquido(**params)

O que faz a "mágica" são os dois asteriscos antes de params: eles fazem o unpacking do dicionário. No exemplo acima, ele faz com que o parâmetro valor_bruto receba o valor 10, aliquota receba o valor 20 e assim por diante.

Claro que se vc já tiver os valores em variáveis separadas, talvez não compense criar o dicionário. Neste caso eu ia preferir usar uma das soluções acima: a tupla que eu sugeri (caso não possa mudar as funções) ou uma classe (mas aí teria que alterar todas as funções, e dependendo do caso pode valer a pena).

De qualquer forma, esta é uma das possibilidades, mas acho que só seria "melhor" caso o dicionário já estivesse criado (por exemplo, se ele veio de algum lugar que já retorna um JSON com todos os valores).