iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0
Python

30天Python學習之旅系列 第 7

Day 7 : 函式 ( 進階 )

  • 分享至 

  • xImage
  •  

今天的學習重點是深入探討 Python 函式的進階概念。在前幾天的學習中,學習了如何定義和調用簡單的函式,但函式的功能遠不止這些。在進階函式中,能利用參數默認值、* args、* *kwargs 等特性,讓函式更具靈活性和強大性。

1. 參數的默認值

當定義函式時,可以給參數設置默認值。如果在調用函式時未傳入該參數,則會自動使用默認值。
範例:
https://ithelp.ithome.com.tw/upload/images/20240920/20169078KoNFe4h2Tu.png
當調用 greet() 時,它會輸出 "你好,Hank!"。這讓函式更加靈活,因為即使用戶未提供所有參數,函式依然可以正常執行。

2. 不定長度的參數 ( args )

有時我們不知道一個函式會接受多少個參數,這時候可以使用 * args 來傳遞任意數量的參數。* args 會將所有傳入的參數打包成一個元組。
例如:
https://ithelp.ithome.com.tw/upload/images/20240920/20169078vsjf9cmWU8.png
調用 add_numbers(1, 2, 3) 會返回 6。這讓我們可以處理任意數量的參數,提供了很大的彈性。

3. 關鍵字參數 ( kwargs )

類似於 * args,* *kwargs 允許我們傳遞任意數量的關鍵字參數(以字典的形式)。這樣可以使函式更加靈活。
範例:

https://ithelp.ithome.com.tw/upload/images/20240920/20169078K463P1WcVf.png
調用 print_info(name="George", age=65) 會輸出:
name: George
age: 65

4. 匿名函式 ( Lambda 函式 )

Lambda 函式是一種小型的匿名函式,通常用於簡單的運算。它沒有函式名,並且只能有一個表達式。
語法為:
https://ithelp.ithome.com.tw/upload/images/20240920/20169078Yr2V7ZMKQd.png
範例:
https://ithelp.ithome.com.tw/upload/images/20240920/20169078Klq9nYo925.png
Lambda 常用於需要簡單函式的場景,如 map()、filter() 等高階函式。

5. 函式的嵌套與閉包

Python 支援函式嵌套,這表示可以在一個函式內定義另一個函式。內部函式可以訪問外部函式的變量,這就產生了閉包(closure)。閉包允許內部函式「記住」外部函式的狀態,即使外部函式已經結束。
範例:
https://ithelp.ithome.com.tw/upload/images/20240920/20169078dX5uOexJzX.png

今天學習了 Python 中函式的進階特性,使我對函式有了更深入的理解。透過設定參數默認值、使用不定長度參數 * args 和 * *kwargs、以及匿名函式 ( Lambda ) 等技術,可以讓函式更加靈活且強大。此外,嵌套函式與閉包的概念能創建具有記憶外部狀態的函式,這是進階 Python 開發中很有用的技巧。


上一篇
Day 6 : 函式
下一篇
Day 8 : 基本數據結構( 列表、元組與集合)
系列文
30天Python學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言