今天我們來學習函式。
產生的原由,若沒有函式,會顯得重複**多,可讀性差,也會造成重複造輪子的情景。
故產生了函式,用來封裝好乙個功能,它是以功能為導向的。
例如自己定義乙個函式:
def my_len():
def python中的關鍵字,用來宣告和定義乙個函式;
my_len 函式名,命名規範與變數命名的一樣;
def與函式名中間要隔乙個空格;
函式名+」()」+」:」,括號加冒號,括號裡填的要你想要設定函式呼叫者傳遞的引數;
緊接著就是縮排的函式體(主要功能實現部分);
例,以下自定義的計算可迭代物件元素長度的函式:
my_len():
defmy_len
(l):
count = 0
for i in l:
count += 1
return count
li = [1, 2, 3, 4, 5]
print(my_len(li))
函式的執行,函式名+」()」就會去呼叫執行。
函式的返回值,定義函式時,不要在函式中寫print語句(除錯的時候可以這麼做),因為函式是以功能為導向的,需要返回輸出的值時使用return將值返回給函式的呼叫者就可以了。
在函式當中遇到return時就會結束執行函式(結合if語句用就會有像迴圈中break的感覺)。
函式返回的值有以下幾種:
1)無return語句,返回none;
2)使用了return,返回none;
3)return指定返回乙個值,該值是什麼,就直接返回給函式呼叫者;
4)return返回多個值,將多個值放置到乙個元組中,返回給函式呼叫者。
例,在以下自定義乙個用於比較兩個整數大小的函式體中,就使用了三元運算:
# 普通的比較兩數大小,誰的值大返回誰的函式:
defmax_min
(a, b):
if a > b:
return a
else:
return b
print(max_min(290,355))
# 使用了三元運算優化**:
defmax_min
(a,b):
return a if a > b else b
print(max_min(45, 56))
retrun a if a > b else b 的意思是判斷如果a > b 就返回a,否則返回b。
分兩大方面:實參和形參。
上例中的max_min(45,56)這裡的45和56就屬於實際傳遞過去的引數,所以就是實參;
而def中定義函式時出現的max_min(a,b)中的a,b就屬於形式上的引數,用於對應參考的,就是形參。
實參角度:
1、位置傳參,與形參的位置與個數一一對應,按順序,個數不能少也不能多;
2、關鍵字傳參,同樣與形參一一對應,但可以不按順序,因為有關鍵字,例如上例在實參中直接填寫b=56,a=45這樣。
3、混合傳參,就是位置引數和關鍵字引數混合使用,但要注意的是所有的關鍵字引數都要放在最後面,也就是位置引數要在關鍵字引數之前。
形參角度:
1、位置傳參,按順序和個數與實參形成一一對應關係;
2、預設引數,重要!設定好預設引數後,如果實參中有傳遞引數過來,就按照實參的引數,如果沒有,就直接按照預設的預設的值。省事又靈活。預設引數永遠要在位置引數的後面。
3、動態引數,今天暫時不去了解。
end
2018-3-28
鐵樂學Python day10 函式2
今天書接昨天的函式繼續去學習了解 昨天說到函式的動態引數。args 動態引數,萬能引數 args接受的就是實參對應的所有剩餘的位置引數,並將其放在元組 中。deffunc x,y,z,args print x,y,z print args func 1,2,a b c 34 12 a b c 34 ...
南京工業大學樂學python答案 樂學Python
q 為什麼越來越多的學校和專業已經或者計畫開設python程式設計相關課程?a 相較於其它大部分的通用型程式語言,python的基礎語法相對簡單,且在很多熱門的領域都有著功能強大而全面的第三方庫,使得那些即便不是計算機專業出身的人員也能輕鬆的利用程式設計去分析解決相對複雜的專業問題。甚至於在有些地方...
南京工業大學樂學python答案 樂學Python
q 為什麼越來越多的學校和專業已經或者計畫開設python程式設計相關課程?a 相較於其它大部分的通用型程式語言,python的基礎語法相對簡單,且在很多熱門的領域都有著功能強大而全面的第三方庫,使得那些即便不是計算機專業出身的人員也能輕鬆的利用程式設計去分析解決相對複雜的專業問題。甚至於在有些地方...