编程语言
首页 > 编程语言> > 在Python中定义Unicode变量

在Python中定义Unicode变量

作者:互联网

最近,我一直在阅读有关Python源代码编码的信息,尤其是PEP 263PEP 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