python编写两式比较的表达式_在Python中编写一个双不等式时,操作符的优先级是什么(在代码中显式显示,对于数组,如何重写它?)...

我不完全确定您要查找的是什么,但快速反汇编显示a < b < c不是编译成与a < b and b < c相同的字节码的>>> import dis

>>>

>>> def f(a, b, c):

... return a < b < c

...

>>> dis.dis(f)

2 0 LOAD_FAST 0 (a)

3 LOAD_FAST 1 (b)

6 DUP_TOP

7 ROT_THREE

8 COMPARE_OP 0 (

11 JUMP_IF_FALSE_OR_POP 21

14 LOAD_FAST 2 (c)

17 COMPARE_OP 0 (

20 RETURN_VALUE

>> 21 ROT_TWO

22 POP_TOP

23 RETURN_VALUE

>>>

>>> def f(a, b, c):

... return a < b and b < c

...

>>> dis.dis(f)

2 0 LOAD_FAST 0 (a)

3 LOAD_FAST 1 (b)

6 COMPARE_OP 0 (

9 JUMP_IF_FALSE_OR_POP 21

12 LOAD_FAST 1 (b)

15 LOAD_FAST 2 (c)

18 COMPARE_OP 0 (

>> 21 RETURN_VALUE

编辑1:进一步挖掘,我认为这是numpy的奇怪之处或错误之处。考虑一下这个示例代码,我认为它可以如您所期望的那样工作。class Object(object):

def __init__(self, values):

self.values = values

def __lt__(self, other):

return [x < other for x in self.values]

def __gt__(self, other):

return [x > other for x in self.values]

x = Object([1, 2, 3])

print x < 5 # [True, True, True]

print x > 5 # [False, False, False]

print 0 < x < 5 # [True, True, True]

编辑2:实际上这并不能“正常”工作。。。print 1 < x # [False, True, True]

print x < 3 # [True, True, False]

print 1 < x < 3 # [True, True, False]

我认为这是在第二次比较1 < x < 3时将布尔值与数字进行比较。

编辑3:我不喜欢从gt、lt、gte、lte特殊方法返回非布尔值的想法,但根据Python文档,它实际上不受限制。By convention, False and True are returned for a successful

comparison. However, these methods can return any value...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值