Python函式,媽媽再也不會擔心我不會Python了(十一)
函式
- 在開發過程中,某部分程式碼被使用多次,我們就需要把這部分程式碼封裝成一個小模組,這個模組就是函式。
- 函式用於簡化程式結構,增加閱讀行,實現程式碼複用,
- 函式分為宣告函式和呼叫函式。
def print_hello():#宣告函式 print("你好世界")#函式內容 print_hello()#呼叫函式
上述程式碼執行結果:

上述程式碼執行結果
函式引數
位置引數
- 形參有幾個,實參必須傳幾個
- 實參和形參一一對應
def calcu(x, y):#x,y叫形參 print("x的值是%d"%x) print("y的值是%d"%y) z = x + y print(z) calcu(1,2)#1,2叫實參
上述程式碼執行結果:

上述程式碼執行結果
關鍵字引數
- 可以實現傳的引數和定義的形參順序不一樣
- 位置引數必須在關鍵字引數的前面,關鍵字引數之間不存在先後順序
def calcu(x,y):#x,y叫形參 print("x的值是%d"%x) print("y的值是%d"%y) z = x + y print(z) calcu(1,2)#1,2叫實參 calcu(x=1,y=2) calcu(y=2,x=1) calcu(1,y=2) #calcu(x=1,2)#不正確 #calcu(y=2,1)#不正確 #calcu(2,x=1)#不正確
上述程式碼執行結果:

上述程式碼執行結果
預設引數
- 呼叫函式時,如果沒有傳引數,就會使用預設引數。如果傳了引數,就會使用傳的引數。
- 預設引數一定要放在位置引數後面。切記
def introduce(age,name="老王"): print("我叫%s,我%d歲"%(name,age)) introduce(23)#不傳name,會預設使用老王 introduce(23,"小明")#傳name,會使用傳的值 ''' 下面定義函式是錯誤的 預設引數必須放在位置引數後面~切記! def introduce(name="老王",age): print("我叫%s,我%d歲"%(name,age)) '''
上述程式碼執行結果:

上述程式碼執行結果
可變引數
- 需要函式能處理多個引數的時候,這些引數就叫可變引數。
def introduce(age,name,*args):#*args表示可變引數,或者叫不定長引數 print("我叫%s,我%d歲"%(name,age)) print(args)#可變引數,是一個元組 for arg in args: print(arg)#遍歷可變引數 introduce(23,"小明","男","小學課本上的人物")
上述程式碼執行結果:

上述程式碼執行結果
- 可變引數之字典型別的引數
def introduce(age,name,*args,**kwargs): ''' *args表示可變引數,或者叫不定長引數 **kwargs表示字典型別的可變引數。 ''' print("我叫%s,我%d歲"%(name,age)) print(args)#可變引數,是一個元組 print(kwargs)#可變引數,是一個字典 for arg in args: print(arg)#遍歷可變引數 for k,v in kwargs.items():#遍歷字典 print(k) print(v) introduce(23,"小明","男","小學課本上的人物",address="北京市",phone="123456")
上述程式碼執行結果:

上述程式碼執行結果:
- 拆包
def introduce(age,name,*args,**kwargs): ''' *args表示可變引數,或者叫不定長引數 **kwargs表示字典型別的可變引數。 ''' print("我叫%s,我%d歲"%(name,age)) print(args)#可變引數,是一個元組 print(kwargs)#可變引數,是一個字典 for arg in args: print(arg)#遍歷可變引數 for k,v in kwargs.items():#遍歷字典 print(k) print(v) #introduce(23,"小明","男","小學課本上的人物",address="北京市",phone="123456") desc = ("男","小學課本上的人物") other = {"address":"北京市","phone":"123456"} introduce(23,"小明",*desc,**other)#這種方式叫拆包
上述程式碼執行結果:

上述程式碼執行結果
組合引數
def introduce(name,age,*args,sex="男",**kwargs): print(name) print(age) print(sex) print(args) print(kwargs) introduce("小明",12,"課本上的人物","女",phone="123") #introduce("小明",12,"課本上的人物",phone="123") #introduce("小明",12,"課本上的人物") #introduce("小明",12)
上述程式碼執行結果:

上述程式碼執行結果

歡迎關注