1.22 字母也玩起了障眼法

image0

以下我分别在 Python2.7 和 Python 3.7 的 console 模式下,运行了如下代码。

在Python 2.x 中

>>> valuе = 32
  File "<stdin>", line 1
    valuе = 32
        ^
SyntaxError: invalid syntax

在Python 3.x 中

>>> valuе = 32
>>> value
11

什么?没有截图你不信?

image1

如果你在自己的电脑上尝试一下,结果可能是这样的

image2

怎么又好了呢?

如果你想复现的话,请复制我这边给出的代码:valuе = 32

这是为什么呢?

原因在于,我上面使用的 value 变量名里的 е 又不是我们熟悉的 e,它是 Cyrillic(西里尔)字母。

>>> ord('е') # cyrillic 'e' (Ye)
1077
>>> ord('e') # latin 'e', as used in English and typed using standard keyboard
101
>>> 'е' == 'e'
False

细思恐极,在这里可千万不要得罪同事们,万一离职的时候,对方把你项目里的 e 全局替换成 e,到时候你就哭去吧,肉眼根本看不出来嘛。

image3