in用于成员检测,判断元素是否在容器中;is用于身份比较,判断两个变量是否引用同一对象,值比较用==,None判断推荐is。

在 Python 中,in 和 is 看起来都像关键字,但它们的作用完全不同,不能混淆。
in:成员检测运算符
in 用来检查某个元素是否存在于一个容器(如列表、字符串、字典、集合等)中,返回布尔值。例如:
-
'a' in 'abc'→ True(字符 'a' 在字符串 'abc' 中) -
3 in [1, 2, 3]→ True(数字 3 在列表中) -
'name' in {'name': 'Alice'}→ True(键 'name' 在字典中)
is:身份比较运算符
is 用来判断两个变量是否指向同一个对象(即内存地址相同),而不是值相等。例如:
-
a = [1, 2, 3]; b = a; a is b→ True(a 和 b 是同一个列表对象) -
a = [1, 2, 3]; b = [1, 2, 3]; a is b→ False(虽然值一样,但是两个不同对象) -
5 is 5→ True(小整数有缓存,可能共享对象)
常见误区
新手容易把 is 当成 == 用,比如:-
if name is 'admin':—— 应该用== - 只有在判断 None 时推荐使用 is:
if value is None:,因为 None 是单例,唯一存在。











