简单 Python 快乐之旅之:Python 基础语法之同一性运算关键字的使用例子

Python 里用于同一性运算的关键字有 is 和 is not。
Python 的 is 关键字用于检查两个对象的内存引用是否一致,一致的话返回 True,否则返回 False。
接下来我们来演示一下 Python is 运算:

# Python IS operator
a = [5, 8]
b = [5, 8]
c = a

if a is b:
    print('a is b')
else:
    print('a is not b')

if a is c:
    print('a is c')
else:
    print('a is not c')

执行和输出:
Python is 运算.png
在上述例子当中,我们先后定义了 3 个列表(关于 Python 中列表、元组和 set 的区别请参考同系列博客《简单 Python 快乐之旅之:Python 基础语法之循环关键字的使用例子》)对象 a、b 和 c。
尽管 a 和 b 对象的内容完全一致,但是它们是完全不同的对象,因为它们有着不同的内存地址分配。 所以 a 和 b 不具有同一性。
而 c 就不同了,c 在定义的时候直接将 a 分配给它,也就是说 c 只是拷贝了 a 的引用,而并非 a 对象的实际内容。所以在你修改 c 对象内容的时候,a 对象的内容也被改变了,因为它们都指向了内存中的同一张列表。所以 a 和 c 具备同一性。
理解了 is 操作,is not 几乎是触类旁通,没错 is not 和 is 操作正好是相反的:Python 里的 is not 用来检查两个对象指向的内存地址是否不一致:

# Python IS NOT operator
a = [5, 8]
b = [5, 8]
c = a

if a is not b:
    print('a is not b')
else:
    print('a is b')

if a is not c:
    print('a is not c')
else:
    print('a is c')

执行和输出:
is not 用来检查两个对象是否指向同一个内存地址.jpg
参考资料
Python is Operator
Python is not Operator

posted @ 2019-04-15 20:14  Defonds  阅读(44)  评论(0编辑  收藏  举报