您好,登錄后才能下訂單哦!
python在怎樣進(jìn)行函數(shù)文件處理,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
文檔處理
# f=open('a.txt','r+') #讀寫
# f=open('a.txt','w+') #寫讀
# f=open('a.txt','a+') #追加并且讀
# f=open('a.txt','w')
# f.write('111111\n')
# f.close()
#上下文管理
# with open('a.txt','r',encoding='utf-8') as f,open('b.txt') as b_f:
# # print(f.read())
# print('====>')
#補(bǔ)充
# for i in range(3):
# print(i)
# # continue
# if i == 1:
# break
# else:
# print('=============>') #當(dāng)for循環(huán)不被break打斷,就會執(zhí)行else的代碼
#
# with open('a.txt','r',encoding='utf-8') as read_f,\
# open('aa.txt','w',encoding='utf-8') as write_f:
#
# for line in read_f:
# write_f.write(line)
# else:
# print('write successfull')
# i=0
# while i< 5:
# print(i)
# i+=1
# if i == 3:
# break
# else:
# print('------>')
# with open('a.txt','rb') as f:
# print(f.read().decode('utf-8'))
# with open('c.txt','wb') as f:
# f.write('哈哈哈'.encode('utf-8'))
# f=open('sb.jpg','r',encoding='utf-8') #文本的方式讀不了二進(jìn)制文件
# print(f.read())
# with open('sb.jpg','rb') as read_f,\
# open('sb_alex.jpg','wb') as write_f:
# data=read_f.read()
# write_f.write(data)
#不常用的,了解
# with open('a.txt','r',encoding='utf-8') as f:
# print(f.read(4)) #數(shù)字指的是讀的是字符
#
# with open('a.txt','rb') as f:
# print(f.read(1)) #數(shù)字指的是讀的是字符
# with open('a.txt','r',encoding='utf-8') as f:
# f.seek(3) #seek內(nèi)指定的數(shù)字代表字節(jié)
# print(f.tell()) #當(dāng)前光標(biāo)所在的位置
# print(f.read())
# with open('aa.txt','r+',encoding='utf-8') as f:
# # f.seek(3) #seek內(nèi)指定的數(shù)字代表字節(jié)
# # print(f.read())
#
# f.truncate(1)
# with open('b.txt','rb') as f:
# f.read()
# f.seek(3) #默認(rèn)情況,是以文件起始位置作為開始,往后移動3個(gè)bytes
# f.read(1)
# print(f.tell())
# f.seek(2,1) #1 代表以當(dāng)前光標(biāo)所在的位置為開始,往后移動2個(gè) bytes
# print(f.tell())
# f.seek(-1,2) #2表以當(dāng)前光標(biāo)所在的位置為開始,往后移動2個(gè) bytes
# print(f.tell())
# f.seek(0,2)
# with open('c.txt','r',encoding='utf-8') as f:
# f.seek(0,2)
# print('====>',f.read())
# tail -f access.log
函數(shù)
'''
沒有函數(shù)會有什么問題?
1.無組織無結(jié)構(gòu),代碼冗余
2.可讀性差
3.無法統(tǒng)一管理且維護(hù)成本高
'''
# 在python中函數(shù)分兩類:內(nèi)置函數(shù),自定義函數(shù)
#內(nèi)置函數(shù)
# sum
# max
# min
#
# a=len('hello')
# print(a)
#
# b=max([1,2,3])
# print(b)
#自定義函數(shù)
# # ******
# # ******
# # ******
# # hello world
# # ******
# # ******
# # ******
函數(shù)的參數(shù)
#從大的角度去看,函數(shù)的參數(shù)分兩種:形參(變量名),實(shí)參(值)
#定義階段
# def foo(x,y): #x=1,y=2
# print(x)
# print(y)
#調(diào)用階段
# foo(1,2)
#詳細(xì)的區(qū)分函數(shù)的參數(shù)分為五種:
# 位置參數(shù),關(guān)鍵字參數(shù),默認(rèn)參數(shù),可變長參數(shù)(*args,**kwargs),命名關(guān)鍵字參數(shù)
#位置參數(shù)
# def foo(x,y,z):#位置形參:必須被傳值的參數(shù)
# print(x,y,z)
#
# # foo(1,2,3)
# foo(1,2,3) #位置實(shí)參數(shù):與形參一一對應(yīng)
#關(guān)鍵字參數(shù):key=value
def foo(x,y,z):
print(x,y,z)
# foo(z=3,x=1,y=2)
#關(guān)鍵字參數(shù)需要注意的問題:
# 1:關(guān)鍵字實(shí)參必須在位置實(shí)參后面
# 2: 不能重復(fù)對一個(gè)形參數(shù)傳值
# foo(1,z=3,y=2) #正確
# foo(x=1,2,z=3) #錯(cuò)誤
# foo(1,x=1,y=2,z=3)
#默認(rèn)參數(shù)
# def register(name,age,sex='male'): #形參:默認(rèn)參數(shù)
# print(name,age,sex)
#
# register('asb',age=40)
# register('a1sb',39)
# register('a2sb',30)
# register('a3sb',29)
#
# register('鋼蛋',20,'female')
# register('鋼蛋',sex='female',age=19)
#默認(rèn)參數(shù)需要注意的問題:
#一:默認(rèn)參數(shù)必須跟在非默認(rèn)參數(shù)后
# def register(sex='male',name,age): #在定義階段就會報(bào)錯(cuò)
# print(name,age,sex)
#(了解)二:默認(rèn)參數(shù)在定義階段就已經(jīng)賦值了,而且只在定義階段賦值一次
# a=100000000
# def foo(x,y=a):
# print(x,y)
# a=0
# foo(1)
#三:默認(rèn)參數(shù)的值通常定義成不可變類型
#可變長參數(shù)
def foo(x,y,*args): #*會把溢出的按位置定義的實(shí)參都接收,以元組的形式賦值給args
print(x,y)
print(args)
#
# foo(1,2,3,4,5)
# def add(*args):
# res=0
# for i in args:
# res+=i
# return res
# print(add(1,2,3,4))
# print(add(1,2))
# def foo(x, y, **kwargs): # **會把溢出的按關(guān)鍵字定義的實(shí)參都接收,以字典的形式賦值給kwargs
# print(x, y)
# print(kwargs)
# foo(1,2,a=1,name='egon',age=18)
# def foo(name,age,**kwargs):
# print(name,age)
# if 'sex' in kwargs:
# print(kwargs['sex'])
# if 'height' in kwargs:
# print(kwargs['height'])
#
# foo('egon',18,sex='male',height='185')
# foo('egon',18,sex='male')
#命名關(guān)鍵字參數(shù)(了解)
# def foo(name,age,*,sex='male',height):
# print(name,age)
# print(sex)
# print(height)
# #*后定義的參數(shù)為命名關(guān)鍵字參數(shù),這類參數(shù),必須被傳值,而且必須以關(guān)鍵字實(shí)參的形式去傳值
# foo('egon',17,height='185')
# def foo(name,age=10,*args,sex='male',height,**kwargs):
# def foo(name,age=10,*args,sex='male',height,**kwargs):
# print(name)
# print(age)
# print(args)
# print(sex)
# print(height)
# print(kwargs)
#
# foo('alex',1,2,3,4,5,sex='female',height='150',a=1,b=2,c=3)
# def foo(*args):
# print(args)
# foo(1,2,3,4) # 1,2,3,4 <=====>*(1,2,3,4)
#*['A','B','C','D'],=====>'A','B','C','D'
# foo(*['A','B','C','D']) #foo('A','B','C','D')
# foo(['A','B','C','D']) #
# def foo(x,y,z):
# print(x,y,z)
#
# # foo(*[1,2,3]) #foo(1,2,3)
# foo(*[1,2]) #foo(1,2)
# def foo(**kwargs):
# print(kwargs)
#
# #x=1,y=2 <====>**{'y': 2, 'x': 1}
# # foo(x=1,y=2)
#
# foo(**{'y': 2, 'x': 1,'a':1}) #foo(a=1,y=2,x=1)
# def foo(x,y,z):
# print(x,y,z)
#
# # foo(**{'z':3,'x':1,'y':2}) #foo(x=1,z=3,y=2)
# foo(**{'z':3,'x':1}) #foo(x=1,z=3)
# def foo(x,y,z):
# print('from foo',x,y,z)
#
# def wrapper(*args,**kwargs):
# print(args)
# print(kwargs)
#
#
# wrapper(1,2,3,a=1,b=2)
#
# def foo(x,y,z):
# print('from foo',x,y,z)
# def wrapper(*args,**kwargs):
# print(args) #args=(1,2,3)
# print(kwargs) #kwargs={'a':1,'b':2}
# foo(*args,**kwargs) #foo(*(1,2,3),**{'a':1,'b':2}) #foo(1,2,3,b=2,a=1)
# # wrapper(1,2,3,a=1,b=2)
# wrapper(1,z=2,y=3)
# def foo(x,y,z):
# print('from foo',x,y,z)
# def wrapper(*args,**kwargs):
# # print(args) #args=(1,)
# # print(kwargs) #kwargs={'y':3,'z':2}
# foo(*args,**kwargs) #foo(*(1,),**{'y':3,'z':2}) #foo(1,z=2,y=3)
# # wrapper(1,2,3,a=1,b=2)
# wrapper(1,z=2,y=3)
#
#補(bǔ)充:函數(shù)定義階段到底干了什么事情:只檢測函數(shù)體的語法,并不會執(zhí)行
# def bar():
# x
# if 1 >2:
# print('====>')
#
# bar()
函數(shù)的返回值
# def foo():
# print('from foo')
# return None
# res=foo()
# print(res)
'''
以三種情況返回值都為None:
沒有return
return 什么都不寫
return None
'''
# def foo():
# print('from foo')
# x=1
# return x
# res=foo()
# print(res)
#return 一個(gè)值 函數(shù)調(diào)用返回的結(jié)果就是這個(gè)值
def foo():
print('from foo')
x=1
return 1,[2,3],(4,5),{}
# res=foo()
# print(res) #打印結(jié)果:(1,[2,3],(4,5),{})
# a,b,c,d=foo()
# print(d)
#return 值1,值2,值3,... 返回結(jié)果:(值1,值2,值3,...)
# t=(1,2,3)
# a,_,_=t
# print(a)
# t=(1,2,3,4,5,6,7,8,9)
# a,*_,c=t
# print(a)
# print(c)
調(diào)用函數(shù)
def foo():
print('from foo')
def bar(name):
print('bar===>',name)
#按照有參和無參可以將函數(shù)調(diào)用分兩種
foo() #定義時(shí)無參,調(diào)用時(shí)也無需傳入?yún)?shù)
bar('egon') #定義時(shí)有參,調(diào)用時(shí)也必須有參數(shù)
#按照函數(shù)的調(diào)用形式和出現(xiàn)的位置,分三種
foo() #調(diào)用函數(shù)的語句形式
def my_max(x,y):
res=x if x >y else y
return res
# res=my_max(1,2)*10000000 #調(diào)用函數(shù)的表達(dá)式形式
# print(res)
res=my_max(my_max(10,20),30) #把函數(shù)調(diào)用當(dāng)中另外一個(gè)函數(shù)的參數(shù)
print(res)
自定義函數(shù)
#為什么要定義函數(shù)?:先定義后使用,如果沒有定義而直接使用,就相當(dāng)于引用了一個(gè)不存在的變量名
# foo()
# def foo():
# print('from foo')
# print(foo)
#函數(shù)的使用包含兩個(gè)階段:定義階段和使用階段
# 語法
# def 函數(shù)名(參數(shù)1,參數(shù)2,...):
# """文檔注釋"""
# 函數(shù)體
# return 值
# x=len('hello')
# print(x)
#定義函數(shù)的三種形式
#一:無參數(shù)函數(shù):如果函數(shù)的功能僅僅只是執(zhí)行一些操作而已,就定義成無參函數(shù),無參函數(shù)通常都有返回值
def print_star():
print('#'*6)
#二:定義有參函數(shù):函數(shù)的功能的執(zhí)行依賴于外部傳入的參數(shù),有參函數(shù)通常都有返回值
# def my_max(x,y):
# res=x if x >y else y
# return res
# 三元表達(dá)式
x=10
y=2
# if x > y:
# print(x)
# else:
# print(y)
#
# res=x if x > y else y
# print(res)
#三:空函數(shù)
# def auth():
# """認(rèn)證功能"""
# auth()
def insert():
"""插入功能"""
def select():
"""查詢功能"""
def delete():
"""刪除功能"""
def update():
"""更新功能"""
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。