gpt4 book ai didi

python-2.7 - py_compile 与导入中的编码

转载 作者:行者123 更新时间:2023-12-05 06:33:22 33 4
gpt4 key购买 nike

当使用 py_compile.compile 编译具有非 ASCII 字符的 python 脚本时,它不会提示编码。但是当导入时在 python 2.7 中给出

语法错误:文件中有非 ASCII 字符 '\xe2'

为什么会这样?使用 py_compile 导入和编译有什么区别?

最佳答案

似乎 Python 提供了其词法分析器的两种变体,一种在 Python 本身解析文件时在内部使用,另一种通过例如 Python 暴露给 Python。 __builtins__.compiletokenizer.generate_tokens。似乎只有前者检查非 ASCII 字符。它由 Parser/tokenizer.c 中的 #ifdef PGEN 控制。

我对他们这样做的原因有一个合格的猜测:在 Python 3 中,.py 文件中允许使用非 ASCII 字符,并被解释为 utf-8 IIRC。通过在词法分析器中默默地允许 UTF-8,2.7 的 tokenizer.generate_tokens() 函数可以接受所有有效的 Py3 代码。

关于python-2.7 - py_compile 与导入中的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50795296/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com