# Cria um objeto de uma funcao e este objeto a gente pode passar por ai def add(a, b): return a + b # "var" recebe o objeto da função add var = add print(id(add)) # 1332516488352 print(id(var)) # 1332516488352 print(type(add)) # <class 'function'> print(type(var)) # <class 'function'> # Aqui eu deleto a função criada del add # print(id(add)) Aqui da erro se eu imprimir obviamente print(id(var)) # 1332516488352 # print(type(add)) Aqui da erro se eu imprimir obviamente print(type(var)) # <class 'function'> print(var(1, 3)) # 4 Minha dúvida: Quando eu crio a função add eu estou criando um objeto de uma função e a variável add guarda a referência para este objeto, esta explicação está correta? Pois seria a mesma lógica de uma variável int por exemplo? Se x = 10, x contém a referência para o objeto 10? Entao quando eu faço var receber add e depois eu deleto add, na memória a função que seria o objeto continua existindo? E o que var faz é so guardar a referência para este objeto na memória? Entao se variável recebe uma função (var = add) e eu deleto a função (del add) var se torna a funcao add? Elas tem alguma diferença em si? Seria a mesma lógica do código abaixo? # "A" guarda a referencia para o objeto 10 A = 10 # "B" recebe esta referencia B = A print(id(A)) # 140727450395720 print(id(B)) # 140727450395720 del A # Depois de eu deletar "A" o objeto "10" continua existindo na memoria e o B continua a apontar para este objeto # e contendo o mesmo id de antes, entao o objeto em si nao foi modificado print(id(B)) # 140727450395720 Continue reading...