我将举办一个 Python 研讨会,教授我大学 Python 的一些初级程序员。
我正在寻找一种方法来修改 Python 交互式 session 的默认行为,以便表达式不会自动打印出结果。例如,采取以下交互式 session :
wil@calcifer:~$ python
Python 2.7.3 (default, Aug 1 2012, 05:16:07)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> x = 5
>>> y = 7
>>> x + y
12
>>> first_name = "Test"
>>> last_name = "Person"
>>> first_name + last_name
'TestPerson'
>>>
这将强制使用 print 语句以避免以后混淆。 这并不重要,但令我惊讶的是我无法在任何地方找到任何设置。
我可以预先配置机器,因此任何解决方案都可以使用。有谁知道这是否可能,或者交互式 session 的哪些更改会产生这种效果?
请您参考如下方法:
交互式 session 中的表达式打印是通过调用 sys.displayhook。只需将其重写为 NOP:
>>> import sys
>>> sys.displayhook = lambda x: None
>>> 2 + 3
>>> print 2 + 3
5
>>>
在普通 Python session 中,它连接到 sys.stdout。在 GUI 上提供 Python shell 的应用程序被期望使用它来将表达式值打印回给用户。
您可以编写 pythonrc.py(~/.pythonrc.py 文件)默认执行此操作,每次调用解释器时。 可以在此处找到有关 sys.displayhook 的更多文档: http://docs.python.org/3/library/sys.html#sys.displayhook
