python从入门到精通(DAY 2)

1052次阅读  |  发布于5年以前

1、字典复制:


    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  深复制(完全独立)

注:浅复制下的关联只是针对字典初始状态包含的嵌套对象,后新加的不会

例:


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

添加、改变、删除第一层的对象键值,浅复制和深复制都不受影响


    >>> 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'}

改变、删除原有的第二层的对象键值,浅复制受影响,而深复制都不受影响


    >>> 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'}

添加第二层的对象,浅复制和深复制都不受影响


    >>> 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__:文件开头的注释说明

例:


    '''
      created by 2015-12-18
      @author: kevin
    '''

    if __name__ == '__main__':
      print('this is main file')
      print(__file__)
      print(__doc__)

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8