Impresión bonita por defecto en Python REPL

¿Cómo puedo habilitar la impresión bonita en el REPL por defecto?

Actualmente lo hago usando la función pprint.pprint() .

 >>> pprint.pprint(data) {'SHIP_CATEGORY': '', 'SHIP_QUANTITY': 1, 'SHIP_SEPARATELY': 0, 'SHIP_SUPPLEMENT': 0, 'SHIP_SUPPLEMENT_ONCE': 0, 'THUMBNAIL': ''} 

Pero quiero bastante imprimir por defecto

 >>> data {'SHIP_CATEGORY': '', 'SHIP_QUANTITY': 1, 'SHIP_SEPARATELY': 0, 'SHIP_SUPPLEMENT': 0, 'SHIP_SUPPLEMENT_ONCE': 0, 'THUMBNAIL': ''} 

¿Qué he intentado?
Busqué en google. No se encontró nada que la mayoría de los puntos de resultado para pprint módulo

Usa sys.displayhook

 import pprint import sys orig_displayhook = sys.displayhook def myhook(value): if value != None: __builtins__._ = value pprint.pprint(value) __builtins__.pprint_on = lambda: setattr(sys, 'displayhook', myhook) __builtins__.pprint_off = lambda: setattr(sys, 'displayhook', orig_displayhook) 

Ponga el código anterior en PYTHONSTARTUP si no desea escribirlo cada vez que ejecute shell interactivo.

Uso:

 >>> data = dict.fromkeys(range(10)) >>> data {0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None} >>> pprint_on() >>> data {0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None} >>> pprint_off() >>> data {0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None} 

Use el shell de IPython :

 In [10]: data = {'SHIP_CATEGORY': '', 'SHIP_QUANTITY': 1, 'SHIP_SEPARATELY': 0, 'SHIP_SUPPLEMENT': 0, 'SHIP_SUPPLEMENT_ONCE': 0,} In [11]: data Out[11]: {'SHIP_CATEGORY': '', 'SHIP_QUANTITY': 1, 'SHIP_SEPARATELY': 0, 'SHIP_SUPPLEMENT': 0, 'SHIP_SUPPLEMENT_ONCE': 0} 

También tiene una opción --no-pprint en caso de que desee desactivar esta impresión bonita.

IPython shell de IPython también tiene características como la finalización de tabs, el pegado multilínea, ejecutar comandos de shell, etc. Por lo tanto, es bastante mejor que el shell de Python normal.