1. 程式人生 > 其它 >python初識函式(1)

python初識函式(1)

目錄

引言

小夥伴們,我們已經學了很多有意思的東西了,下面來學點讓我們可以簡化重複程式碼的方法。

檔案內游標的移動

# read方法在文字模式下,括號內可以寫數字來表示讀到哪一位字元為止
with open('a.txt','r',encoding ='utf8') as f1:
	print(f1.read(3))
# read方法在二進位制模式下,括號內可以寫數字來表示讀到哪一位位元組為止,因此注意解碼。
with open('b.txt','rb') as f2:
    print(f2.read(9).decode('utf8'))
'''
utf8中文用3個位元組表示英文用一個位元組表示,unicode所有字元都是用2個位元組的,以後研究utf8、GBK等編碼就可以了。
'''
# seek方法可以控制游標的移動,任何模式下移動的單位都是位元組數
with open('a.txt','r',encoding='utf8') as f3:
    f3.seek(3, 0)
    print(f3.read())
'''
記住seek方法中的第一個引數是讀取游標所在位置後面的指定位數字節,第二個引數有0,1,2三種,0表示游標移動到文字的初始位置,1表示游標在當前位置,2表示游標在文字的結尾處。除了0是兩個模式都支援外,其他只支援二進位制模式。
'''

檔案的修改

'''
講檔案的修改之前,我們要先講硬碟上資料的兩種狀態作為知識補充,
硬碟上的資料分為兩種佔有態和自由態,我們刪除資料就是把資料從佔有態變化成了自由態,之後進來的新資料如果落在自由態位置上就會把原有的資料直接覆蓋掉,所以以後想刪除自己重要資訊,在刪除後還得進行覆蓋。記住機械硬碟是要這麼做的,固態有些沒有狀態分類的就不需要覆蓋了。
'''
with open(r'b.xtx','r+t',encoding='utf8') as f:
    # 記住r+t就是文字模式中的讀寫模式
    f.seek(2)  # 不寫模式,預設為0模式
    f.write('da')
'''
檔案資料在硬碟上其實是刻死,只能在兩邊加內容,想在中間加就得移除老內容,重新刻一個。
'''
# 修改有兩種思路,都是需要重新刻內容的
'''
1. 將檔案內容全部讀入記憶體中,在記憶體中修改檔案資料,然後用w操作模式覆蓋原檔案,優點是修改過程同一份資料只有一份,但是佔用記憶體多
2. 用讀的方式開啟原始檔,用寫的方式開啟一個臨時檔案,一行行讀取原始檔內容,修改完後寫入臨時檔案,然後刪除原檔案,把臨時檔案改為原檔案的名字,來個狸貓換太子,優點不會佔用太多記憶體,缺點修改過程同一份資料存了兩份。
'''

函式的簡介

'''
對於函式我的理解就是將一個完整的解決問題的過程封裝成一個包,我們只要往裡面放入需要的動態資料,就可以直接得到問題解決後的結果。
'''
# 函式和迴圈的區別在於迴圈時在相同的地方反覆執行相同的程式碼,而函式時在不同的地方反覆執行相同的程式碼
# len其實是python直譯器提前給我們寫好的函式,這種叫內建函式,而我們自己封裝的叫自定義函式
# 當一個方法要重複使用的時候,我們就可以把它封裝成一個函式,這樣可以反覆利用。

函式的語法結構

def 函式名(引數1,引數2,引數3):
    函式體程式碼
    return 返回值
'''
def是用來定義函式的關鍵字,函式名要做到見名知意,括號中的引數就是用於寫給運用函式時,寫入實參的作用,函式體程式碼是最重要的,你建立的函式是用來幹什麼的都由函式體程式碼決定,return雖然是返回值,但是你不能直接看到,還是要靠print。函式的運用就是直接函式名()即可,但是括號內的引數就看你所用函式的要求了。
'''