当前位置:天才代写 > tutorial > Python教程 > Python中运算符==和is的不同阐明

Python中运算符==和is的不同阐明

2017-11-02 08:00 星期四 所属: Python教程 浏览:449

媒介

在讲is和==这两种运算符区别之前,首先要知道Python中工具包括的三个根基要素,别离是:id(身份标识)、python type()(数据范例)和value(值)。is和==都是对工具举办较量判定浸染的,但对工具较量判定的内容并不沟通。下面来看看详细区别在哪。

Python中较量两个工具是否相等,一共有两种要领,简朴来说,它们的区别如下:

is是较量两个引用是否指向了同一个工具(引用较量)。

==是较量两个工具是否相等。

>>> a = [1, 2, 3]
>>> b = a
>>> b is a # a的引用复制给b,他们在内存中其实是指向了用一个工具
True 
>>> b == a # 虽然,他们的值也是相等的
True
>>> b = a[:] # b通过a切片得到a的部门,这里的切片操纵从头分派了工具,
>>> b is a # 所以指向的不是同一个工具了
False
>>> b == a # 但他们的值照旧相等的
True

实现道理

is较量的是两者是否是同一个工具,所以较量的是内存地点(id是否沟通)。

==是值较量。不行变工具,譬喻int,str,它会直接举办值较量。对付Python已知的工具,会挪用他们的__eq__函数来较量。(其实已知的工具应该也是通过内置的__eq__函数来较量的)。对付自界说的工具,假如实现了__eq__函数,就会利用它较量,假如没有实现,结果和==是一样的。

工具缓存机制

Python会比拟力小的工具缓存,下次用到较量小的工具时,会去缓存区查找,假如找到,不会再开发新的内存,而是继承把小工具的地点赋给新的值。例子:

>>> c = 1
>>> d = 1
>>> print(c is d) 
True
 
>>> 1000 is 10**3
False
>>> 1000 == 10**3
True

通过计较获得的赋值,不会利用缓存区。从第一个代码示例中可以看出。

对付字符串,你可以通过利用intern函数强制利用缓存区。

 

    关键字:

天才代写-代写联系方式