我正在努力更好地理解Python,缺少圆括号可能有点令人困惑。
根据参考手册,根据Python 2.4参考手册,not和比较具有不同的优先级。 然后在Python 2.7参考手册中,not和比较具有相同的优先级。
如果我没错的话
我坚持使用
(not a < b < c)
如何计算? 是(not a) < b < c
? 还是not (a < b < c)
?根据参考手册,
not
的优先级高还是低于<
? 我假设优先级高的运算符比优先级低的运算符先运算,对吗? 我觉得我现在需要有人拿出袜子偶像了。
not a < b < c
会因Python版本的不同而产生不同的结果。 请问有人可以分享一下如何计算这个语句的?我坚持使用
not (a < b < c)
。
a < b < c
与(a < b) and (a < c) and (b < c)
并不相同,有两个原因--您可以重载比较操作,所以它们不一定是可交换的,并且链式比较被展开为(a < b) and (b < c)
;它并不涉及到a
和c
的关系。 - agfdis
和ast
模块在这种情况下非常有帮助,例如:dis.dis(lambda a,b,c: not a < b < c)
和print(ast.dump(ast.parse('not a < b < c')))
. 编译器是无可争议的。 - Eryk Sun