python - 在 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 解释器理解编码声明会很好。但我还没有找到一种方法来做到这一点。
解决方案
所以这就是在后台调用的内容 - https://github.com/pythonql/pythonql/blob/master/pythonql/codec/register.py#L28-L29 - 您需要做的就是将该编码设置为REPL 的控制台编码。启动后可能通过几个函数调用来实现。不过,对不起,我没有方便的调用。
不过,我们可能会接受一个允许直接通过 env 变量设置 repl 编码的功能,因为编码功能目前与控制台相比是不对称的,如图所示。
推荐阅读
- r - 如何使用 R 语言在 Word Cloud 中将上下文的一部分变成其他颜色?
- android - 在我的计算器应用程序中,我引入了四个按钮,但是当我在输入值之前单击它们时,应用程序崩溃了。如何解决这个问题呢
- c# - System.ArgumentNullException: '值不能为空。参数名称:providerInvariantName'
- php - php strpos()无法在字符串中找到括号
- javascript - RXJS - 做地图时返回可观察值
- vba - 尝试使用循环在 Excel 文件的最后一页上添加脚注
- swift - 返回包含数组的命名元组
- python - 如何从给定的单词列表中生成指定的句子
- wordpress - 关于 Flutter App 中 wordpress 插件 ACF(高级自定义字段)的“fontFamily”困难......(新手)
- spring-boot - 如何修复无法自动装配。Spring Boot中没有错误bean