为什么 IDLE 的 Shell 颜色编码关键字在用户响应输入(提示)?

Why is IDLE's Shell color coding keywords in user response to input(prompt)?

我正在开发一个 Python 3 程序,该程序通过 Python Shell 从用户那里获取输入。出于某种原因,当我将信息输入 shell 时(一旦输入要求信息...),它会用特定颜色为关键字和函数着色。

例如,如果我输入 "John is blue"。它会将单词 "is" 着色为关键字(技术上是这样,但这是字符串输入)。

我无法提出与 google 相关的任何内容,所以我将问题带到这里。谢谢

这是运行输入的代码。

    if __name__ == '__main__':

            global string
            string = str(input('Enter info: '))
            string = bytes(string.encode("utf-8"))
            c = cont.key_gen_01()
            c.func_01()



            run_a = obf_01()
            run_a.func_02()
           #run_a.func_03()
            run_a.func_04()

            run_a.func_05(string)

屏幕截图:

Python input() 函数不会也不能对您输入的文本的显示方式做任何事情。它只会在您输入并按下回车键后接收文本。相反,颜色更改由 IDLE shell window 应用,它实现了 Python 解释器连接到的输入和输出环境。

IDLE Python shell 在突出显示时将 所有 用户输入视为 Python 源代码。这只是文本在显示器上呈现方式的变化,它对从 input() 函数返回的字符串值没有影响。

其他环境(IDE 控制台、终端 windows、笔记本 UI 等)可以充当 Python 交互式解释器的前端显示,每个环境都可以有自己特定的处理文本的方法。

在 IDLE 编辑器和 Shell windows 中着色是由 IDLE 语法着色器完成的。在 Shell 中,它还为控制台提示('>>>')、内部 IDLE 错误(现在极为罕见)、用户代码回溯和用户代码输出着色。 (颜色都可以在“设置”对话框的“突出显示”选项卡上自定义。)因此不应在代码输入之间关闭着色器。

除非您的程序请求输入 python 代码,否则我认为着色 input() 响应是一个小错误。但是如何告诉着色器忽略它们并不明显。对于显示器,input() 提示是正常输出。除此之外,可以在提示之前输入响应。在出现提示前按或不按 ENTER 尝试以下操作。

import time; time.sleep(5); s = input('what??? '); print(s)

以上在 python 中也有效,但至少在 Windows 控制台中,在显示提示之前我看不到该条目。

您可以使用 python pygments 打印语法高亮文本 开始使用的好方法是 prompt_toolkit 模块,它支持 pygments 和大量命令行功能

然后你可以创建一个prompt()作为输入,并设置pygments lexer

查看 prompt_toolkit 文档或 https://replit.com/@CodinUser/PyShell-15 查看语法高亮输入 pygments 的真实用法 prompt_toolkit