问题描述
我最近听说您可以通过更改变量 sys.ps1
来更改 Python 中的提示。所以我决定打开 IDLE,然后写一些类似的东西:
>>> import sys
>>> sys.ps1 = ":::"
但是,这创建了一个新变量并且没有任何变化(提示仍然是“>>>”) - 我重新启动了 IDLE 并检查了这个变量是否被 python 读取......不:
>>> sys.ps1
Traceback (most recent call last):
File "<pyshell#1>",line 1,in <module>
sys.ps1
AttributeError: module 'sys' has no attribute 'ps1'
那么,如何在python中更改提示? 注意:sys 模块的其他函数/变量已正确读取。
解决方法
指定解释器的主要和次要提示(在这种情况下它们的初始值为 >>>
和 ...
)的提示字符串仅在解释器处于 交互式时才定义> 模式和 IDLE 或多或少是 Python 的集成开发环境
请参阅 Python 错误跟踪器上的问题 #13657 "IDLE doesn't recognize resetting sys.ps1"。它于 2011 年开放,但仍未解决(截至撰写本文时)。因此,不能仅仅因为 IDLE 不支持而从 IDLE 的 Python shell 中更改提示。
更新(不到 24 小时后):问题现已关闭。在即将随 Python 3.10 发布的 IDLE 版本中,提示的显示方式将有所不同。请参阅上面空闲开发人员 Terry Jan Reedy 的评论。将来可能会添加更改提示的设置。
在当前和更早的 Python/IDLE 版本中,可以在启动 IDLE 之前自定义提示,但不能在运行它时自定义。您需要一个执行此操作的小启动脚本:
import sys
sys.ps1 = '::: '
import idlelib.idle
您收到该错误消息 (module 'sys' has no attribute 'ps1'
) 的原因是 IDLE 呈现给您的 Python shell 实际上并未处于“交互”模式。然后才定义 sys.ps1
。如果您尝试在任何其他直接执行的 Python 程序中访问 sys.ps1
,您会看到相同的错误消息。在这种情况下,该 Python 程序本身就是 IDLE。