不能在 IDLE 中更改 sys.ps1

Can't change sys.ps1 in IDLE

我最近听说您可以通过更改变量 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 模块的另一个 functions/variables 已正确读取。

指定解释器的主要和次要提示符的提示字符串(本例中它们的初始值为>>> ... )仅在解释器处于时定义interactive 模式和 IDLE 或多或少是 Python

的集成开发环境

Python 交互模式:

sys.ps1 doc

请参阅 Python 错误跟踪器上的问题 #13657,"IDLE doesn't recognize resetting sys.ps1"。它于 2011 年开放,至今仍未解决(截至撰写本文时)。所以不可能从 IDLE 的 Python shell 中更改提示,因为 IDLE 不支持它。

更新(不到 24 小时后):问题现已关闭。在即将与 Python 3.10 一起发布的 IDLE 版本中,提示将以不同方式显示。请参阅上面 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。