Python中表达式'a'>'b'返回False的原因?含print示例对比
为什么Python中
'a' > 'b'返回False,而'a' > 'A'返回True? 嘿,这个问题的核心在于Python对字符串的比较是基于字符的Unicode(或ASCII,因为ASCII是Unicode的子集)编码值来进行的,而不是单纯按我们日常认知的字母顺序来判断。具体拆解两个例子:
1. 'a' > 'b'返回False的原因
每个字符在Unicode/ASCII里都对应一个十进制的数值:
- 小写字母
'a'的编码值是97 - 小写字母
'b'的编码值是98
当Python执行'a' > 'b'时,其实是在比较97和98的大小——97显然小于98,所以结果自然是False。你可以用ord()函数直接查看字符的编码值:
print(ord('a')) # 输出 97 print(ord('b')) # 输出 98
2. 'a' > 'A'返回True的原因
同样看编码值:
- 大写字母
'A'的编码值是65 - 小写字母
'a'的编码值是97
97大于65,所以'a' > 'A'的结果就是True。同样可以用ord()验证:
print(ord('A')) # 输出 65 print(ord('a')) # 输出 97
简单总结一下:Python里字符串比较会逐个字符对比它们的编码值,编码值大的字符就被认为“更大”。这也是为什么大小写字母之间的比较结果和我们直觉里的字母顺序不一样——因为ASCII设计里大写字母的编码范围(65-90)是在小写字母(97-122)之前的。
内容的提问来源于stack exchange,提问作者Bandhu Bilash
相关产品推荐
相关产品推荐

