py深浅拷贝,文件操作

py深浅拷贝,文件操作

回顾&补充

  • 独有功能叫方法
  • range是默认随机生成一段数字
  • range/type/id

一,深浅拷贝

  • 浅拷贝只拷贝第一层,深拷贝拷贝嵌套层次中所有可变类型

  • 深浅拷贝需要先引用模块import copy

    例子:
    v = [1,12,34,33,[33,44]]
    import copy
    vv = copy.deepcopy(v)

1.深拷贝

  • copy.deepcopy
  • 深拷贝里面所有可变类型拷贝一遍
a = "sss"
b = copy.deepcopy(a)                  
例子:
v = [1,12,34,33,[33,44]]
import copy
vv = copy.deepcopy(v)
print(id(vv[3]),id(v[3]))
输出结果:1868596336 1868596336
print(id(vv[4]),id(v[4]))
输出结果:1902741508552 1902741297416

2浅拷贝

  • copy.copy
  • 浅拷贝就是把列表里面的空壳拷贝,里面元素地址还是原来的
a = "ss"
b = copy.copy(a)
例子:
v = [1,12,34,33,[33,44]]
import copy
vv = copy.copy(v)
print(id(vv[3]),id(v[3]))
输出结果:1868596336 1868596336
print(id(vv[4]),id(v[4]))
输出结果2663470471432 2663470471432
  • !深拷贝浅拷贝一般情况下没有区别,只有在嵌套时才有区别

  • 不可变类型拷贝,不会拷贝,地址一样

  • 特殊情况:如果元组里面都是不可变的,不会改变原来的地址,如果里面有可变,深拷贝会把元组拷贝一遍

    实例:
    ##拷贝可变类型,能够拷贝,在内存开辟一个空间,地址不一样
    v = [1,12,34,33,[33,44]]
    import copy
    vv = copy.deepcopy(v)
    print(id(vv),id(v))
    输出结果:1664607524872 1664605100808
    
    ##不可变类型拷贝,不会拷贝,地址一样
    v = (1,12,34,33,[33,44])
    import copy
    vv = copy.copy(v)
    print(id(vv),id(v))
    输出结果:2831372300448 2831372300448
    
    v = (1,12,34,33,[33,44])
    import copy
    vv = copy.deepcopy(v)
    print(id(vv[4]),id(v[4]))
    输出结果:2754557676624 2754555654304
    ##特殊情况:如果元组里面都是不可变的,不会改变原来的地址,如果里面有可变,深拷贝会把元组拷贝一遍

二,文件操作

1.写入

  • r是只读,w是只写(先清空文件),a是只写(只添加不能读)

  • file_object.seek()指定光标位置

  • 可读可写

    • r+ (**)常用程度

      读:,默认光标位置0,读时默认从最开始读

      写:根据光标的位置从当前光标位置开始进行操作,会覆盖当前光标后面的值

    • w+ (**)常用程度

      读:默认光标最后或0,读取时需要调整光标位置

      写:先清空

    • a+ (*)常用程度

      读:默认光标位置在最后,读需要调整光标位置

      写:写入时不论怎么调整光标位置,永远写到最后

  • 读取文件

    例子:
    file.object = open (”文件“,mode="r",encoding="编码")
    读取文件:
    变量 = file.object
    print(变量)
    关闭文件
    file_object.close
    ## r 不能新建,文件不存在报错
  • 写入文件

    例子:
    file_object = open (”文件“,mode="w",encoding="编码")
    写入文件:
    file_object.write("写入内容")
    关闭文件
    file_object.close
    ##  w 权限一般用于新建,文件不存在新建
    例子:
    file_object = open (”文件“,mode="a",encoding="编码")
    写入文件:
    file_object.write("写入内容")
    关闭文件
    file_object.close
    ## a 只添加不能读,不存在就新建

2.操作

.read把文件所有内容读取到内存

.read(2)当前光标向后读取两个字符

.readliens把所有文件到内存,并按照行到列表

读取大文件:用循环循环读取,.strip能够去掉换行(***********)
      
写文件操作:file_object.write("你好,小黑"/n)
file_object.write("你好,小白)

猜你喜欢

转载自www.cnblogs.com/ffmmxx/p/10656857.html