登陆

在python里,如制止用操作符号,怎么判别两个数字的值是否持平?

admin 2019-10-27 249人围观 ,发现0个评论

欢迎各位小哥哥小姐姐阅读本<小生>的文章,对大家学习有帮助,请点赞加关注哦!!!!!!!!!!

您的点赞和关注将是我持续更新的动力呢.^v^

有不懂的问题可以私聊我哦!

在python里,禁止用操作符号,在python里,如制止用操作符号,怎么判别两个数字的值是否持平?那如何判断两个数字的值是高柳否相等

题目引发

写出两种不同的函数,用来比较两个数字,如果两个数字的值相同,返回True,如果数字的值不同,返回False。条件:不能使用== >= <= > < 这些比较符号,不能用“is”和“in”关键字

提示:二进制转换和shift操作。

思考解答

在解答时先说下 ==,is, in 误区

  • id() 函数用于获取对象的内存地址。
  • (ob1 is ob2) 等价于 (id(ob1) == id(ob2)) id函数可以获得对象的内存地址,如果两个对象的内存地址是一样的,那么这两个对象肯定是一个对象。和is是等价的.
  • 我遇到的问题是两个字符串来自不同的内存块,于是我使用 ob1 in ob2
  • 来判断。
  • 还有一种情况是两个对象用is判断是False,用id判断却是True。原理比较复杂,如下:

真实情况是当执行.操作符的时候,实际是生成了一个proxy对象,foo.bar is Foo.bar的时候,两个对象顺序生成,放在栈里相比较,由于地址不同肯定是False,但是id(foo.bar) == id(Foo.在python里,如制止用操作符号,怎么判别两个数字的值是否持平?bar)的时候就不同了,首先生成foo.bar,然后计算foo.bar的地址,计算完之后foo.bar的地址之后,就没有任何对象指向foo.bar了,所以fo在python里,如制止用操作符号,怎么判别两个数字的值是否持平?o.bar对象就会被释放。然后生成Foo.bar对象,由于foo.bar和Foo.bar所占用的内存大小是一样的,所以又恰好重用了原先foo.bar的内存地址,所以id(foo.bar) == id(Foo.bar)的结果是True。

言归正传,先来两个函数试试:

执行结果如下:

最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的p在python里,如制止用操作符号,怎么判别两个数字的值是否持平?ython系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。

请关注微信公众号
微信二维码
不容错过
Powered By Z-BlogPHP