一、成员运算符 in 和 not in
- in 如果在指定的序列中找到值返回 True,否则返回 False
- not in 如果在指定的序列中没有找到值返回 True,否则返回 False。
示例代码
#!/usr/bin/python
# -*- coding: UTF-8 -*-
a = 8
list = [1, 2, 3]
if a in list:
print("a in list true")
else:
print("a in list false")
if a not in list:
print("a not in list true")
else:
print("a not in list false")
运行结果
a in list false
a not in list true
二、身份运算符
- is 是判断两个标识符是不是引用同一个对象
- is not 是判断两个标识符是不是引用自不同对象
示例
#!/usr/bin/python
# -*- coding: UTF-8 -*-
a = 20
b = 20
if (a is b):
print("1 - %d 和 %d 有相同的标识" % (a, b))
else:
print("1 - %d 和 %d 没有相同的标识" % (a, b))
# 获取对象内存地址
if (id(a) == id(b)):
print("2 - %d 和 %d 有相同的标识" % (a, b))
else:
print("2 - %d 和 %d 没有相同的标识" % (a, b))
# 修改变量 b 的值
b = 30
if (a is b):
print("3 - %d 和 %d 有相同的标识" % (a, b))
else:
print("3 - %d 和 %d 没有相同的标识" % (a, b))
if (a is not b):
print("4 - %d 和 %d 没有相同的标识" % (a, b))
else:
print("4 - %d 和 %d 有相同的标识" % (a, b))
运行结果,相同对象则表示相同is
1 - 20 和 20 有相同的标识
2 - 20 和 20 有相同的标识
3 - 20 和 30 没有相同的标识
4 - 20 和 30 没有相同的标识
三、is 与 == 区别
- is 用于判断两个变量引用对象是否为同一个
- == 用于判断引用变量的值是否相等
#!/usr/bin/python
# -*- coding: UTF-8 -*-
a = 20
b = 20
c = "20"
if (a is b):
print("1 - %d 和 %d 有相同的标识" % (a, b))
else:
print("1 - %d 和 %d 没有相同的标识" % (a, b))
# 获取对象内存地址
if (id(a) == id(b)):
print("2 - %d 和 %d 有相同的标识" % (a, b))
else:
print("2 - %d 和 %d 没有相同的标识" % (a, b))
if (a == b):
print("3 - a == b True")
else:
print("3 - a == b False")
if (a is c):
print("1 - %d 和 %s 有相同的标识" % (a, c))
else:
print("1 - %d 和 %s 没有相同的标识" % (a, c))
# 获取对象内存地址
if (id(a) == id(c)):
print("2 - %d 和 %s 有相同的标识" % (a, c))
else:
print("2 - %d 和 %s 没有相同的标识" % (a, c))
if (a == int(c)):
print("3 - a == c True")
else:
print("3 - a == c False")
运行结果
1 - 20 和 20 有相同的标识
2 - 20 和 20 有相同的标识
3 - a == b True
1 - 20 和 20 没有相同的标识
2 - 20 和 20 没有相同的标识
3 - a == c True