如果我在`print()`上导入`pprint()`会爆炸吗?

时间:2019-01-10 20:07:49

标签: python python-3.x

我注意到我可以做到这一点,并且至少从乍看之下就可以摆脱它:

from pprint import pprint as print

方便。但是我对此感到不好。如果我在不平凡的程序中尝试使用此方法,将会给我带来什么样的痛苦?

2 个答案:

答案 0 :(得分:4)

什么都不会爆炸,因为此导入只会更改您本地的namespace

  

命名空间是一个很棒的主意-让我们做更多的事吧!

您可以继续执行此操作,而不必担心会破坏其他名称空间或被污垢吞噬。

但是请注意,pprint call signatureprint不同,因此可能需要调整包含模块中的某些print行。我的建议是使用通常的名称pprint导入它,并使用文本编辑器的查找/替换功能相应地更改现有的print调用。

答案 1 :(得分:4)

请注意,pprint是用于转储Python数据结构的,因为它总是打印传递给它的数据结构中每个对象的__repr__方法的输出,因此不适合替代print

>>> b = '''Hemingway's "The Old Man and the Sea"'''
>>> print(b)
Hemingway's "The Old Man and the Sea"
>>> pprint(b)
'Hemingway\'s "The Old Man and the Sea"'

因此,如果用print替换内置的pprint函数并想打印一些可读的消息,您会发现所有这些意外的引号和转义序列看起来很有趣。