首页 > 解决方案 > 在 python 解释器中执行编码指令

问题描述

我正在使用 PythonQL,发现学习语言的复杂性需要一些时间,所以我想以 Python 式的方式直接在解释器中进行尝试。如何指示解释器注意我的编码声明?需要声明才能让 PythonQL 理解我的代码。解释器 REPL 循环似乎通过更改提示来理解声明,但它并没有遵循运行声明处理。这是一些说明问题的代码。

$ pip install pythonql3

... 来自 pip 的输出

$ python
Python 3.6.5 |Anaconda, Inc.| (default, Apr 26 2018, 08:42:37) 
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> #coding: pythonql
... x = [ select x for x in range(0,2) ]
  File "<stdin>", line 2
    x = [ select x for x in range(0,2) ]
                 ^
SyntaxError: invalid syntax
>>>

python 解释器忽略编码声明,因此“选择”炸弹,因为它不是合法的 python。

但是,如果我们从文件中运行相同的代码,一切正常,因为 python 文件处理确实会监听声明。

$ cat <<EOF > x.py
> #coding: pythonql
> x = [ select x for x in range(0,2) ]
> print(x)
> EOF
$ python x.py
[0, 1]
$

因此,以某种方式指导 python 解释器理解编码声明会很好。但我还没有找到一种方法来做到这一点。

标签: python

解决方案


所以这就是在后台调用的内容 - https://github.com/pythonql/pythonql/blob/master/pythonql/codec/register.py#L28-L29 - 您需要做的就是将该编码设置为REPL 的控制台编码。启动后可能通过几个函数调用来实现。不过,对不起,我没有方便的调用。

不过,我们可能会接受一个允许直接通过 env 变量设置 repl 编码的功能,因为编码功能目前与控制台相比是不对称的,如图所示。


推荐阅读