print( ('abc', 1, 2) > ('aaa', 777, 'ssst..') )
print( ('abc', 1, 2) > ('abc', 1, 'ssst..') )
结果:
True
Traceback (most recent call last):
File "//frserv-bu.playtika.local/users$/constantinio/Documents/Python_course/Sedinta3/ex.py", line 33, in <module>
print( ('abc', 1, 2) > ('abc', 1, 'ssst..') )
TypeError: '>' not supported between instances of 'int' and 'str'
Process finished with exit code 1
在第一种情况下,
'abc'
和'aaa'
之间的比较已经给出了一个结果('abc'
在词典上比'aaa'
大),因此不执行其余的比较(比较是“短路的”)在第二种情况下,由于所有先前的元素都相等,因此将执行到最后一个元素的比较。
2
和'ssst...'
之间的比较失败,出现了一个异常,因为前者的类型为int
,后者的类型为str
第一次比较是将
'abc'
与'aaa'
进行比较,然后它知道结果是什么,不必继续到其他元素在第二次比较中,元组对于前两个元素具有相同的值,因此它必须检查第三个元素,在这一点上,它尝试将
2
与'ssst..'
进行比较,这会导致您看到的错误元组的比较从左开始逐元素进行,直到可以比较不相等的值为止。就是
相当于(带有一些多余的括号)
或者以声明的形式
在您的示例中,比较
a > x
和b > y
有效,但c > z
无效,因为只能对相同类型的值进行排序。因为只有在必要时才会进行比较,所以只有在a == x
和b == y
时才会出现错误相关问题 更多 >
编程相关推荐