Como mudar o valor de uma variável por meio de função no Python? - Stack Overflow em Português
Como posso mudar o valor de uma variável por meio de uma função? Segue um exemplo do que gostaria de fazer:
t = 2 + 3
A saída do função print(t) me retorna o valor 7 e não 5 como o desejado, como posso fazer para que o foi feito na função seja aplicado a variável passada? Desde já agradeço.
editada 7/08/17 às 15:26
Rômulo BorgesRômulo Borges
Acho que não entendeu o mecanismo da variável. Toda variável possui escopo, ela só existe onde foi declarada. Mesmo que você tenha o mesmo nom e declarado em lugares diferentes, são variáveis totalmente diferentes, não adianta mexer em uma esperado que a outra seja alterada. Pelo menos é assim em variáveis com valores com semântica de valor.
Existem valores que são armazenados em variáveis que possuem semântica de referência. Neste caso quando altera o valor do objeto referenciado pela variável isto vale para todas referências para aquele objeto, aí não é que você está alterando o valor de outra variável, mas está alterando um objeto que tem mais de uma variável apontando para ele. É óbvio que o acesso em todas variáveis se dá igual.
Neste caso que a variável tem um tipo por valor a solução mais óbvia é retornar o valor que deseja. Inclusive Python permite retornar mais de um valor.
t = func(t)
Outra solução é encapsular esse valor em um tipo por referência como uma lista ou dicionário, mas parece bem gambiarra, eu não faria isto.
Também existe variável global, mas nem pense em usar isso, quase sempre é um erro. Deixa para usar quando não tiver solução melhor e souber muito o que está fazendo. Estado com escopo global é um problema.
editada 4/06/20 às 11:22
respondida 4/08/17 às 21:10
func(t) esse t nâo e nem utilizado correto, acho legal colocar um codigo com a sua utilizacao. No python tem variavel global?
4/08/17 às 21:22
@BrunoH. coloquei sobre ela, ou seja, para não usar.
4/08/17 às 21:24
Obrigado por responder, pela correção e dica.
– Rômulo Borges
4/08/17 às 21:38
respondida 18/04/18 às 16:06
Embora funcione, é uma péssima solução. Importar objetos do escopo global desta forma pode gerar efeitos colaterais indesejáveis e muito difíceis de identificar na manutenção. O Maniero citou na resposta dele um link sobre isso.
18/04/18 às 16:11
Esta não é a resposta que você está procurando? Pesquise outras perguntas com a tag python python-3.x funções variáveis ou faça sua própria pergunta.