python要点

1.数据类型

字符串: ''或""表示单行,写三对符合表示多行, r'这种写法转义符不生效'

布尔值:True, False

空值: None

类型转换

print bool('True'), bool(1), bool(0), bool(''), bool(None)#True True False False False
print int('1')+1, str(1)+'1'#2 11

内存模型

a = 'abc'       #内存创建变量a, 字符串'abc'
b = a           #创建变量b, b指向a地址,也就是'abc'
a = 'xyz'       #创建字符串'xyz',a指向‘xyz’
print b         #b指针没变,所以还是‘abc’

a = {}          #创建变量a,创建对象{},a指向{}
b  = a          #创建变量b, b指向a地址,也就是{}
a['a1'] = 1     #修改a指向内容的数据
print b==a,b    #b指针没变,所以内容跟a看到的一样
a = {}          #重新创建对象{},a指向它,跟前一个不一样
a['a2'] = 2     #修改新对象属性
print b==a,a,b  #b还为原先的值,{'a1':1},所以深拷贝可由此实现
View Code

参考:数据类型和变量

2.浅拷贝与深拷贝

# coding=utf-8
#浅拷贝
a = [1,2,3,4,5]
b = a
a.append('hello')
print a == b, a, b

#深拷贝
from copy import copy
c = copy(a)
a.append('world')
print a == c, a, c

#输出结果
True [1, 2, 3, 4, 5, 'hello'] [1, 2, 3, 4, 5, 'hello']
False [1, 2, 3, 4, 5, 'hello', 'world'] [1, 2, 3, 4, 5, 'hello']
View Code

=为浅拷贝,a跟b指向同一对象

copy.copy()为深拷贝,a跟b指向不同对象

猜你喜欢

转载自www.cnblogs.com/lurenjia1994/p/10231020.html