如何将新关键字添加到“关键字”模块中?

时间:2017-04-18 22:51:42

标签: python python-3.x

在将此标记为重复之前,请让我澄清一下。我不想定义新的关键字。我想将asyncawait放入关键字列表中,以便将它们作为IDLE中的关键字着色。

从版本3.5开始,asyncio不需要导入才能使用asyncawait(尽管极少数情况下您不会导入{{1} }}),所以我希望它们被着色为关键字。我不能忍受看到asyncio async def为橙色,但def为默认黑色。

我查看了async中的colorizer.py,虽然您可以通过模块本身为字符串前缀等着色(我已经为格式字符串执行了此操作),但您无法插入新的关键字,除了通过编辑idlelib。当我打开那个模块时,我看到了这个:

keywords

老实说,我不知道“建立翻译”是什么意思。有没有办法在安装过程中改变这个过程,还是我必须编辑C文件并运行它们?或者还有另一种更简单的方法吗?

1 个答案:

答案 0 :(得分:4)

您可以直接更新该模块动态

使用以下命令创建存储在家庭目录中的文件:

import keyword

keyword.kwlist += ['async', 'await']
keyword.iskeyword = frozenset(keyword.kwlist).__contains__

然后将IDLESTARTUP environment variable设置为指向该文件。现在每次使用-s开关启动IDLE时,您的keyword模块都会更新,以包含您想要的“关键字”。如果您发现-s开关过于繁琐,您也可以将文件移至$HOME/.Idle.py以无条件加载,或将其移至USER_SITE location以运行所有Python代码;后者确实带来了更大的风险。

顶部的警告提示您在从源代码构建Python解释器时生成该文件。如果您现在要在系统上编辑该文件,则不必担心该文件被替换。但是,如果您曾经升级过Python,那么很可能会被破坏,您必须再次进行更改。

请注意,在Python 3.7中,asyncawait 作为实际关键字,因此您无需等待那么长时间。在此期间,您可能想要选择更好的IDE。我使用Sublime Text 3和Atom,它们都支持MagicPython code highlighter,它已经正确地突出显示awaitasync