python notin_使用'not'和'in'关键字的语法顺序

他们总是给出相同的结果。

实际上,not 'ham' in 'spam and eggs'在特殊情况下,执行单个“非输入”操作而不是“输入”操作,然后取反:

>>> import dis

>>> def notin():

'ham' not in 'spam and eggs'

>>> dis.dis(notin)

2           0 LOAD_CONST               1 ('ham')

3 LOAD_CONST               2 ('spam and eggs')

6 COMPARE_OP               7 (not in)

9 POP_TOP

10 LOAD_CONST               0 (None)

13 RETURN_VALUE

>>> def not_in():

not 'ham' in 'spam and eggs'

>>> dis.dis(not_in)

2           0 LOAD_CONST               1 ('ham')

3 LOAD_CONST               2 ('spam and eggs')

6 COMPARE_OP               7 (not in)

9 POP_TOP

10 LOAD_CONST               0 (None)

13 RETURN_VALUE

>>> def not__in():

not ('ham' in 'spam and eggs')

>>> dis.dis(not__in)

2           0 LOAD_CONST               1 ('ham')

3 LOAD_CONST               2 ('spam and eggs')

6 COMPARE_OP               7 (not in)

9 POP_TOP

10 LOAD_CONST               0 (None)

13 RETURN_VALUE

>>> def noteq():

not 'ham' == 'spam and eggs'

>>> dis.dis(noteq)

2           0 LOAD_CONST               1 ('ham')

3 LOAD_CONST               2 ('spam and eggs')

6 COMPARE_OP               2 (==)

9 UNARY_NOT

10 POP_TOP

11 LOAD_CONST               0 (None)

14 RETURN_VALUE

起初我以为它们总是给出相同的结果,但是not它本身只是一个低优先级的逻辑否定运算符,可以a in b像其他布尔表达式一样容易地应用,而not in为了方便和清楚起见,它是一个单独的运算符。

上面的拆卸很明显!not显然,虽然显然是逻辑取反运算符,但该表格not a in b是特殊情况,因此实际上并未使用通用运算符。这not a in b实际上使表达式与相同a not in b,而不仅仅是产生相同值的表达式。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值