当前位置:首页python > 正文

Python 基础知识:身份运算符(is / is not)

作者:野牛程序员:2025-12-22 10:36:05python阅读 2050
Python 基础知识:身份运算符(is / is not)
# /*
# Python 基础知识:身份运算符(is / is not)
# --------------------------------------------------------
# 功能:
# 1) 展示身份运算符的作用:判断“对象是否为同一块内存”
# 2) 对比身份判断与相等判断的差异
# 3) 展示 None 判断的正确写法
# 4) 展示在可变对象上的典型行为差异
# */

# ========================================
print("示例一:is 与 == 的区别")

a = [1, 2, 3]
b = [1, 2, 3]

print("a == b :", a == b)       # 内容相等
print("a is b:", a is b)        # 不是同一对象

print("-" * 40)

# ========================================
print("示例二:同一对象的身份比较")

x = a
print("x == a :", x == a)
print("x is a :", x is a)       # 指向同一内存地址

print("-" * 40)

# ========================================
print("示例三:数字与字符串的小对象缓存机制")

n1 = 100
n2 = 100
print("100 is 100:", n1 is n2)  # 小整数缓存机制,可能为 True

s1 = "python"
s2 = "python"
print("'python' is 'python':", s1 is s2)  # 字符串驻留机制,可能为 True

print("-" * 40)

# ========================================
print("示例四:None 判断 —— 身份判断最标准场景")

v = None

if v is None:
    print("v 是 None(正确写法)")

if v == None:
    print("v == None(不推荐,仅可用)")

print("-" * 40)

# ========================================
print("示例五:可变对象的 identity 行为")

lst1 = [9, 8, 7]
lst2 = lst1
lst3 = lst1.copy()

print("lst2 is lst1:", lst2 is lst1)      # 同一对象
print("lst3 is lst1:", lst3 is lst1)      # 不同对象
print("lst3 == lst1:", lst3 == lst1)      # 内容相同

print("-" * 40)

# ========================================
# 要点总结:
# 1) is / is not 用于判断两个变量是否引用同一对象;
# 2) == 判断“值是否相等”,is 判断“是否同一内存”;
# 3) None 判断必须使用 is / is not,这是官方推荐写法;
# 4) 不同对象即使内容相同,is 仍为 False;
# 5) 数字、字符串等不可变对象可能触发缓存机制,使 is 为 True;
# 6) 身份运算符常用于:None 判断、对象缓存判断、引用关系检查。
# */


# 示例一:is 与 == 的区别
# a == b : True
# a is b: False
# ----------------------------------------
# 示例二:同一对象的身份比较
# x == a : True
# x is a : True
# ----------------------------------------
# 示例三:数字与字符串的小对象缓存机制
# 100 is 100: True
# 'python' is 'python': True
# ----------------------------------------
# 示例四:None 判断 —— 身份判断最标准场景
# v 是 None(正确写法)
# v == None(不推荐,仅可用)
# ----------------------------------------
# 示例五:可变对象的 identity 行为
# lst2 is lst1: True
# lst3 is lst1: False
# lst3 == lst1: True
# ----------------------------------------


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • Python 基础知识:身份运算符(is / is not)
  • 相关推荐

    最新推荐

    热门点击