En Python, ¿qué significa ”?

¿Qué significa ? Ejemplo:

 >>> def main(): ... pass ... >>> main  

¿Y tal vez hay una manera de acceder de alguna manera usando 0x7f95cf42f320 ?

Estás mirando la representación predeterminada de un objeto de función. Le proporciona un nombre y una identificación única, que en CPython es una dirección de memoria.

No puedes acceder a ella usando la dirección; La dirección de la memoria solo se usa para ayudarlo a distinguir entre objetos de función.

En otras palabras, si tiene dos objetos de función que originalmente se llamaron main , aún puede ver que son diferentes:

 >>> def main(): pass ... >>> foo = main >>> def main(): pass ... >>> foo is main False >>> foo  >>> main  

Es la identidad de la función, en la implementación de CPython es la dirección del objeto en la memoria.

Cada objeto obj tiene un método obj .__ repr __ ()
Cuando se le llama, este método devuelve un objeto de cadena que es la representación imprimible “oficial” del objeto obj

Cuando el intérprete de Python se encuentra
una línea de print obj en un script
o >>> obj en una línea de comando,
se llama al método __ repr __ () del objeto y el valor de la cadena representativa devuelta se muestra en la pantalla.

El método __ repr __ () de un objeto se puede llamar específicamente mediante el uso de la función incorporada repr () con el nombre del objeto como argumento, para asignar la cadena devuelta por __ repr __ () a un identificador, por lo que es posible Realizar operaciones en esta representación.
Solo en Python 1 y Python 2, las comillas invertidas alrededor del nombre de un objeto tienen el mismo efecto que llamar a repr () en él.

Comparar:

 def main(): pass if '__repr__' in dir(main): print ('__repr__ is a method of main\n') else: print ('main has no method __repr__\n') print ('main : %s\n' 'type(main) == %s\n' % (main,type(main)) ) print ('repr(main) : %s\n' 'type(repr(main)) == %s' %(repr(main),type(repr(main))) ) # Only in Python 1 and Python 2, string conversions with # reversed quotes produce the same result as repr(): print ('\n`main` : %s\n' 'type(`main`) == %s' % (`main`,type(`main`)) ) 

resultado

 __repr__ is a method of main main :  type(main) ==  repr(main) :  type(repr(main)) ==  

.

En , la parte 0x00FB2930 representa la dirección de memoria del objeto (aquí una función), es decir, un número entero que hace referencia a la ubicación del objeto en la RAM.

0x00FB2930 es un hexinteger , es decir, un literal que representa el valor de la dirección de memoria en la base 16.

Esta dirección de memoria es devuelta precisamente por la función incorporada id() , cuyo valor se imprime como un decimal decimal, es decir, su representación en la base 10.

 print ('repr(main) : %s\n' 'type(repr(main)) == %s\n' % (repr(main), type(repr(main))) ) hex_address = repr(main)[18:-1] print ('hex_address = repr(main)[18:-1] defined\n' 'hex_address : %s\n' 'type(hex_address) == %s\n' 'int(hex_address , 16) : %s\n' 'type(int(hex_address , 16)) : %s\n' % (hex_address, type(hex_address), int(hex_address , 16), type(int(hex_address , 16))) ) print ('id(main) : %s\n' 'type(id(main)) == %s\n' 'hex(id(main) : %s\n' 'type(hex(id(main)) : %s' % (id(main), type(id(main)), hex(id(main)), type(hex(id(main)))) ) 

resultado

 repr(main) :  type(repr(main)) ==  hex_address = repr(main)[18:-1] defined hex_address : 0x00FB2930 type(hex_address) ==  int(hex_address , 16) : 16460080 type(int(hex_address , 16)) :  id(main) : 16460080 type(id(main)) ==  hex(id(main) : 0xfb2930 type(hex(id(main)) :  

En CPython es simplemente la dirección de un objeto en la memoria. Todos los objetos tienen esto, no solo funciones.