Maison  >  Article  >  développement back-end  >  Les ID de variables Python peuvent-ils être inversés pour déréférencer leurs objets d'origine ?

Les ID de variables Python peuvent-ils être inversés pour déréférencer leurs objets d'origine ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-19 10:51:02857parcourir

Can Python Variable IDs Be Reversed to Dereference Their Original Objects?

Les ID de variable peuvent-ils être déréférencés en Python ?

Il vaut la peine d'explorer si les ID de variable récupérés à l'aide de la fonction id en Python peuvent être déréférencés. Considérez la requête suivante :

dereference(id(a)) == a

Bien qu'il existe des approches plus pratiques pour y parvenir, nous y approfondirons d'un point de vue académique.

Réponse

Une fonction utilitaire peut être utilisée, compatible à la fois avec Python 2 et Python 3. Cependant, il est important de noter que la sécurité de la fonction est débattue et certains experts déconseillent fortement son utilisation.

import _ctypes

def di(obj_id):
    """ Inverse of id() function. """
    return _ctypes.PyObj_FromPtr(obj_id)

if __name__ == '__main__':
    a = 42
    b = 'answer'
    print(di(id(a)))  # -> 42
    print(di(id(b)))  # -> answer

Cette fonction inverse l'opération id(), permettant la récupération de l'objet d'origine à partir de son ID de variable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn