python day08
一 文件處理補(bǔ)充
控制文件中光標(biāo)移動(dòng)
1 f.read(n):
l.文件打開(kāi)方式為文本模式的時(shí),代表讀取N個(gè)字符
ll.文件打開(kāi)方式為b模式時(shí),讀取N個(gè)字節(jié)
強(qiáng)調(diào):只有在read(n)模式下 N代表字符個(gè)數(shù),除此之外的是以字節(jié)為單位
2 f.seek():
光標(biāo)移動(dòng)是以字節(jié)為單位的整數(shù)移動(dòng).
三種模式:(分別為0 1 2 代表)
0(默認(rèn)模式):參照文件開(kāi)頭 往后數(shù) 該模式既可以在t下用 也可以在b下用
1模式:參照光標(biāo)當(dāng)前位置往下數(shù)
2模式:參照文件末尾往下數(shù)
其中1和2必須在b模式下進(jìn)行,但無(wú)論哪種模式,都是以bytes為單位移動(dòng)的
? ? ? ?f.seek(3,0)? ?3--字節(jié),0--方式
4 f.truncate(3):截?cái)辔募?#xff0c;在第三個(gè)字符后添加內(nèi)容/刪除之后的內(nèi)容
其文件的打開(kāi)方式必須可寫(xiě),但是不能用w或w+等方式打開(kāi)(直接清空文件),所以truncate要在r+或a或a+等模式下測(cè)試效果
5 f.tell:光標(biāo)移動(dòng)到文件末尾
例:
import time with open('access.log',mode='rb')as f:f.seek(0,2)while True:line=f.readline()if len(line)==0:time.sleep(0.1)else:print (line,decode('utf-8'),end=' ')二 函數(shù)
l 什么是函數(shù)
在程序中具備某一功能的工具==>函數(shù)
實(shí)現(xiàn)準(zhǔn)備好工具==>函數(shù)的定義
遇到應(yīng)用場(chǎng)景 拿來(lái)就用==>函數(shù)的作用
?函數(shù)分兩類:內(nèi)置函數(shù) ?自定義函數(shù)
ll 為何要用函數(shù)
1 代碼冗余
2 程序的組織結(jié)構(gòu)不清晰 可讀性差
3 擴(kuò)展性差
lll 如何用函數(shù): 函數(shù)的使用必須遵循一個(gè)原則
1 先定義
先定義 def 函數(shù)名(參數(shù)1 參數(shù)2 參數(shù)3) """文檔注釋 """代碼1代碼2代碼3 return(返回)值
2 后引用?
? ? 函數(shù)名()
#1. 定義階段: 只檢測(cè)語(yǔ)法,不執(zhí)行代碼def func():print('from func 1')#2. 調(diào)用階段: 開(kāi)始執(zhí)行函數(shù)體代碼func()# 定義 def func():print('from func')bar()def bar():print('from bar')# 調(diào)用 func()函數(shù)的定義與調(diào)用三 定義函數(shù)的三種形式
l 無(wú)參函數(shù)
ll 有參函數(shù)
lll 空函數(shù)
1. 無(wú)參函數(shù) def func():print('from func')func()# 2. 有參函數(shù) def max2(x,y):# x=1# y=2if x > y:print(x)else:print(y)max2(1,2) max2(3,4)# 3. 空函數(shù) def register():pass四 調(diào)函數(shù)的三種形式
l 語(yǔ)句形式
ll 表達(dá)式形式
lll 函數(shù)的調(diào)用可以當(dāng)作另外一個(gè)函數(shù)的參數(shù)傳入
# 1 語(yǔ)句形式 def func():print('from func')func() # 2 表達(dá)式形式 def max2(x,y):if x > y:return xelse:return yres=max2(110,220) * 12 print(res)res=len('hello') print(res)# 3 函數(shù)的調(diào)用可以當(dāng)作另外一個(gè)函數(shù)的參數(shù)傳入 def max2(x,y):if x > y:return xelse:return yres=max2(max2(7,9),2) print(res)調(diào)用函數(shù)的三種形式五 函數(shù)的返回值
1 什么是函數(shù)的返回值
?返回值是函數(shù)體代碼的運(yùn)行成果
2 為何要有返回值
?需要拿到函數(shù)的處理結(jié)果做進(jìn)一步的處理,則函數(shù)必須有返回值
3 如何用:return返回值特點(diǎn)
注: 返回的值沒(méi)有類型限制,也沒(méi)有個(gè)數(shù)限制
l return或者函數(shù)沒(méi)return:返回值為None
ll?return:返回的就是該值本身
lll?return值1 值2 值3:返回元組(值1 值2 值3)
def func():return 1,1.2,'aaa',[1,2,3]pass res=func() print(res) #(1, 1.2, 'aaa', [1, 2, 3])lV?return是函數(shù)結(jié)束運(yùn)動(dòng)的標(biāo)志,函數(shù)內(nèi)可以有多個(gè)return,但只要執(zhí)行一次函數(shù)就立即結(jié)束,并且將return后的值當(dāng)作本次調(diào)用的結(jié)果返回.
def func():print('aaaa')return 1print('bbb')return 2print('ccc')return 3func() #aaaa 只返回第一個(gè)return的值?
四、函數(shù)的參數(shù)
1.形參:在定義函數(shù)時(shí),括號(hào)內(nèi)指定參數(shù)(變量名)
1)位置形參:在定義階段,按從左到右順序依次定義的形參
特點(diǎn):必須被傳值
def func(x,y,z):print(x,y,z)func(1,2,3) #有且只有三個(gè)值,多少都會(huì)報(bào)錯(cuò)??
2)? 默認(rèn)形參:在定義階段,就已經(jīng)為某個(gè)形參賦值
特點(diǎn):在定義階段,就已經(jīng)有值,意味著調(diào)用階段可以不用為其傳值,但若傳值,則以傳入的值為準(zhǔn)?
默認(rèn)形參??注意:位置形參必須放在默認(rèn)形參的前面?
?3) 形參中*與**的用法
I. 形參中帶*:*會(huì)將溢出的位置實(shí)參存成元組的形式然后賦值其后變量名def func(x,y,*args):
print(x,y,args)
func(1,2,3,4,5,6) # 1 2 (3, 4, 5, 6)
II.形參中帶**:**會(huì)溢出的關(guān)鍵字實(shí)參存成字典的格式然后賦值其后變量名
def func(x,y,**kwargs):
print(x,y,kwargs)
func(1,y=2,z=3,m=1,n=2) # 1 2 {'z': 3, 'm': 1, 'n': 2}
2.實(shí)參:在調(diào)用函數(shù)時(shí),括號(hào)內(nèi)傳入的值(變量值)
?1)位置實(shí)參:在調(diào)用階段,按從左到右依次傳入的值
特點(diǎn):這種傳值方式會(huì)與形參一一對(duì)應(yīng)
? ? ??func(2,1,3)
?2)? 關(guān)鍵字實(shí)參:在調(diào)用階段,按key=value格式傳值
特點(diǎn):可完全打亂位置,但仍可為指定形參傳值
? ? ?func(z=3,y=2,x=1)?
注意:可以混用關(guān)鍵字實(shí)參與位置實(shí)參,但是 1. 同一個(gè)形參只能被賦值一次 2. 位置實(shí)參必須跟在關(guān)鍵字實(shí)參的前面 func(1,z=3,y=2) func(1,z=3,y=2,x=333) func(x=1,2,z=3) # 報(bào)語(yǔ)法錯(cuò)誤 3 )實(shí)參中*與**的用法I. 實(shí)參中帶*:先將實(shí)參打散成位置實(shí)參,然后再與形參做對(duì)應(yīng)
def func(x,y,z):
print(x,y,z)
func(1,[2,3]) # 報(bào)錯(cuò)
func(*[1,2,3]) # 1,2,3
func(*'hello') # 報(bào)錯(cuò),只需要三個(gè)值
func(*'hel') #h e l II.實(shí)參中帶**:先將實(shí)參打散成關(guān)鍵字實(shí)參,然后再與形參做對(duì)應(yīng)
def func(x,y,z):
print(x,y,z)
func(**{'x':1,'z':3,'y':2}) # 1 2 3
?
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/zhouyuquan/p/10038850.html
總結(jié)
以上是生活随笔為你收集整理的python day08的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 辐射校正(传感器定标+大气校正)
- 下一篇: Python--day60--一个简单(