亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
634
2022-05-30
2.3.5 函數
我們介紹了Python中的一些基本控制流結構,并且可以開始將它們組合成邏輯塊來執行特定任務。特別地,我們可以構造出在必要時重復執行的代碼片段,其結果取決于所提供的輸入參數。換句話說,我們談論的話題是函數。
Python中的函數具有以下語法:
請注意,函數定義以保留字def開頭,函數內部的代碼用適當的縮進表示。
該函數的輸入參數是變量arg1,arg2,...,argn,你可以為其中一些參數定義默認值。定義具有默認值的參數必須放在參數列表的最后。
函數定義中的第二行為文檔字符串,其目的是說明該函數的執行步驟和目的。最后,請注意函數不要求必須有返回值。
讓我們定義一個函數來計算由邊a和b所組成的矩形面積:
請注意,參數b的默認值為1。如果我們調用此函數只傳入一個參數,該函數將知道如何處理計算并在需要時使用默認值。
定義函數后就可以通過函數名直接調用;就像使用其他Python內置函數一樣。
在上面代碼的第一行中,我們使用兩個參數調用rect_area函數,這樣就將值20賦值給參數a,并用2覆蓋b的默認值。正如預期的那樣,計算的面積是40。讓我們嘗試只提供一個值來調用函數:
這里我們只將值42.4傳遞給函數。在這種情況下,值將分配給參數a,并在計算中使用默認值b = 1。
我們可以在程序中包含控制流結構,以使它們更有用、更靈活。舉個例子,我們實現一個簡單的函數來計算數字的階乘:
其中,“* =”和“- =”表示使用左側值重復操作。
當我們傳入一個小于或等于函數期望值的數字時,它返回值1,當數字大于1時,使用while循環計算階乘。讓我們使用這個函數:
更方便的方法可能是即時定義一個簡單的函數,而不必使用完整的def結構。在這種情況下,可以使用lambda函數:
與之前一樣,arg1,arg2……是輸入參數,而statement是要根據輸入參數執行的代碼。
例如,如果我們需要計算數字列表的每個元素的立方,可以嘗試以下代碼:
在這種情況下,對象g是一個lambda函數,可以像調用Python中的其他函數一樣對其加以調用。
到目前為止,沒有什么值得奇怪的地方:我們已經用數字1、3和6初始化了一個列表,然后定義了一個lambda函數來計算參數n的立方。我們現在可以應用此功能,例如:
lambda函數看起來可能非常簡單,但正如上面所示,它雖然簡單,但是非常實用。可以在PySpark的源代碼中看到它的身影。PySpark是用于Spark的Python API,它是一種開源集群計算框架。
python 機器學習 Python
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。