如何在Python Shell中将内置变量_替换为自定义变量Ans?
如何让Python Shell中的
Ans变量像内置_一样存储最后输出结果 嘿,作为曾经也摸过TI-Basic的人,太懂这种习惯切换的别扭感了!想念Ans的便捷?没问题,我们可以轻松让Python Shell支持这个变量,和内置的_一样自动存储最后输出的结果。
核心原理:修改sys.displayhook
Python里的_变量并不是魔法——它是由sys.displayhook这个内置函数管理的。每次控制台输出一个表达式的结果时,这个函数会把结果赋值给_。我们只需要给这个函数加个“小补丁”,让它同时把结果赋值给Ans就行。
具体实现步骤
- 导入sys模块:
import sys
- 备份原始的displayhook(方便之后恢复默认行为):
original_hook = sys.displayhook
- 定义新的displayhook函数,在原有逻辑基础上添加
Ans的赋值:
def ans_hook(value): # 先执行原始hook的逻辑,确保_变量正常工作 original_hook(value) # 只有当输出结果不是None时(Python不会显示None),才赋值给Ans if value is not None: global Ans Ans = value
- 替换默认的displayhook:
sys.displayhook = ans_hook
测试效果
现在回到Python Shell里试试,效果和你熟悉的TI-Basic完全一致:
>>> 4 + 7 11 >>> _ 11 >>> Ans 11 >>> Test = 4 >>> Test + 3 7 >>> Ans 7
额外小贴士
- 持久化设置:上面的设置只在当前会话有效。如果想每次启动Python Shell都自动生效,可以把这些代码写入
~/.pythonrc.py文件,然后设置环境变量PYTHONSTARTUP指向这个文件(具体操作可以根据你的操作系统调整)。 - 和_的区别:
Ans的行为和_完全一致,不会存储赋值语句(比如x = 5)的结果,只会存储那些会在控制台显示的表达式结果。
内容的提问来源于stack exchange,提问作者Jakob Lovern
相关产品推荐
相关产品推荐

