在Python中定义Unicode变量
作者:互联网
最近,我一直在阅读有关Python源代码编码的信息,尤其是PEP 263和PEP 3120.
我有以下代码:
# coding:utf-8
s = 'abc∂´ƒ©'
ƒ = 'My name is'
ß = '˚ß˙ˆ†ˆ∆ ßå®åø©ˆ'
print('s =', s)
print('ƒ =', ƒ, 'ß =', ß)
这段代码在Python3上工作正常,但在Python2.7中导致SyntaxError.
我确实知道这可能与源代码编码无关.
因此,我想知道Python2中是否有一种支持Unicode变量名称的方法.
总之,我也很难弄清楚PEP到底要解决什么实际问题,以及如何(以及在哪里)利用所提出的解决方案.我已经读过很少的讨论,但是它们并没有为我的问题提供答案,而是对正确语法的解释:
> Correct way to define Python source code encoding
> Working with utf-8 encoding in Python source
> Where does this come from: -*- coding: utf-8 -*-
> Is ‘# -*- coding: utf-8 -*-‘ also a comment in Python?
解决方法:
不,Python 2仅支持ASCII名称.从the language reference开始:
identifier ::= (letter|”_”) (letter | digit | “_”)*
letter ::= lowercase | uppercase
lowercase ::= “a”…”z”
uppercase ::= “A”…”Z”
digit ::= “0”…”9”
相比之下,更长的Python 3 version具有完整的Unicode名称.
PEP解决的一个实际问题是,如果以前,如果源文件中出现了127个以上的字节(例如在unicode字符串内),那么Python就无法知道哪个字符意味着该字符,因为它可能是任何编码.现在,默认情况下将其解释为UTF-8,并且可以通过添加此类标头进行更改.
标签:python-3-5,python,python-2-7,unicode,encoding 来源: https://codeday.me/bug/20191011/1889476.html