檔案處理 函式

2021-10-08 05:11:24 字數 4925 閱讀 6172

方式二函式

二、為何要有函式

三、如何用函式

函式中引數的分類

二、實參

with

open

('a.txt'

,mode=

'r+t'

,encoding=

'utf-8'

)as f:

print

(f.writable())

f.seek(7,

0)f.write(

'sb'

)with

open

('a.txt'

,mode=

'r+t'

,encoding=

'utf-8'

)as f:

f.seek(3,

0)f.write(

'h')

由上例得出結論:硬碟都是用新內容覆蓋舊內容,沒有修改的概念,但是記憶體是可以修改的

如何修改檔案:

思路:把硬碟的內容先讀入記憶體,然後在記憶體中修改完畢後,再覆蓋會硬碟

優點: 不耗費硬碟

缺點:耗費記憶體

with

open

('a.txt'

,mode=

'rt'

,encoding=

'utf-8'

)as f1:

data=f1.read(

) res=data.replace(

'lxx'

,'sb'

)with

open

('a.txt'

,mode=

'wt'

,encoding=

'utf-8'

)as f2:

f2.write(res)

優點:節省記憶體

缺點:耗費硬碟空間

import os

with

open

('a.txt'

,mode=

'rt'

,encoding=

'utf-8'

)as f1,\

open

('.a.txt.swp'

,mode=

'wt'

,encoding=

'utf-8'

)as f2:

for line in f1:

res=line.replace(

'sb'

,'lxx'

) f2.write(res)

os.remove(

'a.txt'

)os.rename(

'.a.txt.swp'

,'a.txt'

)

定義函式:

def 函式名(引數1

,引數2

,引數3,.

..):

"""文件注釋"""

**1**2

**3..

.return 返回值

1.無參函式

只返回值或者不返回值,不進行運算

def

login()

: inp_name=

input

("your name: "

).strip(

) inp_pwd=

input

("your pwd: "

).strip(

)if inp_name ==

"egon"

and inp_pwd ==

"123"

:print

('login successful'

)else

:print

('login error'

)login(

)def

sayhi()

:print

('='

*100

)print

('hello'

)print

('='

*100

)sayhi(

)

2.有參函式

函式裡面有引數

引數就像工廠的流水線,可以定義無限個引數,我們根據函式的功能來決定是否呼叫引數

def

sayhi

(s,n)

:# s = '-'

# n = 20

print

(s*n)

print

('hello'

)print

(s*n)

sayhi(

'-',20)

sayhi(

'*',10)

defmax2

(x,y)

:# x=10

# y=20

if x > y:

print

(x)else

:print

(y)max2(10,

20)max2(11,

22)

3.空函式

通常在構建框架時使用

def

func1()

:pass

呼叫函式: 函式名()=> 函式的記憶體位址(),會觸發函式體**的執行

1、語句形式:單純地呼叫一下函式就完了

def

sayhi

(s,n)

:# s = '-'

# n = 20

print

(s*n)

print

('hello'

)print

(s*n)

sayhi(

'*',

30)

2、表示式形式

通過呼叫函式來對於函式返回的值進行後續的運算

def

max2

(x,y)

:if x > y:

return x

else

:return y

res=max2(11,

22)*12

print

(res)

3、可以把函式的呼叫當作值傳給另外乙個函式

相當於函式的巢狀(可以這樣理解:函式和變數一樣,總歸是儲存的乙個值,可以當作乙個變數來使用,只是乙個可以內部運算然後返還值的變數)

print

(max2(11,

22))

引數:已經被賦值,或者還沒有被賦值的變數名

在定義函式時,括號內定義的變數名,稱之為形式引數,簡稱形參=》變數名

位置形參:在函式定義階段按照從左到右的順序依次定義形參(變數名),稱之為位置形參

特點:必須被傳值

在呼叫函式時,括號內傳入的值,稱之為實際引數,簡稱實參=》變數值

位置實參:在函式呼叫階段按照從左到右的順序依次定義實參(傳入的變數值),稱之為位置實參

特點:按照位置傳值,一一對應

關鍵字實參:在函式呼叫階段按照key=value的形式為指定的形參名傳值,該形式稱之為關鍵字實參

特點:在傳值時可以完全打亂順序,但是仍然能夠指名道姓地為指定的形參傳值

注意:可以混用位置實參與關鍵字實參,但是

1 位置實參必須放在關鍵字實參的前面

2 不能為同乙個形參重複賦值

def

func

(name, age, salary)

:print

(name)

print

(age)

print

(salary)

# func('egon',salary=3.1,age=18)

# func('egon',salary=3.1,18) # 錯誤

# func('egon', 18, salary=3.1) # 錯誤

# func('egon',18,age=19,salary=3.3)

3、預設形參:在函式定義階段就已經為某個形參賦值,該形參稱之為有預設值的形參,簡稱預設形參

特點: 定義階段就已經被賦值意味著在函式呼叫階段可以不用為其賦值

1 預設形參應該放在位置形參的後面

def

func

(y=2

,x):

# 錯誤

pass

2 預設形參的值通常應該是不可變型別

def

func

(name,hobby,hobbies=

):print

("%s 的愛好是:%s"

%(name,hobbies)

)func(

"egon"

,'play'

)func(

'lili'

,'music'

)func(

"jack"

,'read'

)def

func

(name,hobby,hobbies=

none):

if hobbies is

none

: hobbies=

print

("%s 的愛好是:%s"

%(name,hobbies)

)func(

"egon"

,'play'

)func(

'lili'

,'music'

)func(

"jack"

,'read'

)

3 預設形參的值只在函式定義階段被賦值一次,函式定義之後的改變對預設形參沒有影響

檔案處理函式

這兩天在寫個遍歷檔案批處理的小工具,碰到幾個時間相關的函式,整理了下,說不定以後可能會再用到呢 判斷檔案是否存在 bool filei ists lpcstr filepath findclose hfind return true 獲取檔案最後修改時間距當前時間的差值 用於判斷該檔案是否正在寫的一...

檔案處理函式

前幾天參加鄭州悉知公司的校園招聘會,面試官問了很多有關檔案處理函式,當時回答的不是很少,雖然平時也經常用到有關檔案處理的函式,但是也沒對檔案處理函式做總結,檔案處理函式也是我們學習web開發中重要的一塊 這是回來之後對檔案處理函式的總結 basename 返回路徑中的檔名 c hgrp 改變檔案所屬...

檔案處理函式

winapi getwindowsdirectory 獲取 windows 所在目錄 宣告 getwindowsdirectory lpbuffer pchar usize uint uint 舉例 vararr array 0 max path ofchar num uint begin num ...