python操作符op_详解python中的 is 操作符

您可以验证彼此用= =操作符引用和对象的Java和加深你的理解。最初的问题:为什么Python运行直接或在命令行上运行相同的声明,但结果是不同的吗?是他们的缓存机制不同?事实上,高票答案已经详细说。我只是添加一个点。是操作符是一个内置的Python语言的运营商。它的功能是比较两个变量是否指向同一个对象。与= =类的区别():def __init__(自我,v): = vdef __eq__(自我,t):返回= = = b(3) =(3)打印一个= = bprint A是b的结果是真的,假的。因为我们有__eq__方法进行重写,这样比较a和b时,只能相比他们的价值。只要它们的值是相等的,那么a和b是相等的。

相同的对象?的使用是非常简单的,但当它真正使用,困难在于判断哪些对象是一样的。看看下面的测试,不看结果,多少你能获得正确的答案呢?10 = 10 b =打印一个英航= b =打印是ba = 10 def f():返回10 printf()是aa = 1000 def f():返回1000 printf()是aa = f (): def returnprint f()是一个嗯。结果是真的,真的,真的,假的,假的。你做对了吗?这个结果涉及到两个问题:第一个是小整数的缓存,第二个是组织的CodeObject pyc文件。Python缓存小整数从-127年到128年。这是Java的整数类一样。因此,对于整数-127年和128年之间,只有一个虚拟机实例在整个Python。

探讨这个问题,我们必须从字节码的角度分析它。让我们先编译这个文件:python - m compileall得到这样的输出:6400005 a00006400005a01006500006501006b080047486400005a00006401008400005a02006502008300006500006b08004748640200531 LOAD_CONST 0 () 3 STORE_NAME 0 (a) 2 6 LOAD_CONST 0 () 9 STORE_NAME 1 (b) 3 12 LOAD_NAME 0 15 LOAD_NAME 1 (a) (b) 18 COMPARE_OP 8(是)21 PRINT_ITEM22 PRINT_NEWLINE5 23 LOAD_CONST 0 () 26 STORE_NAME 0 (a) 32 MAKE_FUNCTION 035 STORE_NAME 2 (f) 8 38 LOAD_NAME 2 (f) 41 CALL_FUNCTION 044 LOAD_NAME 0 (a) 47 COMPARE_OP 8(是)50 PRINT_ITEM51 PRINT_NEWLINE52 LOAD_CONST 2(没有)55 RETURN_VALUE7 0 LOAD_CONST 1 () 3 RETURN_VALUENoneNone

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值