python的is和is not运算符是干什么用的

Python062

python的is和is not运算符是干什么用的,第1张

简单来说,python中的is与is not运算符可判断两个对象是否为同一对象。

若为同一个对象,则对象1 is 对象2为True 。

反正,若非同一个对象,则对象1 is not 对象2为True

要理解Python中的is和is not运算符,首先需要知道Python中对象包含的三个基本要素,分别是:id(身份标识)、python type()(数据类型)和value(值)。

is和==(is not和!=)都是对对象进行比较判断作用的。

但对对象比较判断的内容并不相同。

拿is和==为例,

==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等,例如下面两个字符串间的比较:

>>>a = 'iplaypython.com'

>>>b = 'iplaypython.com'

>>>a == b

True

is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同。通过对下面几个列表间的比较,你就会明白is同一性运算符的工作原理:

>>>x = y = [4,5,6]

>>>z = [4,5,6]

>>>x == y

True

>>>x == z

True

>>>x is y

True

>>>x is z

False

>>>

>>>print id(x)

3075326572

>>>print id(y)

3075326572

>>>print id(z)

3075328140

可看出前三个例子都是True,而最后一个是False。

x、y和z的值是相同的,所以前两个是True没有问题。

至于最后一个为什么是False,看看三个对象的id分别是什么就会明白了。

==比较操作符:用来比较两个对象是否相等,value做为判断因素;

is同一性运算符:比较判断两个对象是否相同,id做为判断因素。

同理,

!=比较操作符:用来比较两个对象是否不等,value做为判断因素;

is not同一性运算符:比较判断两个对象是否不同,id做为判断因素。

没有do。

python保留字:and、as、assert、break、class、continue、def、del、elif、if、else、exec、for、finally、from、globa、import、in、is、print、try等等。

保留字说明 

and 用于表达式运算,逻辑与操作。

as用于类型转换。

assert断言,用于判断变量或条件表达式的值是否为真。

break中断循环语句的执行。

class用于定义类。

continue继续执行下一次循环。

def用于定义函数或方法。

del删除变量或者序列的值。

elif条件语句 与if else 结合使用。

else条件语句 条件语句,与if,elif结合使用。也可以用于异常和循环使用。

exceptexcept 包括捕获异常后的操作代码,与try,finally结合使用。

exec用于执行python语句。

for循环语句。

finally用于异常语句,出现异常后,始终要执行finally包含的代码块。与try,except结合使用。

from用于导入模块,与import结合使用。

global定义全局变量。

if条件语句,与else,elif结合使用。

import用于导入模块,与from 结合使用。

in判断变量是否存在序列中。

is判断变量是否为某个类的实例。

lambda定义匿名函数。

python比较特殊,存在3>4>5这种写法,因为python解释为(3>4) and (4>5),类似的,这里python解释为(a is b) and (a in [True]),加入换为(a is b) in [True]就是你想要的效果了。