您好,登錄后才能下訂單哦!
本篇內容主要講解“Python全棧文件函數和函數的參數有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python全棧文件函數和函數的參數有哪些”吧!
# ### 刷新緩沖區 """ # 刷新緩沖區 flush # 當文件關閉的時候自動刷新緩沖區 # 當整個程序運行結束的時候自動刷新緩沖區 # 當緩沖區寫滿了 會自動刷新緩沖區 # 手動刷新緩沖區 """ """ fp = open("ceshi1.txt",mode="a",encoding="utf-8") fp.write("abc") # 手動刷新緩沖區,直接把內容寫入到文件 fp.flush() while True: pass fp.close() """ # ### 文件相關的函數 """fp這個對象本身是迭代器,可以把文件中的內容按照換行一行一行遍歷出來""" """ fp = open("ceshi1.txt",mode="r",encoding="utf-8") #readable() 功能: 判斷文件對象是否可讀 print(fp.readable()) #writable() 功能: 判斷文件對象是否可寫 print(fp.writable()) # 遍歷fp文件對象 for i in fp: print(i) """ # 1.readline() 功能: 讀取一行文件內容 ''' with open("ceshi1.txt",mode="r",encoding="utf-8") as fp: res = fp.readline() print(res) res = fp.readline() print(res) res = fp.readline() print(res) res = fp.readline() print(res) # (1)一次把所有內容都讀取出來 with open("ceshi1.txt",mode="r",encoding="utf-8") as fp: # 先讀取一行 res = fp.readline() # 判斷是不是空,不是空在循環 while res: print(res) # 在讀取一行,放到循環中判斷. res = fp.readline() # (2)注意點:readline(讀取的字符數) print("<====================>") with open("ceshi1.txt",mode="r",encoding="utf-8") as fp: """ 讀取的字符數量 > 實際當前行字符數量的時候 => 按照當前行讀取 讀取的字符數量 < 實際當前行字符數量的時候 => 按照實際數量來讀 """ res = fp.readline(300) print(res) ''' print("<====================>") # 2.readlines() 功能:將文件中的內容按照換行讀取到列表當中 lst_new = [] with open("ceshi1.txt",mode="r+",encoding="utf-8") as fp: lst = fp.readlines() for i in lst: lst_new.append(i.strip()) print(lst_new) # 3.writelines() 功能:將內容是字符串的可迭代性數據寫入文件中 參數:內容為字符串類型的可迭代數據 lst = ['床前明月光', '疑是地上霜', '舉頭望明月', '低頭想家鄉'] with open("ceshi2.txt",mode="w+",encoding="utf-8") as fp: fp.writelines(lst) # ### 實現效果:加入換行效果,并且插入一句話:王文真帥呀 , 插在低頭想家鄉的前面 lst_new = [] # 先把內容插入到原列表中 lst.insert(-1,"王文真帥呀") # 循環原列表,把每一個元素拼接\n , 放到新列表 for i in lst: lst_new.append(i + "\n") print(lst_new) # 把新列表中的每行內容插入到文件中 with open("ceshi2.txt",mode="w+",encoding="utf-8") as fp: fp.writelines(lst_new) # 注意點,內容必須是字符串,不能是整型 """ lst = [1,2,3] with open("ceshi2.txt",mode="w+",encoding="utf-8") as fp: fp.writelines(lst) """ # 4.truncate() 功能: 把要截取的字符串提取出來,然后清空內容將提取的字符串重新寫入文件中 (字節) with open("ceshi2.txt",mode="r+",encoding="utf-8") as fp: fp.truncate(3) """ seek(字節) truncate(字節) read(字符/字節) readline(字符/字節) """
# ### 函數 """ 概念:功能 (包裹一部分代碼 實現某一個功能 達成某一個目的) 特點:可以反復調用,提高代碼的復用性,提高開發效率,便于維護管理 """ # 1.函數基本格式 """ # 定義一個函數 def 函數名(): code1 code # 調用函數 函數名() """ # 定義函數 def func(): print("我是一個函數 ... ") # 調用函數 func() # 2.函數的命名 """ 字母數字下劃線,首字符不能為數字 嚴格區分大小寫,且不能使用關鍵字 函數命名有意義,且不能使用中文哦 駝峰命名法: (1) 大駝峰命名法: 每個單詞的首字符要大寫 (類的命名) mycar => MyCar (2) 小駝峰命名法: 除了第一個單詞首字符小寫外,剩下單詞首字符大寫 (函數或者變量) mycar => myCar _命名法:可以將不同的單詞用_拼接在一起 mycar => my_car symmetric_differencesymmetricDifference SymmetricDifference """ # 函數定義 def cfb_99(): for i in range(1,10): for j in range(1,i+1): print("{:d}*{:d}={:2d} ".format(i,j,i*j) ,end="") print() # 調用函數 for i in range(5): cfb_99()
# ### 函數的參數 """ 參數: 函數運算時需要的值 參數種類: (1)形參: 形式參數,在函數的定義處 (2)實參: 實際參數,在函數的調用處 形參的種類: 1.普通形參(位置形參) 2.默認形參 3普通收集形參 4.命名關鍵字形參 5.關鍵字收集形參 實參的種類: 1.普通實參 2.關鍵字實參 原則: 形參和實參要一一的對應 """ # 1.普通形參(位置形參) # 定義函數 """hang,lie普通形參,在函數定義處""" def small_star(hang,lie): i = 0 while i < hang: j = 0 while j < lie: print("*",end="") j +=1 print() i += 1 # 調用函數 """10,10普通實參,在函數的調用處""" small_star(10,10) small_star(2,3) # 2.默認形參 """hang,lie默認形參,在函數定義處""" """ 如果給予實參,那么使用實參 如果沒有給予實參,那么使用參數身上的默認值 """ def small_star(hang=10,lie=10): i = 0 while i < hang: j = 0 while j < lie: print("*",end="") j +=1 print() i += 1 small_star(4,8) small_star(8) small_star() # 3.普通形參 + 默認形參 """普通形參必須寫在默認形參的前面不能調換位置""" def small_star(hang,lie=10): i = 0 while i < hang: j = 0 while j < lie: print("*",end="") j +=1 print() i += 1 small_star(5,7) # small_star(5) # small_star() error # 4.關鍵字實參 print("<=============>") """ 1.如果都是關鍵字實參,可以任意調整實參的順序 2.普通實參必須寫在關鍵字實參的前面 """ def small_star(hang,a,b,c,lie=10): i = 0 while i < hang: j = 0 while j < lie: print("*",end="") j +=1 print() i += 1 # hang a ... lie 具體指定參數的值叫做關鍵字實參,在函數的調用處; # small_star(hang=3,a=4,b=5,c=6,lie=7) # small_star(b=5,c=6,lie=7,a=4,hang=3) small_star(3,4,b=5,c=6,lie=7) small_star(3,4,b=5,lie=7,c=6) # small_star(b=5,c=6,lie=7,3,4) error
# ### 收集參數 """ (1) 普通收集形參: 專門用來收集那些多余的沒人要的普通實參 收集之后,會把多余實參打包成一個元組 參數頭上1個星星 def func(*args): pass args => arguments """ def func(a,b,c,*args): print(a,b,c) # 1 2 3 print(args) # (4,5,6) func(1,2,3,4,5,6) # 任意個數值得累加和 def mysum(*args): total = 0 for i in args: total += i print(total) mysum(1,2,3,4,4,45,10,100) """ (2) 關鍵字收集形參:專門用來收集那些多余的沒人要的關鍵字實參 收集之后,會把多余關鍵字實參打包成一個字典 參數頭上有2個星星 def func(**kwargs): pass kwargs => keyword arguments """ def func(a,b,c,**kwargs): print(a,b,c) print(kwargs) # {'f': 100, 'e': 200, 'z': 12} func(c=1,a=3,b=10,f=100,e=200,z=12) # 拼接任意個數值變成字符串 """ 班長: 趙萬里 班花: 馬春陪 劃水群眾: 趙沈陽,李虎凌,劉子濤 """ def func(**kwargs): strvar1 = "" strvar2 = "" # 定義職位信息 dic = {"monitor":"班長","classflower":"班花"} print(kwargs) # 共5次循環 for k,v in kwargs.items(): if k in dic: # 將2次循環的結果通過+= 拼接在一起 strvar1 += dic[k] + ":" + v + "\n" else: # 將3次循環的結果通過+= 拼接在一起 strvar2 += v + " , " print(strvar1.strip()) print("劃水群眾:",strvar2.strip(" , ")) """ # print(k,v) k v monitor 趙萬里 classflower 馬春陪 water1 趙沈陽 water2 李虎凌 water3 劉子濤 {'monitor': '趙萬里', 'classflower': '馬春陪', 'water1': '趙沈陽', 'water2': '李虎凌', 'water3': '劉子濤'} """ func(monitor="趙萬里",classflower="馬春陪",water1="趙沈陽",water2="李虎凌",water3="劉子濤")
# ### 命名關鍵字參數 """ (1) def func(a,b,*,c,d) 跟在*號后面的c和d是命名關鍵字參數 (2) def func(*args,e,**kwargs) 加在*args和**kwargs之間的參數都是命名關鍵字參數 命名關鍵字參數 : 在調用函數時,必須使用關鍵字實參的形式來進行調用; """ # 定義方法一 def func(a,b,*,c,d): print(a,b) print(c,d) # 必須指定關鍵字實參,才能對命名關鍵字形參進行賦值 func(1,2,c=3,d=4) # 定義方法二 def func(*args,e,**kwargs): print(args) # (1, 2, 3, 4) print(e) # 3 print(kwargs) # {'a': 1, 'b': 2} func(1,2,3,4,a=1,b=2,e=3) # ### 星號的使用 """ * 和 ** 如果在函數的定義處使用: * 把多余的普通實參打包成元組 ** 把多余的關鍵字實參打包成字典 * 和 ** 如果在函數的調用處使用: * 把元組或者列表進行解包 ** 把字典進行解包 """ def func(a,b,*,c,d): print(a,b) print(c,d) tup = (1,2) # 函數的調用處 *號用法 func(*tup,c=3,d=4) # func(1,2,c=3,d=4) # 函數的調用處 **號用法 dic={"c":3,"d":4} func(1,2,**dic) # func(1,2,c=3,d=4) # 綜合寫法 # 函數的調用處 tup = (1,2) dic={"c":3,"d":4} func(*tup,**dic) # 定義成如下形式,可以收集所有的實參 def func(*args,**kwargs): pass # 總結: 當所有的形參都放在一起的時候,順序原則: """ 普通形參 -> 默認形參 -> 普通收集形參 -> 命名關鍵字形參 -> 關鍵字收集形參 """ def f1(a, b, c=0, *args, **kw): print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw) def f2(a, b, c=0, *, d, **kw): print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw) # 以上兩個函數 打印結果 #(一) f1(1, 2) # a =1 b=2 c=0 args=() kw={} f1(1, 2, c=3) # a=1,b=2,c=3,args=() kw={} f1(1, 2, 3, 'a', 'b') #a=1 b=2 c=3 args=(a,b) kw={} f1(1, 2, 3, 'a', 'b', x=99) # a=1 b=2 c=3 args=(a,b) kw={x:99} f2(1, 2, d=99, ext=None)#a=1 b=2 c=0 d=99 kw={ext:None} #(二) args = (1, 2, 3, 4) kw = {'d': 99, 'x': '#'} # f1(1,2,3,4,d=99,x=#) f1(*args, **kw) # a=1 b=2 c=3 args=(4,) kw={d:99,x:#} #(三) myargs = (1, 2, 3) mykw = {'d': 88, 'x': '#'} # f2(1,2,3,d=88,x=#) f2(*myargs, **mykw) # a=1,b=2,c=3 d=88 kw={x:#} #(四) def f1(a, b, c=0, *args,d,**kw): print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw) print(d) f1(1,2,3, 'a', 'b',d=67, x=99,y=77) # a=1 b=2 c=3 args=(a,b) kw={x:99,y:77} # d=67
出現網絡延遲堵塞的時候,自己用flush刷一下 strvar = alex Nb # 注意:這里雖然說把首字母大寫了,但是會把后面的大寫字母變成小寫 print(srvar.capitalize) #Alex nb
#1.有如下文件,a1.txt,里面的內容為: 鍵盤敲爛, 月薪過萬. 鍵盤落灰, 狗屎一堆. 分別完成以下的功能: a:將原文件全部讀出來并打印。 b:在原文件后面追加一行內容:信不信由你,反正我信了。 c:將原文件全部讀出來,并在后面添加一行內容:信不信由你,反正我信了。 d:將原文件全部清空,換成下面的內容: 每天堅持一點, 每天努力一點, 每天多思考一點, 慢慢你會發現, 你的進步越來越大。 e:將原文件內容全部讀取出來, 并在'鍵盤落灰'這一行的前面加一行,'年薪百萬' 然后將更改之后的新內容,寫入到一個新文件:a1.txt。 #2.有如下文件,t1.txt,里面的內容為: 葫蘆娃,葫蘆娃, 一根藤上七個瓜 風吹雨打,都不怕, 啦啦啦啦。 上面的內容你肯定是心里默唱出來的,對不對 分別完成下面的功能: a:以r+的模式打開原文件,判斷原文件是否可讀,是否可寫。 b:以r的模式打開原文件,利用for循環遍歷文件對象。 c:以r的模式打開原文件,以readlines()方法讀取出來,并循環遍歷 d:以r模式讀取‘葫蘆娃,'前四個字符。 e:以r模式讀取第一行內容,并去除此行前后的空格,制表符,換行符。 f:以r模式打開文件,從‘風吹雨打.....'開始讀取,一直讀到最后。 g:以a+模式打開文件,先追加一行:‘老男孩教育'然后在全部讀取出來。 h:截取原文件,截取內容:‘葫蘆娃,葫蘆娃,' #3.文件a.txt內容:每一行內容分別為商品名字,價錢,個數。 apple 10 3 tesla 100000 1 mac 3000 2 lenovo 30000 3 chicken 10 3 變成如下數據格式,并計算出總價格 [ {'name':'apple','price':10,'amount':3}, {'name':'tesla','price':1000000,'amount':1} ] #4.定義函數:打印用戶傳入的容器類型數據長度 #5.定義函數:參數為容器類型數據,打印所有奇數位索引對應的元素 #6.定義函數:,接收一個參數(可迭代性數據),用_讓元素相連成字符串,打印出來 #7.輸入字符串 "k:1|k1:2|k2:3|k3:4" 處理成字典 {'k':1,'k1':2....} 打印出來 #8.輸入列表li= [11,22,33,44,55,66,77,88,99,90] # 將大于 66 的值保存至字典的k1鍵中, # 將小于 66 的值保存至字典的k2鍵中。 # 打印字典 {'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}
# a with open("a1.txt",mode="r",encoding="utf-8") as fp: print(fp.read()) # b with open("a1.txt",mode="a+",encoding="utf-8") as fp: fp.write("\n\t信不信由你,反正我信了") # c with open("a1.txt",mode="a+",encoding="utf-8") as fp: print(fp.read()) fp.write("\n\t信不信由你,反正我信了") # d strvar =""" 每天堅持一點, 每天努力一點, 每天多思考一點, 慢慢你會發現, 你的進步越來越大。 """ with open("a1.txt",mode="w+",encoding="utf-8") as fp: fp.write(strvar) # e with open("a2.txt",mode="r+",encoding="utf-8") as fp: lst = fp.readlines() print(lst) # ['\t鍵盤敲爛,\n', '\t月薪過萬.\n', '\t鍵盤落灰,\n', '\t狗屎一堆.\n'] lst.insert(-2,"\t年薪百萬\n") with open("a3.txt",mode="w+",encoding="utf-8") as fp: fp.writelines(lst) # ##################################### # a with open("a4.txt",mode="r+",encoding="utf-8") as fp: print(fp.readable()) print(fp.writable()) # b with open("a4.txt",mode="r",encoding="utf-8") as fp: for i in fp: print(i) # c with open("a4.txt",mode="r",encoding="utf-8") as fp: lst = fp.readlines() for i in lst: print(i) # d with open("a4.txt",mode="r",encoding="utf-8") as fp: print(fp.read(4)) # e with open("a4.txt",mode="r",encoding="utf-8") as fp: print(fp.readline().strip()) # f print("<====>") with open("a4.txt",mode="r",encoding="utf-8") as fp: lst = fp.readlines() for i in lst[-2:]: print(i) # g with open("a4.txt",mode="a+",encoding="utf-8") as fp: fp.write("\n老男孩教育") fp.seek(0) print(fp.read()) # h with open("a4.txt",mode="r+",encoding="utf-8") as fp: fp.truncate(24) # ##################################### """ [ '\tapple 10 3\n', '\ttesla 100000 1\n', '\tmac 3000 2\n', '\tlenovo 30000 3\n', '\tchicken 10 3' ] """ print("><======================?") lst_new = [] total = 0 with open("a5.txt",mode="r+",encoding="utf-8") as fp: lst = fp.readlines() # print(lst) for i in lst: # 定義空字典 dic = {} # 取出字符串兩邊的空白 lst = i.strip().split() print(lst) # 拼裝字典 dic["name"] = lst[0] dic["price"] = int(lst[1]) dic["amount"] = int(lst[2]) # 累計當前商品的價格總數 res = dic["price"] * dic["amount"] # 累計所有的商品價格總數 total += res # 把當前商品的信息字典追加到列表中 lst_new.append(dic) print(total) print(lst_new) """ [ {'name': 'apple', 'price': 10, 'amount': 3}, {'name': 'tesla', 'price': 100000, 'amount': 1}, {'name': 'mac', 'price': 3000, 'amount': 2}, {'name': 'lenovo', 'price': 30000, 'amount': 3}, {'name': 'chicken', 'price': 10, 'amount': 3} ] """ # 4. def func(container): return len(container) res = func((1,2,3,4)) print(res) # 5. def func(container): # 方法一 # for i in range(1,len(container),2): # print(container[i]) # 方法二 for i in container[1::2]: print(i) func([11,22,33,44,55,666]) # 6. def func(container): """ # 方法一 strvar = "" for i in container: strvar += str(i) + "_" return strvar.rstrip("_") """ # 方法二 lst_new = [] for i in container: lst_new.append(str(i)) return "_".join(lst_new) container = [1,2,3,4,5] res = func(container) print(res) # 7 strvar = "k:1|k1:2|k2:3|k3:4" def func(strvar): ''' # 方法一 lst = strvar.split("|") print(lst) # ['k:1', 'k1:2', 'k2:3', 'k3:4'] dic = {} for i in lst: k,v = i.split(":") dic[k] = v """ ['k', '1'] ['k1', '2'] ['k2', '3'] ['k3', '4'] """ return dic ''' # 方法二 lst = strvar.split("|") lst_new = [] for i in lst: lst_new.append(i.split(":")) return dict(lst_new) print(func(strvar)) # 8 li= [11,22,33,44,55,66,77,88,99,90] lst1 = [] lst2 = [] dic = {"k1":None,"k2":None} def func(li): for i in li: if i > 66: lst1.append(i) elif i < 66: lst2.append(i) dic["k1"] = lst1 dic["k2"] = lst2 return dic res = func(li) print(res)
到此,相信大家對“Python全棧文件函數和函數的參數有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。