赞
赏
在 Python 中,比较运算符 is 和 is not 用于比较两个对象是否是同一个对象,== 和 != 用于比较两个 变量 的数据是否相等。
数值型,使用 is 和 == 效果相同
print("嗨客网(www.haicoder.net)")
# 数值型,使用 is 和 == 效果相同
num1 = 1024
num2 = 1024
a = num1 == num2
b = num1 is num2
c = num1 != num2
d = num1 is not num2
print('a =', a, 'b =', b, 'c =', c, 'd =', d)
程序运行后,控制台输出如下:
我们首先定义了两个 变量,使用赋值运算符分别赋初值为 1024 和 1024。
接着我们将变量 a 的值赋值为 num1 == num2 的比较结果,变量 b 的值赋值为 num1 is num2 的比较结果,变量 c 的值赋值为 num1 != num2 的比较结果,变量 d 的值赋值为 num1 is not num2 的比较结果。
我们可以看到,虽然 num1 和 num2 是两个不同的变量,但因为它们的值相等,所以 num1 == num2 和 num1 is num2 的结果都是 True。
最后,我们使用 print() 函数,打印出这四个比较结果的值。
字符串类型,使用 is 和 == 效果相同
print("嗨客网(www.haicoder.net)")
# 字符串类型,使用 is 和 == 效果相同
str1 = "HaiCoder"
str2 = "HaiCoder"
str3 = "Haicoder"
a = str1 == str2
b = str1 is str2
c = str1 != str3
d = str1 is not str3
print('a =', a, 'b =', b, 'c =', c, 'd =', d)
程序运行后,控制台输出如下:
我们首先定义了三个变量,使用赋值运算符分别赋初值为 “HaiCoder”、“HaiCoder” 和 “Haicoder”。
接着我们将变量 a 的值赋值为 str1 == str2 的比较结果,变量 b 的值赋值为 str1 is str2 的比较结果,变量 c 的值赋值为 str1 != str3 的比较结果,变量 d 的值赋值为 str1 is not str3 的比较结果。
我们可以看到,虽然 str1 和 str2 是两个不同的变量,但因为它们的值相等,所以 str1 == str2 和 str1 is str2 的结果都是 True。
最后,我们使用 print() 函数,打印出这四个比较结果的值。
元祖类型,使用 is 和 == 效果相同
print("嗨客网(www.haicoder.net)")
# 元祖类型,使用 is 和 == 效果相同
tup1 = ('H', 'a', 'i', 'C', 'o', 'd', 'e', 'r')
tup2 = ('H', 'a', 'i', 'C', 'o', 'd', 'e', 'r')
a = tup1 == tup2
b = tup1 is tup2
c = tup1 != tup2
d = tup1 is not tup2
print('a =', a, 'b =', b, 'c =', c, 'd =', d)
print('&tup1 =', id(tup1), '&b =', id(tup2))
程序运行后,控制台输出如下:
我们首先定义了两个元祖类型的变量,使用赋值运算符分别赋初值为 “HaiCoder” 和 “HaiCoder”。
接着我们将变量 a 的值赋值为 tup1 == tup2 的比较结果,变量 b 的值赋值为 tup1 is tup2 的比较结果,变量 c 的值赋值为 tup1 != tup2 的比较结果,变量 d 的值赋值为 tup1 is not tup2 的比较结果。
我们可以看到,虽然 tup1 和 tup2 是两个不同的变量,但因为它们的值相等,所以 tup1 == tup2 和 tup1 is tup2 的结果都是 True。
同时,我们通过 id() 函数,打印了变量 tup1 和 变量 tup2 的地址,发现它们的地址是相同的,这才是 is 运算符判断 True 和 False 的核心。
最后,我们使用 print() 函数,打印出这四个比较结果的值。
当变量的地址不同时,is 运算符返回 False。
print("嗨客网(www.haicoder.net)")
# 列表类型,使用 is 和 == 效果不同
lis1 = ['H', 'a', 'i', 'C', 'o', 'd', 'e', 'r']
lis2 = ['H', 'a', 'i', 'C', 'o', 'd', 'e', 'r']
a = lis1 == lis1
b = lis1 is lis2
print('a =', a, 'b =', b)
print('&lis1 =', id(lis1), '&b =', id(lis2))
程序运行后,控制台输出如下:
我们首先定义了两个 列表类型 的变量,使用赋值运算符分别赋初值为 “HaiCoder” 和 “HaiCoder”。接着我们将变量 a 的值赋值为 lis1 == lis2 的比较结果,变量 b 的值赋值为 lis1 is lis2 的比较结果。
我们可以看到,虽然 lis1 和 lis2 它们的值相等,但它们是两个不同的变量,所以 tup1 == tup2 的结果为 True,但 tup1 is tup2 的结果为 False。
我们通过 id() 函数,打印了变量 lis1 和 变量 lis2 的地址,发现它们的地址是不同的,这才是 is 运算符返回 False 的原因。
在 Python 中,比较运算符 is 和 is not 用于比较两个对象是否是同一个对象,== 和 != 用于比较两个变量的数组是否相等。
如果两个变量的地址相同,那么 is 运算符会返回 True,否则,is 运算符返回 False。