咱们经常会用等号去给两个变量做一个判断,返还值的是布尔值。Python中除了等号,还有一个判断方式就是:is。那你知道两者有啥不同吗?
来看一个示例
a是一个列表,b也是一个列表。a等于b,但是为啥a不是b呢?那是因为Python中变量是指向一个内存地址,被赋值的不同变量存在着不同内存地址。
a和b分别对应的地址
那问题来了:假设a是一个列表,我们把a的值赋予b,b的地址会和a一样吗?咱们来试一下即可。
a和b的地址相同
判断a和b是否为同一个东西
图形展示
假如a和b两个变量分别指向两个内存地址,假设内存里的东西是一样的,它们的判断结果是内存内容相等,内存位置不相等。
==用来判断两个变量是否相等。
is用来判断两个变量是否指向同一个内存。
再来看一个例子
逻辑上来说,a 和 b不在同一块内存地址之上,怎么也是相等的呢?
百度一下
下限验证
上限验证
竟然非常准确,看来百度也是不一无是处啊。问题来了:上面咱们分别对a,b两个变量进行了赋值。咱们都知道Python语言是可以同时赋值的。
同时赋值
结果和想象的一样。
只有一个知识点,但是非常重要。以后我会在每周的三和六更新(传说中的定更),给大家一点仪式感。这篇文章弥补昨天的转载,昨天的文章自己其实写了一些文字,没想到发出去竟然是原文,当做弥补吧。
领取专属 10元无门槛券
私享最新 技术干货