我将参加一个Python研讨会,在我的大学Python中教一些初级程序员。
我正在寻找一种方法来修改Python交互式会话的默认行为,以便表达式不会自动打印出结果。例如,进行以下交互式会话:
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
语句以避免以后混淆。
这并不重要,但我很惊讶我无法在任何地方找到任何设置。
我可以事先预先配置机器,因此任何解决方案都可以。有没有人知道这是否可行,或者交互式会话的哪些变化会产生这种效果?
答案 0 :(得分:7)
交互式会话中的表达式打印是通过调用来调解的
sys.displayhook
。只需将其覆盖为NOP:
>>> import sys
>>> sys.displayhook = lambda x: None
>>> 2 + 3
>>> print 2 + 3
5
>>>
在普通的Python会话中,它连接到sys.stdout。在GUI上提供Python shell的应用程序被指示使用它将表达式值打印回用户。
每次调用解释器时,您都可以编写pythonrc.py(〜/ .pythonrc.py文件)来默认执行此操作。 有关sys.displayhook的更多文档,请访问: http://docs.python.org/3/library/sys.html#sys.displayhook
答案 1 :(得分:1)
我认为您不能将shell配置为抑制表达式的结果,但如果您只是将每个表达式分配给变量,它会起作用吗?它不会打印任何东西......
E.G。
x=5
y=7
z = x+y
答案 2 :(得分:1)
我知道你没有来这里接受教学建议,但没有输出,x + y
应该做什么?如果您不希望将值输出或存储在任何地方,为什么要输入它呢?
你的学生会感到困惑:“x + y
做了什么?”
如果要显示某个表达式,只需在其前面始终放置print
语句,或将其指定给值。
我发现人们常常因此而感到困惑,以至于他们不知道return
实际上给了他们价值回报,他们总是想要使用print
。不要忘记您可以交互式定义函数,并将返回值放在那里。然后你可以告诉他们函数返回那个值,即使没有print
s。