3
respostas

Passando lista como parâmetro de funções

Olá pessoal

Ao passar uma lista como parâmetro para alguma função, a lista pode ser alterada 'globalmente' por essa função. Por exemplo:

def mudar_lista(lista):
    lista[0] = 0

lista = [1,2,3,4,5]
mudar_lista(lista)
print(lista)
#resultado [0, 2, 3, 4, 5]

Porém, quando passo uma variável int por exemplo, ela é alterada apenas localmente.

def mudar_var(var):
    var = 0

var  = 10
mudar_var(var)
print(var)
#resultado 10

Porque isso acontece com as listas? Existem outros tipos que também podem ser alterados da mesma maneira?

3 respostas

Olá Daniel,

Na definição de sua função mudar_var , não está esquecendo do return ?

def mudar_var(var):
    var = 0
    return var

var  = 10

mudar_var(var)

print(var)
# resultado 0

Olá,

Segue o código,

# A função tem uma variável 
# com mesmo nome. 
def f():  
    var= 0
    print var  

# Global scope 
var = 12
f() 
print s 
#saída
# 0
#12

Se uma variável com o mesmo nome for definida dentro do escopo da função, ela imprimirá o valor fornecido somente dentro da função e não no valor global.

Olá Henrique,

você disse,

"Se uma variável com o mesmo nome for definida dentro do escopo da função, ela imprimirá o valor fornecido somente dentro da função e não no valor global."

Minha duvida é quando essa variável é uma lista e porque seu valor global pode ser alterado dentro do escopo de uma função?