在python解释器中执行编码指令

2024-04-29 06:36:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用PythonQL,发现学习该语言的复杂性需要一点时间,所以我想用pythonesque的方式直接在解释器中进行尝试。我如何指示口译员注意我的编码声明?为了让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解释器理解编码声明会很好。但我还没有找到一种方法来做到这一点


Tags: pip文件代码in声明编码for方式
2条回答

你在做编码声明。它不改变REPL的解释器,只改变脚本(文件)

在标准REPL中,它被解释为注释

注意,您的代码与list(range(2))相同

您可能可以使用IPython或Jupyter

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

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

相关问题 更多 >