全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-19 5 分钟 ✍️ juanwangdev

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
参数类型位置是否必须调用方式
位置参数最前按位置或关键字
默认值参数中间按位置或关键字
仅关键字参数* 之后只能关键字

要点总结

  1. 位置参数按顺序传递,关键字参数通过名称指定
  2. 混合调用时,位置参数必须在前
  3. 默认值参数放在非默认参数之后
  4. 使用 * 强制后续参数使用关键字
  5. 多参数函数推荐使用关键字参数提高可读性

📝 发现内容有误?点击此处直接编辑

← 上一篇 Python序列解包
下一篇 → Python关键字可变参数
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库