中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python全棧文件函數和函數的參數有哪些

發布時間:2021-12-02 18:00:09 來源:億速云 閱讀:93 作者:iii 欄目:開發技術

本篇內容主要講解“Python全棧文件函數和函數的參數有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python全棧文件函數和函數的參數有哪些”吧!

    1. 文件相關函數

    # ### 刷新緩沖區
    """
    # 刷新緩沖區 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(字符/字節)
    """

    2. 函數_函數的參數

    2.1 函數

    # ### 函數
    """
    概念:功能 (包裹一部分代碼 實現某一個功能 達成某一個目的)
    特點:可以反復調用,提高代碼的復用性,提高開發效率,便于維護管理
    """ 
    # 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()

    2.2 函數的參數

    # ### 函數的參數
    """
    參數: 函數運算時需要的值
    參數種類:
    	(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

    3. 收集參數

    # ### 收集參數
    """
    (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="劉子濤")

    4. 命名關鍵字_總結

    # ### 命名關鍵字參數
    """
    (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

    5. 小練習

    練習問題:

    #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全棧文件函數和函數的參數有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    布拖县| 香格里拉县| 道真| 岳阳市| 曲松县| 桐城市| 额尔古纳市| 凤冈县| 盐源县| 乌苏市| 措美县| 宜宾市| 桃源县| 鄂尔多斯市| 凉城县| 兴和县| 沅江市| 修文县| 阿克苏市| 佛坪县| 竹溪县| 西宁市| 汤阴县| 克拉玛依市| 开平市| 聂拉木县| 桂东县| 上林县| 清河县| 安阳县| 丹巴县| 凤山县| 米泉市| 杂多县| 嵩明县| 太保市| 玛曲县| 东兰县| 上高县| 宁津县| 高雄县|