學習視頻:https://www.bilibili.com/video/BV1SE411N7Hi?p=53 以下內容僅供個人學習使用,侵刪 ''' 函數的定義 作用 1.減少重複代碼 2.提高重用性 函數執行完,函數體中開闢的空間自動自動銷燬 返回的內容,還可以繼續使用;顯示的內容就不能繼續使用了 ''' def len(): count=0 for i in s: count+=1 print(count) s="alex" len() ''' 1.用函數,實現一個三次登錄功能(return能夠終止函數) 2.在info文件追蹤存儲賬號和密碼,例如"alex:alex123" 3.獲取用戶輸入的賬號和密碼進行判斷,如果登錄成功,返回登錄成功,否則重新輸入,三次後終止函數''' def login(): with open("day7_login.txt","r",encoding="utf-8")as f:#打開文件只需要一次 for i in range(3):#滿足三次登錄 f.seek(0) username = input("username:") password = input("password:") for i in f:#獲取文件中的所有內容 a,b=i.strip().split(":")#防止最後的\n換行符,導致賬號密碼匹配不上 if username==a and password==b: return "登錄成功" else: print("賬號密碼錯誤,請重新輸入") ret=login() if ret:# print(ret) #return不寫的時候返回none # return能夠返回python中所有的對象,python中一切皆爲對象 # return能夠返回多個內容,以元組形式顯示\ #return 下方代碼不會被執行 #函數的應用:用戶名,密碼的加密保存 user=input("user:") pwd=input("pwd:") def add_pwd(): ''' 加密 登錄時要用,保存時要用 :return: ''' return pwd+123#給密碼加工,加工後是讀不懂的 def insert_pwd(): ret=add_pwd() print(user,ret) def check(): pwd=add_pwd() insert_pwd()
''' 參數: 形參:在函數定義 位置參數:必須一一對應 def func(a,b) 默認參數 def func(a=1,b=2) 混合參數:位置和關鍵字一起使用 def func(a,b=1) 實參:在函數調用 位置參數 func(10,20) 關鍵字參數 func(a=10,b=20) 混合參數 func(10,b=20) 參數優先級: 位置參數>默認(關鍵字)> ''' def car(app,addr,car_fu,car_info,car_plate):#形參 print("掏出手機") print("打開",app) print("設置",addr) print("立即呼叫") return f"{car_fu},{car_info},{car_plate}" ret=car("滴滴","北京","劉師傅","天子駕1","浙B400") print("等待",ret) # 三元運算 # 條件成立的結果 條件判斷 條件不成立的結果 # 1 if 3<2 2 # print(1 if 3<2 else 2) # 等同於 # if 3<2: # print(1) # else: # print(2) def func(a,b):#func(a,b=10)b是默認參數 return a if a>b else b ret=func(10,20)#ret=func(10,b=20)在實參的角度,這個是混合參數 #---------------------- # def func(a,b=10): # return a if a > b else b # ret = func(10, 20)#當b不給參數時,默認用10,給了參數20,就把20給b # ------------------------- print(ret) # open(file="info",mode="r",encoding="utf-8") 實參:關鍵字 # open("info","r",encoding="utf-8") 實參:混合
動態參數
def func(*args):#在形參的位置的*是聚合元組 打包,可以接受任意長度的參數 #等同於def func(a,b,c,d,e,f,……) 更方便 print(args) func(1,4,5,6,7,8,645,2,34,6,89,3) ''' *args: 接收多餘的位置參數 **kwargs 接受多餘的關鍵字參數 args和kwargs是程序員之間約定俗成的,可以更改名字,但是不建議更改 ''' def func(a,b,c,d,**kwargs): print(a,b,c,d,kwargs) func(a=1,b=2,c=3,d=4,e=5,f=6)#得到 1 2 3 4 {'e': 5, 'f': 6} def func (*args,**kwargs):#萬能傳參,形參部分是聚合 print(args,kwargs)#函數體中是打散 func(12,4,56,7,87,5454,a=12,b=34,g=345) #得到(12, 4, 56, 7, 87, 5454) {'a': 12, 'b': 34, 'g': 345} func (12,4,5,7,67,6,79898,56,57) #得到(12, 4, 5, 7, 67, 6, 79898, 56, 57) {} #參數混合 print("----參數混合-----") def func(a,b,c=1): print(a,b,c) func(12,13)#12,13,1 # def func(*args,a,b,c=1): # print(a,b,c) #func(12,13)#報錯,遇到*args,全部接收,後面a,b沒有 def func(a,b,c=1,*args): print(a,b,c,args) func(12,13)#12 13 1 () func(12,13,14)#12 13 14 () def func(a,b,*args,c=1,): print(a,b,args,c) func(12,13,14)#12 13 (14,) 1 #func(12,13,14,b=15)#報錯,同一個變量名一次只能賦值一次,同時把13,15給了b #func(12,13,14,d=15)#報錯沒有d關鍵字 #a,b位置參數,args動態位置參數,c默認參數,kwargs動態關鍵字參數 def func(a,b,*args,c=1,**kwargs):#面試中會有,但是真正開發中不這麼用 print(a,b,c,args,kwargs) func(12,13,14,d=15,e=20)#12 13 1 (14,) {'d': 15, 'e': 20} print("-------擴展--------") def func (*args,**kwargs):#萬能傳參,形參部分是聚合 print(args,*args,kwargs)#函數體中args是打散 func (12,4,5,7,67,6,79898,56,57) #得到 (12, 4, 5, 7, 67, 6, 79898, 56, 57) 12 4 5 7 67 6 79898 56 57 {} lst=[1,21,32,5,647,78,7,45,547,68,] dic={"key":1} func(*lst,**dic)#實參部分可以打散