Pantalla hexagonal predeterminada de la consola Python

Estoy haciendo un montón de trabajo en la consola de Python, y la mayor parte se refiere a direcciones, que prefiero ver en hexadecimal.

Entonces, si a = 0xBADF00D , cuando simplemente ingrese Python> a en la consola para ver su valor, prefiero que python responda con 0xBADF00D lugar de 195948557 .

Sé que puedo ingresar '0x%X' % a para verlo en hexadecimal, pero estoy buscando algún tipo de opción de consola de python para hacerlo automáticamente. ¿Existe algo como esto? ¡Gracias!

El intérprete de Python normal llamará a sys.displayhook para hacer la visualización real de las expresiones que ingresa. Puede reemplazarlo con algo que muestre exactamente lo que desea, pero debe tener en cuenta que se llama a todas las expresiones que el intérprete interactivo desea mostrar:

 >>> import sys >>> 1 1 >>> "1" '1' >>> def display_as_hex(item): ... if isinstance(item, (int, long)): ... print hex(item) ... else: ... print repr(item) ... >>> sys.displayhook = display_as_hex >>> 1 0x1 >>> "1" '1' 

Sin embargo, sospecho que te cansarás rápidamente de ver a todos los enteros como hexadecimales, y cambiar a la conversión explícita de los que quieres ver como hex en consecuencia.

Sobre la base de las respuestas anteriores, aquí hay una versión que funciona para Python 2/3, no muestra bools como hexadecimal y también establece la variable _ correctamente:

 import sys def _displayhook(o): if type(o).__name__ in ('int', 'long'): print(hex(o)) __builtins__._ = o else: sys.__displayhook__(o) def hexon(): sys.displayhook = _displayhook def hexoff(): sys.displayhook=sys.__displayhook__ 

Algo como esto, tal vez?

 class HexInt(int): "Same as int, but __repr__() uses hex" def __repr__(self): return hex(self) 

Así que lo usarías cuando crees todos los enteros que quieras que se muestren como valores hexadecimales.

Ejemplo:

 >>> a = HexInt(12345) >>> b = HexInt(54321) >>> a 0x3039 >>> b 0xd431 >>> c = HexInt(a + b) >>> c 0x1046a 

Tenga en cuenta que si desea omitir la creación explícita de un nuevo HexInt al realizar operaciones aritméticas, tendrá que anular las versiones int existentes de los métodos como __add__() , __sub__() , etc., para que regresen. HexInt s.

Modificando la respuesta superior de python2 para python3 …

 def display_as_hex(item): if isinstance(item, int): print(hex(item)) else: print(repr(item)) import sys sys.displayhook = display_as_hex 

Podrías hacer algo como esto:

 while True: print hex(input('> ')) 

Para obtener una solicitud básica que imprima el valor hexadecimal de todos los resultados. Incluso podría hacerlo condicional: verifique si el tipo de retorno de input es una cadena o un número, y si lo es, imprima el valor hexadecimal, de lo contrario, imprima el valor normalmente.