链接比较运算符python中的分离表达式

链接比较运算符python中的分离表达式,python,python-3.x,comparison,operators,boolean-expression,Python,Python 3.x,Comparison,Operators,Boolean Expression,有人能解释一下exp1和exp2到底在做什么吗?请将每个案例分开,以便理解 a, b, c, d, e, f = 0, 5, 12, 0, 15, 15 exp1 = a <= b < c > d is not e is f exp2 = a is d > f is not c print(exp1) print(exp2) a、b、c、d、e、f=0、5、12、0、15、15 exp1=ad不是e是f exp2=a是d>f不是c 打印(exp1) 打印(e

有人能解释一下exp1和exp2到底在做什么吗?请将每个案例分开,以便理解

a, b, c, d, e, f = 0, 5, 12, 0, 15, 15

exp1 = a <= b < c > d is not e is f 
exp2 = a is d > f is not c 

print(exp1) 
print(exp2) 
a、b、c、d、e、f=0、5、12、0、15、15
exp1=ad不是e是f
exp2=a是d>f不是c
打印(exp1)
打印(exp2)
exp1=ad不是e是f
被评估为
a 48 ROT\u TWO
50件流行上衣
52返回值

在[10]中,dis.dis('a您可以阅读比较链接。将第一个读作
exp1=(ad)和(d不是e)和(e是f)
is
的使用可能会导致奇怪的结果。如果使用
a、b、c、d、e=0、5、12、0、1500
,在下一行
f=1500
中,您将得到
exp1
的不同结果(至少在空闲状态下)@Matthias是的,绝对是,
=
是不一样的。初学者往往会混淆它们。我从来没有看过字节码。这是一个很好的字节码。你是如何加载这些字节码的?它们是如何有用或有益的?当我们需要看到它们时@ch3ster@NiazAhmedRaza
导入dis
。我使用它只是想看看下面发生了什么罩。
In [8]: import dis

In [9]: dis.dis('a <= b < c > d is not e is f')
  1           0 LOAD_NAME                0 (a)
              2 LOAD_NAME                1 (b)
              4 DUP_TOP
              6 ROT_THREE
              8 COMPARE_OP               1 (<=)
             10 JUMP_IF_FALSE_OR_POP    48
             12 LOAD_NAME                2 (c)
             14 DUP_TOP
             16 ROT_THREE
             18 COMPARE_OP               0 (<)
             20 JUMP_IF_FALSE_OR_POP    48
             22 LOAD_NAME                3 (d)
             24 DUP_TOP
             26 ROT_THREE
             28 COMPARE_OP               4 (>)
             30 JUMP_IF_FALSE_OR_POP    48
             32 LOAD_NAME                4 (e)
             34 DUP_TOP
             36 ROT_THREE
             38 COMPARE_OP               9 (is not)
             40 JUMP_IF_FALSE_OR_POP    48
             42 LOAD_NAME                5 (f)
             44 COMPARE_OP               8 (is)
             46 RETURN_VALUE
        >>   48 ROT_TWO
             50 POP_TOP
             52 RETURN_VALUE

In [10]: dis.dis('a<=b and b<c and c>d and d is not e and e is f')
  1           0 LOAD_NAME                0 (a)
              2 LOAD_NAME                1 (b)
              4 COMPARE_OP               1 (<=)
              6 JUMP_IF_FALSE_OR_POP    38
              8 LOAD_NAME                1 (b)
             10 LOAD_NAME                2 (c)
             12 COMPARE_OP               0 (<)
             14 JUMP_IF_FALSE_OR_POP    38
             16 LOAD_NAME                2 (c)
             18 LOAD_NAME                3 (d)
             20 COMPARE_OP               4 (>)
             22 JUMP_IF_FALSE_OR_POP    38
             24 LOAD_NAME                3 (d)
             26 LOAD_NAME                4 (e)
             28 COMPARE_OP               9 (is not)
             30 JUMP_IF_FALSE_OR_POP    38
             32 LOAD_NAME                4 (e)
             34 LOAD_NAME                5 (f)
             36 COMPARE_OP               8 (is)
        >>   38 RETURN_VALUE