Python位置参数与关键字参数
Python 函数参数分为位置参数和关键字参数,理解两者区别是函数调用的基础。
位置参数
定义与调用
Python
def greet(name, message):
print(f"{name}, {message}")
# 按位置顺序传递
greet("Alice", "Hello") # Alice, Hello
greet("Bob", "Hi") # Bob, Hi
特点
- 按参数定义顺序传递
- 必须提供,不能省略
- 调用时不需要写参数名
关键字参数
定义与调用
Python
def greet(name, message):
print(f"{name}, {message}")
# 使用参数名传递
greet(name="Alice", message="Hello") # Alice, Hello
greet(message="Hi", name="Bob") # Bob, Hi(顺序无关)
特点
- 使用参数名明确指定
- 顺序可以任意
- 提高代码可读性
混合使用
规则:位置参数必须在关键字参数之前
Python
def greet(name, message, times):
for _ in range(times):
print(f"{name}, {message}")
# 正确示例
greet("Alice", "Hello", times=3)
greet("Alice", message="Hello", times=3)
# 错误示例
# greet(name="Alice", "Hello", 3) # SyntaxError
默认值参数
基本用法
Python
def greet(name, message="Hello"):
print(f"{name}, {message}")
greet("Alice") # Alice, Hello(使用默认值)
greet("Bob", "Hi") # Bob, Hi
greet("Charlie", message="Hey") # Charlie, Hey
默认值参数位置规则
Python
# 默认值参数必须在非默认值参数之后
def correct(a, b, c=1): # 正确
pass
# def wrong(a=1, b, c): # 错误
# pass
最佳实践
使用关键字参数提高可读性
Python
# 不推荐:多个位置参数含义不明
def create_user(name, age, city, email):
pass
create_user("Alice", 25, "Beijing", "alice@example.com")
# 推荐:使用关键字参数
create_user(
name="Alice",
age=25,
city="Beijing",
email="alice@example.com"
)
强制使用关键字参数
Python
# 使用 * 强制后续参数必须使用关键字
def greet(name, *, message):
print(f"{name}, {message}")
greet("Alice", message="Hello") # 正确
# greet("Alice", "Hello") # 错误:message 必须用关键字
参数顺序总结
text
def function(pos1, pos2, default1=value1, default2=value2, *, kwonly1, kwonly2):
pass
| 参数类型 | 位置 | 是否必须 | 调用方式 |
|---|---|---|---|
| 位置参数 | 最前 | 是 | 按位置或关键字 |
| 默认值参数 | 中间 | 否 | 按位置或关键字 |
| 仅关键字参数 | * 之后 | 是 | 只能关键字 |
要点总结
- 位置参数按顺序传递,关键字参数通过名称指定
- 混合调用时,位置参数必须在前
- 默认值参数放在非默认参数之后
- 使用
*强制后续参数使用关键字 - 多参数函数推荐使用关键字参数提高可读性
📝 发现内容有误?点击此处直接编辑