挑战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)等。