if foo is None: pass if foo == None: pass
这是两种差别的用法,它们之间的区分是什么呢?
Python中变量自身不存储其值,变量赋值事实上是将变量援用指向内存中缓存的对象自身,比方:
a=5
b=5
看似两个变量现实指向统一个对象,此时a==b,a is b都为True,==操作符比较两个对象的值,is 则推断两个变量是不是指向统一个援用,想推断是不是统一对象,用函数id()即可显现出现实对象的标识(一个整数),此时id(a),id(b),id(5)的标识符都是一致的。
同理,假如foo为None时,事实上是将foo指向None对象的现实标识符,此时用id()显现任作甚None的变量的标识,会发明与id(None)的效果雷同。
题目中的效果一样,但语义差别,就看你是想表达“foo与None为统一对象”,照样“foo值与None值相称”
以上就是foo is None 和 foo == None的区分的细致内容,更多请关注ki4网别的相干文章!