python : if not x,if x is None

x为假,not X为真,if not X执行;

在python中None,False,空字符串,空列表,空字典,空元组都相当于False,X是他们,not x会返回true

if not X=if x is +False

比如:if X is None=if not x

is  与==的区别:

is:引用对象是否一样,通过引用id比较

==:值是否相等,通过值比较

比如:

x=[1,2,3]

y=[1,2,3]

x is y//false

x==y//true

X is None 不等于X==None

深拷贝与浅拷贝:

不可变对象:一旦创建就不可修改的对象,包括字符串、元组、数字
可变对象:可以修改的对象,包括列表、字典。

1,切片可以应用于:列表、元组、字符串,但不能应用于字典。
2,深浅拷贝,既可应用序列(列表、元组、字符串),也可应用字典。

一句话就是,不可变类型,不管是深拷贝还是浅拷贝,地址值和拷贝后的值都是一样的。

对于可变类型:

= 浅拷贝:值相等,地址相等
copy浅拷贝:值相等,地址不相等
deepcopy深拷贝:值相等,地址不相等

copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变

深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变

比如:

>>> import copy

>>> d=copy.deepcopy(alist)

        dd=copy.copy(alist)
>>> print alist;print d dd
[1, 2, 3, ['a', 'b']]
[1, 2, 3, ['a', 'b']]始终没有改变

[1,2,3,['a','b']
>>> alist.append(5)
>>> print alist;print d dd
[1, 2, 3, ['a', 'b'], 5]
[1, 2, 3, ['a', 'b']]始终没有改变

[1,2,3,['a','b'],5]
>>> alist[3]
['a', 'b']
>>> alist[3].append("ccccc")
>>> print alist;print d dd
[1, 2, 3, ['a', 'b', 'ccccc'], 5]
[1, 2, 3, ['a', 'b']]  始终没有改变

[1,2,3['a','b','cccc']]子对象被改变了

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值