日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2019.08.08学习整理

發布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2019.08.08学习整理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019.08.08學習整理

文件的高級應用

1.可讀、可寫

  • r+t: 可讀、可寫
  • w+t: 可寫、可讀
  • a+t: 可追加、可讀
# wt with open('36w.txt', 'wt', encoding='utf-8') as fw:print(fw.readable())print(fw.writable())False True # w+t with open('36w.txt', 'w+t', encoding='utf-8') as fw:print(fw.readable())print(fw.writable())True True # r+t with open('36w.txt', 'r+t', encoding='utf-8') as fr:print(fr.readable())print(fr.writable())True True

2.文件內指針移動

硬盤上從來沒有修改一說,硬盤上只有覆蓋,即新內容覆蓋新內容。

1.seek(offset,whence): offset代表文件指針的偏移量,單位是字節

#seek with open('b.txt','rt',encoding='utf8')as frprint(f"fr.seek(4,0):{fr.seek(3,0)}") #0相當于文件頭開始;1相當于當前文件所在位置;2相當于文件末尾# fr.seek(0,2) # 切換到文件末尾fr.seek(4, 0): 3

2.tell(): 每次統計都是從文件開頭到當前指針所在位置

# tell() with open('b.txt', 'rt', encoding='utf-8') as fr:fr.seek(4, 0)print(f"fr.tell(): {fr.tell()}") fr.tell(): 4

3.read(n): 只有在模式下的read(n),n代表的是字符個數,除此之外,其他但凡涉及文件指針的都是字節個數

# read() with open('b.txt', 'rt', encoding='utf-8') as fr:print(f"fr.read(3): {fr.read(3)}") fr.read(3): sdf

4.truncate(n): truncate(n)是截斷文件,所以文件的打開方式必須可寫,但是不能用w或w+等方式打開,因為那樣直接清空文件了,所以truncate()要在r+或a或a+等模式下測試效果。它的參照物永遠是文件頭。并且truncate()不加參數,相當于清空文件。

# truncate() with open('36r.txt', 'r+t', encoding='utf-8') as fr:fr.truncate(3)

文件修改的兩種方式

方式一

將硬盤存放的該文件的內容全部加載到內存,在內存中是可以修改的,修改完畢后,再由內存覆蓋到硬盤(word,vim,nodpad++等編輯器)。

import os with open('a.txt','r',encoding='utf8')as fr,\open('a_swap.txt','w')as fw:data=fr.read()# 全部讀入內存,如果文件很大,會很卡data=data.replace('apple','apples')# 在內存中完成修改fw.write(data) # 新文件一次性寫入原文件內容 # 刪除原文件 os.remove('a.txt') # 重命名新文件名為原文件名 os.rename('a_swap.txt','a.txt')

方式二

將硬盤存放的該文件的內容一行一行地讀入內存,修改完畢就寫入新文件,最后用新文件覆蓋源文件

import os with open('a.txt','r',encoding='utf8')as fr,\open('a_swap.txt','w')as fw:# 循環讀取文件內容,逐行修改for line in fr:line = line.replace('apples', 'apple')# 新文件寫入原文件修改后內容fw.write(line) os.remove('a.txt') os.rename('a_swap.txt', 'a.txt')

修改文件內容的思路為:以讀的方式打開原文件,以寫的方式打開一個新的文件,把原文件的內容進行修改,然后寫入新文件,之后利用os模塊的方法,把原文件刪除,重命名新文件為原文件名,達到以假亂真的目的。

函數的定義

什么是函數

函數就是具備某一功能的工具,事先將工具準備好就是函數的定義,遇到應用場景拿來就用就是函數的調

如何用函數

先定義函數,后調用。

  • 定義函數

    def 函數名()<代碼塊>return 返回值
  • 調用函數

函數名()

函數定義階段

def func():bar()# 不屬于語法錯誤,不會報錯print('*'*10)
  • 只檢測語法,不執行函數體代碼
  • 函數調用階段

    def bar():print('from bar')def foo():print('from foo')bar()foo() ''' from foo from bar '''

    執行函數代碼

    定義函數的三種方式

    無參函數

    定義函數時參數是函數體接收外部傳值的一種媒介,其實就是一個變量名

    在函數階段括號內沒有參數,稱為無參函數。需要注意的是:定義時無參,意味著調用時也無需傳入參數。

    如果函數體代碼邏輯不需要依賴外部傳入的值,必須得定義成無參函數。

    def func():print('hello nick')func() # hello nick

    有參函數

    在函數定義階段括號內有參數,稱為有參函數。需要注意的是:定義時有參,意味著調用時也必須傳入參數。

    如果函數體代碼邏輯需要依賴外部傳入的值,必須得定義成有參函數。

    def sum_self(x, y):"""求和"""res = x+yprint(res)sum_self(1,2) # 3

    空函數

    當你只知道你需要實現某個功能,但不知道該如何用代碼實現時,你可以暫時寫個空函數,然后先實現其他的功能。

    def func():pass

    函數的返回值

    什么是返回值

    函數內部代碼經過一些列邏輯處理獲得的結果。

    def func():name = 'nick'return namename = func() print(name)

    nick

    為什么要有返回值?

    現在有一個需求,比較兩個人的月薪,然后想獲取月薪較大人的年薪。

    如果需要在程序中拿到函數的處理結果做進一步的處理,則需要函數必須要有返回值。

    需要注意的是:

    • return是一個函數結束的標志,函數內可以有多個return,只要執行到return,函數就會執行。
    • return的返回值可以返回任意數據類型
    • return的返回值無個數限制,即可以使用逗號隔開返回多個值
      • 0個:返回None
      • 1個:返回值是該值本身
      • 多個:返回值是元組
    # 為什么要有返回值 def max_self(salary_x, salary_y):if salary_x > salary_y:return salary_xelse:return salary_ymax_salary = max_self(20000, 30000) print(max_salary*12) 360000 # 函數返回多個值 def func():name = 'nick'age = 19hobby_list = ['read', 'run']return name, age, hobby_listname, age, hobby_list = func() print(f"name,age,hobby_list: {name,age,hobby_list}") name,age,hobby_list: ('nick', 19, ['read', 'run'])

    函數的參數

    形參和實參

    形參

    在函數定義階段括號內定義的參數,稱之為形式參數,簡稱形參,本質就是變量名。

    def func(x, y):print(x)print(y)

    實參

    在函數調用階段括號內傳入的參數,稱之為實際參數,簡稱實參,本質就是變量的值。

    func(1, 2)

    位置參數

    位置形參

    在函數定義階段,按照從左到右的順序依次定義的形參,稱之為位置形參。

    def func(x, y):print(x)print(y)

    特點:按照位置定義的形參,都必須被傳值,多一個不行,少一個也不行。

    位置實參

    在函數調用階段,按照從左到右的順序依次定義的實參,稱之為位置實參。

    func(1, 2)

    特點:按照位置為對應的形參依次傳值。

    關鍵字實參

    在調用函數時,按照key=value的形式為指定的參數傳值,稱為關鍵字實參。

    func(y=2, x=1)

    特點:可以打破位置的限制,但仍能為指定的形參賦值。

    注意:

  • 可以混用位置實參和關鍵字實參,但是位置實參必須在關鍵字實參的左邊。
  • 可以混用位置實參和關鍵字實參,但不能對一個形參重復賦值。
  • 默認形參

    在定義階段,就已經被賦值。

    def func(x, y=10):print(x)print(y)func(2)

    特點:在定義階段就已經被賦值,意味著在調用時可以不用為其賦值。

    注意:

  • 位置形參必須放在默認形參的左邊。
  • 默認形參的值只在定義階段賦值一次,也就是說默認參數的值在函數定義階段就已經固定了。
  • 轉載于:https://www.cnblogs.com/zhangmingyong/p/11322518.html

    總結

    以上是生活随笔為你收集整理的2019.08.08学习整理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。