在Python中定义unicode变量

Defining unicode variables in Python

最近,我一直在阅读关于python源代码编码的文章,特别是pep 263和pep 3120。

我有以下代码:

1
2
3
4
5
6
7
# coding:utf-8

s = 'abc?′??'
? = 'My name is'
? = '??˙???? ???????'
print('s =', s)
print('? =', ?, '? =', ?)

此代码对python3很好,但在python2.7中会导致SyntaxError。我确实理解这可能与源代码编码无关。所以,我想知道是否有一种方法可以支持python2中的unicode变量名。

总之,我也很难弄清楚政治公众人物到底要解决什么务实问题,以及我如何(以及在哪里)利用提议的解决方案。我读过一些关于这个问题的讨论,但它们并没有回答我的问题,而是解释了正确的语法:

  • 定义Python源代码编码的正确方法
  • 在python源代码中使用utf-8编码
  • 这是从哪里来的?*-编码:utf-8-*-
  • "-*-编码:utf-8-*-"也是Python中的注释吗?


不支持,python2只支持ASCII名称。从语言参考:

1
2
3
4
5
identifier ::=  (letter|"_") (letter | digit |"_")*
letter     ::=  lowercase | uppercase
lowercase  ::= "a""z"
uppercase  ::= "A""Z"
digit      ::= "0""9"

与长得多的python 3版本相比,它有完整的unicode名称。

PEPS解决的实际问题是,以前,如果源文件(比如在Unicode字符串中)中出现超过127个字节,那么Python就无法知道这意味着什么字符,因为它可能是任何编码。现在默认情况下它被解释为UTF-8,并且可以通过添加这样的头进行更改。


我不认为这两篇文章是关于在变量名是beta符号的意义上进行编码,而是关于变量值中的编码。

因此,如果您将代码更改为这个示例:

1
2
3
4
5
6
7
8
#!/usr/bin/env python
# -*- coding: utf-8 -*-

a = 'abc?′??'
b = 'My name is'
c = '°?????? ???????'
print 'a =', a # by the way, the brackets are only used in python 3, so they are also being displayed when running the code in python 2.7
print 'b =', b, 'c =', c

希望能回答你的问题

问候语框架