1. 程式人生 > >py深淺拷貝,文件操作

py深淺拷貝,文件操作

一段 去掉 生成 encoding 區別 編碼 覆蓋 拷貝文件 str

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("你好,小白)

py深淺拷貝,文件操作