python中in和is的区分

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

python中in和is的区分

python 中,inis 看起来都像关键字,但它们的作用完全不同,不能混淆。

in:成员检测运算符

in 用来检查某个元素是否存在于一个容器(如列表、字符串、字典、集合等)中,返回布尔值。

例如:

python中in和is的区分

魔乐社区

天翼云和华为联合打造的AI开发者社区,支持AI模型评测训练、全流程开发应用

python中in和is的区分102

查看详情 python中in和is的区分

  • '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 不是比较值,而是比较身份。值相等用 ==,身份相同用 is。

常见误区

新手容易把 is 当成 == 用,比如:

  • if name is 'admin': —— 应该用 ==
  • 只有在判断 None 时推荐使用 is:if value is None:,因为 None 是单例,唯一存在。

总结:in 判断“有没有”,is 判断“是不是同一个东西”。理解清楚就能避免错误。

上一篇
下一篇
text=ZqhQzanResources