Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como faço pra que o Python me deixe nomear parâmetros com os mesmos nomes das variáveis?

Oi, pessoal, tudo bem? Estou com uma dúvida que me impede de avançar em Funções. Estou criando esta função:

def testando(nome, sobrenome, idade):
    return f'Seu nome é {nome} {sobrenome} e você tem {idade} anos'


nome = input("Nome: ")
sobrenome = input("Sobrenome: ")
idade = input("Idade: ")

args = nome, sobrenome, idade
print(testando(*args))

O código funciona direitinho, mas na primeira linha, em def testando(nome, sobrenome, idade): , meus três parâmetros aparecem com uma linha embaixo, e o Python reclama "Shadows name 'nome' from outer scope", "Shadows name 'sobrenome' from outer scope", "Shadows name 'idade' from outer scope".

Já vi que se eu troco o nome dos parâmetros, ele para de apontar erro. Mas acho que se o nome do parâmetro for diferente da variável, o código fica mais difícil de entender.

Então, como faço para que o Python me deixe nomear os parâmetros com os mesmos nomes das variáveis?

2 respostas
solução!

Use um dicionário.

def testando(nome, sobrenome, idade):
    return f'Seu nome é {nome} {sobrenome} e você tem {idade} anos'

nome = input("Nome: ")
sobrenome = input("Sobrenome: ")
idade = input("Idade: ")

kwargs = {
    "nome": nome, 
    "sobrenome": sobrenome, 
    "idade": idade
}

print(testando(**kwargs))

Muito obrigada!