你可以复制这行代码, 放在你的 Python 环境中测试:
#!/usr/bin/env python
# _*_ Coding: UTF-8 _*_
print("А" == "A")
最后你会惊奇的发现,
返回了一个大大的 False。
在 Python 中 == 是用于值的比较符,
和 is 不同,
is 比较的是对象储存的虚拟空间 ID 是否一致,
例如:
#!/usr/bin/env python
# _*_ Coding: UTF-8 _*_
medusa_1 = [1, 2, 3]
medusa_2 = medusa_1
medusa_3 = [1, 2, 3]
print(medusa_1 == medusa_2) # True
print(medusa_2 == medusa_3) # True
print(medusa_1 is medusa_2) # True
print(medusa_2 is medusa_3) # False
在看我们的测试的代码中,
为什么 "A" == "А" 是 False 了,
按照我们分析,
值相同的情况下应该是 True 才对,
难道值 不相等?
解析
其实两个字符并不相等,
因为第一个字母看起来像是英文字母 A,
实际上这是俄语的首字母 А,
所以在 Python 中这两个并不相等,
哪怕你用他们作为变量名,
可能会遇到没有定义的错误信息。
看到这儿了, 当你想写出别人难以维护的代码的时候, 就可以使用这样的方式了:
- 曲解单词含义
- 使用
j、k、i等简称变量名 - 使用非英文单词命名
- 故意写错拼写字母
当然, 你可能还有更高级的方法。
混淆字母对应表
| 俄语 | 英语 | 俄语 | 英语 | ||
|---|---|---|---|---|---|
А | A | В | B | ||
Е | E | И | N | ||
К | K | М | M | ||
Н | H | О | O | ||
Р | P | С | C | ||
Т | T | У | Y | ||
Х | X | а | a | ||
в | B | е | e | ||
к | K | м | M | ||
н | H | о | o | ||
р | p | с | c | ||
т | T | у | y | ||
х | x |
| 希腊 | 英语 | 希腊 | 英语 |
|---|---|---|---|
Α | A | Β | B |
Ε | E | Ζ | Z |
Η | H | Ι | I |
Κ | K | Μ | M |
Ν | N | Ο | O |
Ρ | P | Τ | T |
Υ | Y | Χ | X |
γ | y | κ | K |
ν | v | ο | o |
ρ | p | χ | X |
内心一定住了一个小恶魔😈