挑戰14天學會Python,第7天學習筆記!加油!
一、概述
函數(Function)是 Python 中用于封裝可重用代碼塊的基本結構。通過定義函數,我們可以將復雜邏輯拆分為更小、更易管理的單元,并通過參數傳遞不同的輸入值,從而提高代碼的可讀性、可維護性和復用性。
二、函數定義
(一)基本語法
def function_name(parameters):"""可選的文檔字符串"""# 函數體return result # 可選
(二)示例
def greet(name):"""向用戶打招呼"""return f"Hello, {name}!"
(三)調用函數
message = greet("Alice")
print(message) # 輸出:Hello, Alice!
三、位置參數調用
(一)定義
位置參數(Positional Arguments)是最常見的參數形式。調用時,實參的順序必須與形參的順序嚴格一致。
(二)示例
def add(a, b):return a + bresult = add(3, 5) # 3 對應 a,5 對應 b
print(result) # 輸出:8
(三)注意事項
- 參數數量必須匹配,否則會引發
TypeError
。 - 順序錯誤會導致邏輯錯誤,但不會報錯。
四、關鍵字參數調用
(一)定義
關鍵字參數(Keyword Arguments)通過參數名顯式指定實參,調用順序可與形參順序不同。
(二)示例
def describe_pet(animal, name):return f"I have a {animal} named {name}."# 使用關鍵字參數
info = describe_pet(name="Whiskers", animal="cat")
print(info) # 輸出:I have a cat named Whiskers.
(三)混合使用
# 先位置后關鍵字
info = describe_pet("dog", name="Buddy")
print(info) # 輸出:I have a dog named Buddy.
(四)注意事項
- 關鍵字參數必須在位置參數之后。
- 提高代碼可讀性,尤其適合參數較多的函數。
五、函數默認值
(一)定義
默認值參數(Default Arguments)允許在定義時為形參指定默認值。調用時可省略該參數,函數將使用默認值。
(二)示例
def greet(name, message="Hello"):return f"{message}, {name}!"# 使用默認值
print(greet("Alice")) # 輸出:Hello, Alice!# 覆蓋默認值
print(greet("Bob", "Hi")) # 輸出:Hi, Bob!
(三)注意事項
-
默認值必須是不可變對象(如數字、字符串、元組)。 ? 錯誤示例: ? 正確做法:
def append_item(item, lst=[]): # 危險!默認值共享同一列表lst.append(item)return lst
def append_item(item, lst=None):if lst is None:lst = []lst.append(item)return lst
-
默認值僅在函數定義時計算一次,后續調用共享同一對象。
六、綜合應用案例
(一)用戶信息處理
def create_user(username, age=18, city="Unknown"):return {"username": username,"age": age,"city": city}# 位置參數 + 默認值
user1 = create_user("Alice")
print(user1) # {'username': 'Alice', 'age': 18, 'city': 'Unknown'}# 關鍵字參數覆蓋默認值
user2 = create_user("Bob", age=30, city="New York")
print(user2) # {'username': 'Bob', 'age': 30, 'city': 'New York'}
(二)數學運算函數
def calculate(a, b, operation="add"):if operation == "add":return a + belif operation == "subtract":return a - belse:return "Invalid operation"# 僅位置參數
print(calculate(5, 3)) # 8# 關鍵字參數指定運算
print(calculate(10, 4, operation="subtract")) # 6
七、注意事項與最佳實踐
- 參數順序:位置參數 → 關鍵字參數 → 默認值參數。
- 可讀性:關鍵字參數和默認值能顯著提升代碼可讀性。
- 避免可變默認值:始終使用
None
作為可變對象的默認值占位符。 - 文檔字符串:為函數添加文檔字符串(docstring)說明參數用途。
八、總結
通過本筆記,我們系統學習了 Python 函數的基本定義、位置參數、關鍵字參數以及默認值的使用方法。掌握這些核心概念后,你將能夠:
- 編寫更清晰、可維護的函數。
- 靈活處理不同調用場景。
- 避免常見陷阱(如可變默認值)。
后續將繼續探討 Python 函數的高級特性,如可變參數、匿名函數(lambda)等。