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__) |