[Python] Variável que recebe objeto de função em Python se torna esta função?

Discussão em 'Python' iniciado por Stack, Janeiro 10, 2025.

  1. Stack

    Stack Membro Participativo

    # 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...

Compartilhe esta Página