1、字典复制:
1
2
3
4
5
6
7
8
9
10
11
|
dict = { 'name' : 'wang' , 'sex' : 'm' , 'age' : 34 , 'job' : 'it' }
info = dict ##别名 (二个字典指向内存的同一地址空间)
info1 = dict .copy() #shadow copy 浅复制(嵌套字典第一层独立,第二层以下相关联)
import copy
copy.copy() #shadow copy 浅复制
copy.deepcopy() #deep copy 深复制(完全独立)
|
注:浅复制下的关联只是针对字典初始状态包含的嵌套对象,后新加的不会
例:
1
2
3
4
5
|
>>> dict
{ 'info' : [ 'a' , 'b' , 1 , 2 ], 'job' : 'it' , 'sex' : 'm' , 'age' : 40 , 'name' : 'wang' }
>>> dict_alias = dict
>>> dict_copy = copy.copy( dict )
>>> dict_deep = copy.deepcopy( dict )
|
#添加、改变、删除第一层的对象键值,浅复制和深复制都不受影响
1
2
3
4
5
6
7
8
9
10
11
|
>>> dict [ 'age' ] = 32
>>> del dict [ 'sex' ]
>>> dict
{ 'info' : [ 'a' , 'b' , 1 , 2 ], 'job' : 'it' , 'age' : 32 , 'name' : 'wang' }
>>> dict_alias
{ 'info' : [ 'a' , 'b' , 1 , 2 ], 'job' : 'it' , 'age' : 32 , 'name' : 'wang' }
>>> dict_copy
{ 'info' : [ 'a' , 'b' , 1 , 2 ], 'job' : 'it' , 'age' : 40 , 'name' : 'wang' , 'sex' : 'm' }
>>> dict_deep
{ 'info' : [ 'a' , 'b' , 1 , 2 ], 'job' : 'it' , 'age' : 40 , 'name' : 'wang' , 'sex' : 'm' }
|
#改变、删除原有的第二层的对象键值,浅复制受影响,而深复制都不受影响
1
2
3
4
5
6
7
8
9
|
>>> dict [ 'info' ][ 2 ] = 100
>>> dict
{ 'info' : [ 'a' , 'b' , 100 , 2 ], 'job' : 'it' , 'age' : 32 , 'name' : 'wang' }
>>> dict_alias
{ 'info' : [ 'a' , 'b' , 100 , 2 ], 'job' : 'it' , 'age' : 32 , 'name' : 'wang' }
>>> dict_copy
{ 'info' : [ 'a' , 'b' , 100 , 2 ], 'job' : 'it' , 'age' : 40 , 'name' : 'wang' , 'sex' : 'm' }
>>> dict_deep
{ 'info' : [ 'a' , 'b' , 1 , 2 ], 'job' : 'it' , 'age' : 40 , 'name' : 'wang' , 'sex' : 'm' }
|
#添加第二层的对象,浅复制和深复制都不受影响
1
2
3
4
5
6
7
8
9
|
>>> dict [ 'new' ] = { 'a' : 1 , 'b' : 2 , 'c' : 5 }
>>> dict
{ 'info' : [ 'a' , 'b' , 100 , 2 ], 'name' : 'wang' , 'age' : 32 , 'job' : 'it' , 'new' : { 'a' : 1 , 'c' : 5 , 'b' : 2 }}
>>> dict_alias
{ 'info' : [ 'a' , 'b' , 100 , 2 ], 'name' : 'wang' , 'age' : 32 , 'job' : 'it' , 'new' : { 'a' : 1 , 'c' : 5 , 'b' : 2 }}
>>> dict_copy
{ 'info' : [ 'a' , 'b' , 100 , 2 ], 'job' : 'it' , 'age' : 40 , 'name' : 'wang' , 'sex' : 'm' }
>>> dict_deep
{ 'info' : [ 'a' , 'b' , 1 , 2 ], 'job' : 'it' , 'age' : 40 , 'name' : 'wang' , 'sex' : 'm' }
|
2、内置函数说明:
__name__:主文件时返回main,否则返回文件名,可用来判断是否说主文件还是导入模块;
__file__:文件的绝对路径;
__doc__:文件开头的注释说明
例:
1
2
3
4
5
6
7
8
9
|
'''
created by 2015-12-18
@author: kevin
'''
if __name__ = = '__main__' :
print ( 'this is main file' )
print (__file__)
print (__doc__)
|