Python控制台默认十六进制显示

Jon*_*art 8 python

我在Python控制台中做了很多工作,其中大部分是指地址,我更喜欢用十六进制来看.

因此a = 0xBADF00D,当我只是进入Python> a控制台查看其值时,我更喜欢用python来0xBADF00D代替而不是195948557.

我知道我可以输入'0x%X' % a以十六进制看到它,但我正在寻找某种python控制台选项让它自动执行此操作.有什么事情存在吗?谢谢!

Tho*_*ers 18

常规Python解释器将调用sys.displayhook以实际显示您输入的表达式.您可以将其替换为显示您想要的内容,但您必须记住,交互式解释器要显示的所有表达式都会调用它:

>>> 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'
Run Code Online (Sandbox Code Playgroud)

我怀疑你很快就会厌倦将所有整数视为十六进制,然后切换到显式转换你想要看作十六进制的那些整数.

  • 可以将整数打印为小数*和*十六进制. (2认同)

小智 5

基于之前的答案,这里有一个适用于 Python 2/3 的版本,不将布尔值显示为十六进制,并且还正确设置了变量_

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__
Run Code Online (Sandbox Code Playgroud)