python3 == vs is.py

"""
参考:https://blog.csdn.net/qq_37616069/article/details/79572733
参考:https://www.runoob.com/note/33502

知识点:
1.
python3 的 "==" 判断的是值和类型是否相同。
上边所说的“类型”,指的是python3的标准数据类型,比如:
Python3 中有六个标准的数据类型:
Number(数字),String(字符串),List(列表)
Tuple(元组),Set(集合),Dictionary(字典)
Python3 的六个标准数据类型中:
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

2.
is 判断两个变量是否绑定同一个地址的值。
也就是说,is 是判断的内存地址。

3.
is 与 == 区别 :
is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。
a is b 相当于 id(a)==id(b),id() 能够获取对象的内存地址。
如果 a=10;b=a; 则此时 a 和 b 的内存地址一样的;
但当 a=[1,2,3]; 另 b=a[:] 时,虽然 a 和 b 的值一样,但内存地址不一样。
如果此时定义 a=10、b=10, 然后再对比 a is b 会发现返回的结果是 True,

脚本模式(同一模块/代码块):
整型[-5, +∞]、字符串,不会重新分配内存地址。
交互模式(同一行算同一模块,不同行算不同模块):
整型[-5, 256]、字符串,不会重新分配内存地址。

>>> a = 257
>>> b = 257
>>> a is b
False
>>> a=4444; b=4444;
>>> a is b
True


n.
id(obj, /)
    返回对象的标识。
    这可以保证在同时存在的对象中是唯一的。
    (CPython使用对象的内存地址)。
"""
import copy

# 1.is
a = [1, 2, 3]
b = a
print(a == b)
# True
print(a is b)
# True

# 2.is not
c = copy.deepcopy(a)
print(c == a)
# True
print(c is a)
# False

# 3.查看变量内存地址。
print(id(a))
# 2373371357832
print(id(b))
# 2373371357832
print(id(c))
# 2373371357768

# 4.判断类型。
print(1 == "1")
# False

# 5.None
print(None is None)
# True
a = None
print(a is None)
# True

# 6.数字类型的判断
# 整型 vs 浮点型
print(0 == 0.0)
# True
print(type(0))
# <class 'int'>
print(type(0.0))
# <class 'float'>

# 7.
# 数字类型 vs 字符串类型
print(0 == "0")
# False
print(0.0 == "0.0")
# False

# 8.
a = 10
b = 10
print("a is b:", a is b)
# a is b: True
a = -5
b = -5
print(a is b)
# True
a = -6
b = -6
print(a is b)
# False
a = 256
b = 256
print(a is b)
# True
a = 257
b = 257
print(a is b)
# True
a = 100000
b = 100000
print(a is b)
# True
a = 'is'
b = 'is'
print(a is b)
# True
a = (1, 2, 3)
b = (1, 2, 3)
print(a is b)
# False
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值