这些前缀在解释器中进行了硬编码,您不能注册更多的前缀。
但是,您 可以 做的是通过使用 自定义源编解码器 预处理Python文件。这是一个相当简洁的技巧,要求您注册一个自定义编解码器,并了解和应用源代码转换。
# coding: utf-8
会告诉Python使用UTF-8编码的源代码,并在解析之前对文件进行相应的解码。Python在codecs
模块注册表中为此查找编解码器。而且你可以注册自己的编解码器 。
该pyxl项目使用这种伎俩来从Python文件解析出的HTML语法与实际的Python语法来替换它们构建HTML,尽在“解码”的一步。请参阅该项目中的codec
包,其中该register
模块注册了一个自定义codec
搜索功能,该功能可以在Python实际解析和编译源代码之前转换源代码。将自定义.pth
文件安装到您的site- packages
目录中,以在Python启动时加载此注册步骤。另一个做同样的事情来解析Ruby样式的字符串格式的项目是interpy
。
然后,您所需要做的就是也构建这样的编解码器,该编解码器将解析Python源文件(对它进行标记,也许使用tokenize
module标记),并用mystr(<string literal>)
调用的自定义前缀替换字符串文字。要解析的任何文件都用标记# coding: yourcustomcodec
。
我将把这一部分留给读者练习。祝好运!
注意,此转换的结果然后被编译成字节码,并被缓存;您的转换只需在每个源代码修订版中运行 一次 ,使用您的编解码器的模块的所有其他导入将加载缓存的字节码。