这节课我们讲一下is与==的区别。
is叫做身份运算,是用来比较左右两个值的身份是否相等,上节课我们讲了变量值的身份证号,也就是id号。所以is就是用来比较两个变量值的id号是否相等的。
这里注意了,一个等号=是赋值,两个等号==是比较左右变量的值是否相等。
举个例子,我们a=‘于谦’,然后b=‘于谦’。那么a和b他们两个的id号是一样的吗?结果是不一样的。但是打印出来的结果就是一样的。
小伙伴就会问,这是为什么?这不是前后矛盾了吗?
其实这是Pycharm的问题,我们可以用另一种方法来验证一下。按住win+r,输入cmd。然后输入Python。再把刚才在Pycharm的代码复制上去。回车键运行,这回运行的结果两个id号就完全不一样了。
我们前面说了==就是左右变量的值是否相等,所以我们输入a==b,运行的结果就是Ture,也就是真。
然后我们再来看is,is就是用来比较两个变量值的id号是否相等,所以我们输入a is b,运行的结果就是False,就是假。
所以说,只要是赋值操作,产生新的值的时候都会申请一块内存空间,只要申请了内存新的空间,他的内存地址就会不一样,id也会不一样。
注意这和我们之前讲的a=‘xx’,b=a,c=b不一样。这里是把a的内存地址给了b和c,并没有产生新的内存空间。所以这里的a、b、c三个的id是一样的。
在这里和大家总结一下,id不同的时候,值可能是相同的,因为不同的内存空间是可以存相同的值的但是id相同的时候,值一定是相同的。只要是判断出了a is b,是Ture。那么a一定是等于b的。
最后给小伙伴们留个小作业,在cmd界面a=10,b=10,然后打印一下他们的id是否一致!~
未经允许不得转载:445IT之家 » Python is与==的区别