Ksh*_*ogi 3 python unicode encoding python-2.7 python-3.5
最近,我一直在阅读Python源代码编码,尤其是PEP 263和PEP 3120.
我有以下代码:
# coding:utf-8
s = 'abc?´ƒ©'
ƒ = 'My name is'
ß = '?ß?ˆ†ˆ? ßå®åø©ˆ'
print('s =', s)
print('ƒ =', ƒ, 'ß =', ß)
Run Code Online (Sandbox Code Playgroud)
此代码适用于Python3,但SyntaxError
在Python2.7中生成.
我知道这可能与源代码编码无关.
所以,我想知道是否有办法在Python2中支持Unicode变量名.
总而言之,我也很难弄清楚PEP究竟要解决的实际问题以及我如何(以及在何处)利用所提出的解决方案.我已经阅读了相同的讨论,但他们没有提出我的问题的答案,而是对正确语法的解释:
不,Python 2仅支持ASCII名称.从语言参考:
identifier ::= (letter|”_”) (letter | digit | “_”)*
letter ::= lowercase | uppercase
lowercase ::= “a”…”z”
uppercase ::= “A”…”Z”
digit ::= “0”…”9”
Run Code Online (Sandbox Code Playgroud)
比较长得多的Python 3版本,它具有完整的Unicode名称.
PEP解决的实际问题是,如果在源文件中出现超过127的字节(比如在unicode字符串中),那么Python无法知道哪个字符是什么意思,因为它可能是任何编码.现在它默认被解释为UTF-8,可以通过添加这样的标题来改变它.
归档时间: |
|
查看次数: |
572 次 |
最近记录: |