上一篇
Python函数参数类型与排序规则全面详解 - 编程教程
- Python
- 2025-07-30
- 1684
Python函数参数类型与排序规则全面详解
本文深入解析Python函数的四种参数类型及其强制排序规则,通过实际代码示例演示如何正确声明和使用位置参数、默认参数、可变参数和关键字参数。
一、Python函数参数四大类型
1. 位置参数 (Positional Arguments)
必须按顺序传递的参数,数量必须匹配
def greet(name, greeting): print(f"{greeting}, {name}!") # 正确调用 greet("Alice", "Hello") # 输出: Hello, Alice! # 错误调用(参数顺序颠倒) greet("Hi", "Bob") # 输出: Bob, Hi!
2. 默认参数 (Default Arguments)
定义时指定默认值,调用时可省略
def connect(host, port=8080, timeout=10): print(f"连接到 {host}:{port}, 超时:{timeout}秒") # 有效调用 connect("example.com") # 使用默认port和timeout connect("api.com", 8000) # 自定义port, 默认timeout connect("db.com", timeout=30) # 使用关键字指定timeout
3. 可变参数 (*args)
接收任意数量的位置参数,打包为元组
def sum_values(*args): total = 0 for num in args: total += num return total print(sum_values(1, 2, 3)) # 输出: 6 print(sum_values(10, 20, 30, 40)) # 输出: 100
4. 关键字参数 (**kwargs)
接收任意数量的关键字参数,打包为字典
def build_profile(**kwargs): profile = {} for key, value in kwargs.items(): profile[key] = value return profile user = build_profile(name="Alice", age=30, occupation="工程师") print(user) # 输出: {'name': 'Alice', 'age': 30, 'occupation': '工程师'}
二、参数排序黄金法则
强制顺序规则:位置参数 → 默认参数 → 可变参数(*args) → 关键字参数(**kwargs)
正确声明顺序示例
# 符合规则的函数声明 def valid_func(a, b, c=10, *args, **kwargs): print(f"位置参数: {a}, {b}") print(f"默认参数: c={c}") print(f"可变参数: {args}") print(f"关键字参数: {kwargs}") # 正确调用 valid_func(1, 2, 3, 4, 5, name="Alice", age=25) # 错误声明(将导致SyntaxError) # def invalid_func(a, b=2, *args, c=10, **kwargs): # ...
三、综合应用实例
def create_product(name, price, category="电子产品", *sizes, **details): print("\n=== 产品信息 ===") print(f"名称: {name}") print(f"价格: ¥{price:.2f}") print(f"分类: {category}") if sizes: print(f"可选尺寸: {', '.join(sizes)}") if details: print("附加信息:") for key, value in details.items(): print(f" - {key}: {value}") # 调用示例 create_product("智能手机", 2999.99, "数码", "64GB", "128GB", color="黑色", warranty="2年") create_product("笔记本电脑", 5999.99, "电脑", "512GB", "1TB", brand="ThinkPad", weight="1.5kg", os="Windows 11")
四、关键要点总结
- 位置参数必须放在最前面且数量匹配
- 默认参数必须声明在位置参数之后
- *args用于接收多余的位置参数,声明在默认参数后
- **kwargs必须放在参数列表最后,接收任意关键字参数
- 混合使用时必须严格遵守:位置参数 → 默认参数 → *args → **kwargs
- 调用函数时,位置参数必须在关键字参数之前传递
本文由JingChenXun于2025-07-30发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://www.521pj.cn/20256824.html
发表评论