函式的初識
- why:以功能(完成一件事:輸入密碼、登錄、注冊、獲取長度等)為導向, 一個函式只能封裝一個主要功能,具有減少重復代碼,可讀性高等優點,(可類比len函式)
- when:函式可以隨時呼叫
#假設python沒有len函式,請你用代碼算出給定任意字串、串列等的長度,務必請自己撰寫一下,參考如下:
s1 = 'asdfghjkl'
len = 0
for i in s1: #當要遍歷一個可迭代物件時經常用for
len += 1
print(len) #9
len = 0
l1 = [1,2,3,4,5,6,7]
for i in l1:
len += 1
print(len) #7
? 這樣寫,重復代碼太多且代碼的可讀性差
-
對上放代碼進行改進,定義一個函式:
def My_Len(s): len = 0 for i in s: len += 1 print(len) #測字串/串列的長度: s1 = 'asdfghjkl' My_Len(s1) #9 l1 = [1,2,3,4,5,6,7] My_Len(l1) #7 -
how:函式以def定義后再加一個空格再加上函式名(取的函式名最好具有描述性)再加上一個英文冒號,示例如下:
def HanShu(): #def 函式名(): pass # 函式主題 return 回傳值 # return 回傳值,可有可無- 函式名與變數設定相同,一般以駝峰命名法(HanShu、hanShu、Hanshu),函式名后一定要加()和:
- 函式體中最好不要寫print(),函式體向前縮進一個Tab
- 當撰寫的代碼中包含 函式名() 后,函式會被執行,
- 函式的回傳值return: 在函式中遇到return直接結束函式的呼叫;并給函式外部回傳一個回傳值,將資料回傳給函式的執行者、呼叫者,回傳值可被print列印出,若無回傳值,print會列印出None,
- return可回傳多個值,會以元祖的形式將多個元素回傳給函式的執行者,(元祖可以進行拆包)
-
函式的傳參:讓函式封裝的這個功能變為動態可傳入的(盤活),引數分為實參和形參
-
實參:函式的執行時傳入的引數
-
形參:函式的定義時接受的引數
def func(a): #a:形參,定義函式時定義的引數,若定義了形參,則呼叫函式時必須向函式傳入 實參,(特殊情況后文再說) a += 1 return a print(func(6)) #呼叫函式 6:傳入的實參, >>>7 -
實參角度:
-
位置引數:按照實參位置引數與形參的對應順序(從左到右)依次傳入,
def func(a,b): c = a / b return c print(func(10,2)) >>>5.0 #只要運算子中有除法,得出來的答案都是浮點數 -
關鍵字引數:當形參過多時,需要將實參傳入的順序記住,容易出錯,關鍵字引數無需順序
def func(name,sex,hight,weight): c = '我叫{},性別{},體重是{},身高{}'.formt(name,sex,weight,hight) return r print(func('山就在那兒','男','60Kg','1.7m')) #python默認從左至右將實參傳給形參,當形參過多時容易出錯,但可以使用關鍵字引數傳入, >>>我叫山就在那兒,性別男,體重是1.7m,身高60Kg print(func(name='山就在那兒',sex='男',weight='60Kg',hight='1.7m')) >>>我叫山就在那兒,性別男,體重是60Kg,身高1.7m -
混合傳參:位置引數一定要放在關鍵字引數前方,關鍵字引數一定要放在位置引數后面,否則會報錯,
def func(name,sex,hight,weight): c = '我叫{},性別{},體重是{},身高{}'.formt(name,sex,weight,hight) return r print(func('山就在那兒','男',weight='60Kg',hight='1.7m')) >>>我叫山就在那兒,性別男,體重是60Kg,身高1.7m -
知識點補充:三元運算子:簡單的if-else陳述句可以簡化為三元運算子,
-
#判斷a,b的大小 a = 10 b = 11 c = a if a>b else b print(c) 11 #c = a if a>b else b 等同于: if a>b: c = a else: c = b#定義一個函式:能為函式傳入兩個引數,列印出兩個引數中最大的一個引數 def ComPlie(a,b): c = a if a>b else b return c print(ComPlie(11,10)) >>>11 #編碼進階: def ComPlie(a,b): return a if a>b else b #return的為c,因此可以將兩個c合并,并省去引數c print(ComPlie(11,10))-
形參角度:
-
位置引數:形參位置引數必須與實參一一對應,與實參位置引數一樣,只是觀察角度不同,不再多敘述,
-
默認引數(默認值引數):若有位置引數,默認引數一定要在位置引數后面,默認引數可以被更改,可參考open函式的默認引數,
-
實參與形參必須一一對應,不可一對多或者多對一,否則會報錯,建議讀者自測一遍,
def func(a,b,c=10): d = (a + b)/c return d print(func(9,1)) >>>1 print(func(5,3,c=2)) >>>4 print(func(5,3,2)) #實參傳入默認引數時關鍵字可以不寫,但不推薦此方法, >>>4 -
還有兩種形參型別,請看明天的python基礎學習day10
-
-
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/170380.html
標籤:Python
上一篇:python(re 模塊)
下一篇:python初學者-代碼規范
