当使用py_compile.compile编译一个包含非ASCII字符的Python脚本时,它不会抱怨编码问题。但是在Python 2.7中导入时会出现"SyntaxError: Non-ASCII character '\xe2' in file"错误。为什么会这样?导入和使用py_compile.compile有什么区别?
__builtins__.compile
或tokenizer.generate_tokens
等方式向Python公开。仅前者检查非ASCII字符。这由Parser/tokenizer.c中的#ifdef PGEN
控制。tokenizer.generate_tokens()
函数可以接受所有有效的Py3代码。