如何强制str(f)产生与f相同的输出?

2024-06-24 13:53:42 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面的代码中,我不明白为什么x.__str__()str(x)会产生不同的结果:

import gc

def mystr(self): return "{:.8f}".format(self)

underlying_dict = gc.get_referents(float.__dict__)[0]
underlying_dict["__repr__"] = mystr
underlying_dict["__str__"] = mystr

# I want to see 0.12345679
x = 0.123456789

print 1, "{:.8f}".format(x) # works
print 2, mystr(x)           # works
print 3, x                  # fails
print 4, x.__str__()        # works
print 5, x.__repr__()       # works
print 6, str(x)             # fails
print 7, type(x)            # just checking the type

Tags: 代码importselfformatdeftypegcdict
1条回答
网友
1楼 · 发布于 2024-06-24 13:53:42

我把问题限制在比较str(x)x.__str__()

在REPL(Python 2或Python 3)中:

>>> x = 0.123456789
>>> print(str(x))
0.123456789
>>> print(x.__str__())
0.123456789

使用IPython3:

In [2]: x = 0.123456789
   ...:    ...: print(str(x))
   ...:    ...: print(x.__str__())
   ...: 
0.123456789
0.123456789

但我在Jupyter笔记本上执行时遇到了和你一样的问题:

x = 0.123456789
print(str(x))
print(x.__str__())

#0.123456789
#0.12345679

所以,这个问题似乎和朱庇特有关。但我还没找到更多的线索

相关问题 更多 >