有什么区别?

What's the difference between?

string1 = "15 > 4 "
string2 = "'15' > '4'"
print(eval(string1))
print(eval(string2))
True
False

正如标题所说。为什么同一个字符串有不同的值?

对于字符串 1,eval() 会将比较视为比较两个整数,而对于字符串 2,它会将其视为比较两个字符串。

15 > 4(整数)= 真

'15' > '4'(字符串)= 假

在比较“15”字符串和“4”字符串时,它会逐个字符地比较字符串,因此认为 15 更小,因为字符串以“1”开头,比“4”小" 当转换为它们的 Unicode 值时。

如果您要这样做:

string1 = "55 > 4 "
string2 = "'55' > '4'"
print(eval(string1))
print(eval(string2))

输出将是:

True
True

没有这些不同,因为第一个比较两个整数,而第二个比较字符串。

Python 字符串比较是使用两个字符串中的字符进行的。将两个字符串中的字符一一比较。当找到不同的字符时,就会比较它们的 Unicode 值。 Unicode 值越小的字符被认为越小。

这里 ord('1') 是 49,ord('4') 是 52,所以 49 < 52 我的意思是 '1' < '4' 所以它是 False

在第一种情况下,您比较的是整数。 在第二种情况下,您正在比较字符串。

由于字符串是逐个字符比较的,并且 4 大于 1,因此语句 '15' > '4' 的计算结果为 False