若为同一个对象,则对象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]就是你想要的效果了。