python - "coding: pyxl"在 Python 中如何工作?

标签 python

pyxlinterpy正在使用一个非常有趣的技巧以某种方式增强 python 语法:coding: from PEP-263

# coding: pyxl
print <html><body>Hello World!</body></html>

# coding: interpy
package = "Interpy"
print "Enjoy #{package}!"

如果我愿意,我如何编写自己的coding:?我可以使用多个吗?

最佳答案

我是 Syrus,interpy 的创建者。

多亏了 Python 中的编解码器 # coding: your_codec_name,我们才有机会在文件转换为字节码之前对其进行预处理。

它是这样工作的:

读取文件内容

首先,Python 读取文件并存储 其内容。由于内容可能以一种奇怪的格式编码,Python 尝试对其进行解码。这就是奇迹发生的地方

如果找不到编码,Python 将尝试使用默认字符串编码对内容进行解码:Ascii 或 UTF-8 编解码器,具体取决于 Python 版本。这就是为什么在 Python 2 中使用不常见的字符(á、ñ、Ð、...)时必须编写 # coding: utf-8,因为 Ascii 是默认字符。

解码文件内容

如果我们 register a custom codec (编码器和解码器),一个文件告诉 Python 它正在使用我们的编解码器(通过 # coding: codec_name),然后 Python 将使用我们的编解码器解码该文件。

注册我们的编解码器

为了在不需要导入的情况下注册编解码器,我们创建了一个 path configuration file (.pth) registers执行任何非主模块之前的编解码器。

转换文件内容

曾经是我们codec is called的解码器,我们可以修改我们想要的输出,但是......我们如何知道这个内容中的 Python 语法(标记)?

只需调用 Python tokenizer使用文件内容并修改所需的标记。

interpy 的情况下,它仅在 Python strings are found 时更改行为在文件内容中。

发回转换(解码)的内容

转换内容后,我们将其发送回 Python 编译器以编译为字节码。

希望你觉得这很有用!

关于python - "coding: pyxl"在 Python 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20992179/

相关文章:

python - SQLAlchemy 获取最大值

Python 多处理 : Start/stop processes on server

python - 大型 Numpy Scipy CSR 矩阵,按行操作

python - 更改 python matplotlib 中的子图大小

python - 接近 x.0 时奇怪的 Python 行为

python - Matplotlib:等高线图顶部的前景散点图

python - 云形成 : Reference and use Parameters in inline python code for custom resource?

python - 使用 NLTK 识别字符串中的日期

python - 如何使用 Selenium 浏览整个网站?

python - 如何使用 NetworkX 创建两个相同的图