链接比较运算符python中的分离表达式
有人能解释一下exp1和exp2到底在做什么吗?请将每个案例分开,以便理解链接比较运算符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
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