在将此标记为重复之前,请让我澄清一下。我不想定义新的关键字。我想将async
和await
放入关键字列表中,以便将它们作为IDLE中的关键字着色。
从版本3.5开始,asyncio
不需要导入才能使用async
和await
(尽管极少数情况下您不会导入{{1} }}),所以我希望它们被着色为关键字。我不能忍受看到asyncio
async def
为橙色,但def
为默认黑色。
我查看了async
中的colorizer.py
,虽然您可以通过模块本身为字符串前缀等着色(我已经为格式字符串执行了此操作),但您无法插入新的关键字,除了通过编辑idlelib
。当我打开那个模块时,我看到了这个:
keywords
老实说,我不知道“建立翻译”是什么意思。有没有办法在安装过程中改变这个过程,还是我必须编辑C文件并运行它们?或者还有另一种更简单的方法吗?
答案 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中,async
和await
将作为实际关键字,因此您无需等待那么长时间。在此期间,您可能想要选择更好的IDE。我使用Sublime Text 3和Atom,它们都支持MagicPython code highlighter,它已经正确地突出显示await
和async
。