ToB企服应用市场:ToB评测及商务社交产业平台

标题: Python之参数星号(*)使用笔记 [打印本页]

作者: 我可以不吃啊    时间: 15 小时前
标题: Python之参数星号(*)使用笔记
配景

在学习python时发现方法调用和方法定义会经常发现有带星号的标志,为了弄明白是怎么使用的。特此做个笔记。
一、参数符号对比速查表

符号类使用场景作用描述示例无符号函数定义/调用平凡位置参数或关键字参数.def func(a, b)*函数定义网络多余位置参数为元组.def func(*args)*函数调用解包可迭代对象为位置参数.func(*[1,2])**函数定义网络多余关键字参数为字典def func(**kwargs)**函数调用解包字典为关键字参数func(**{‘x’:1})单独*参数分隔逼迫后续参数必须用关键字指定def func(a, *, b) 二、核心区别详解

1. 无符号参数(基础参数)

  1. # 位置参数示例
  2. def add(a, b):
  3.     return a + b
  4. add(3, 5)        # ✅ 正确:位置传参
  5. add(b=5, a=3)    # ✅ 正确:关键字传参
复制代码
2. 单星号(*)参数

定义时使用(网络位置参数)
  1. def log(*values):
  2.     print(type(values))  # <class 'tuple'>
  3.     print(values)
  4. log(1, 'A', True)  # 输出: (1, 'A', True)
复制代码
调用时使用(解包可迭代对象)
  1. def plot(x, y):
  2.     print(f"绘制点({x},{y})")
  3. points = [5, 8]
  4. plot(*points)  # 等效于 plot(5, 8)
复制代码
3. 双星号(**)参数

定义时使用(网络关键字参数)
  1. def user_info(**details):
  2.     print(type(details))  # <class 'dict'>
  3.     print(details)
  4. user_info(name='Alice', age=25)  # 输出: {'name': 'Alice', 'age': 25}
复制代码
调用时使用(解包字典)
  1. def create_profile(name, age):
  2.     print(f"{name} | {age}岁")
  3. data = {'name': 'Bob', 'age': 30}
  4. create_profile(**data)  # 等效于 create_profile(name='Bob', age=30)
复制代码
4. 逼迫关键字参数(单独*)

  1. def register(username, *, email, phone):
  2.     print(f"注册用户: {username}, 邮箱: {email}, 电话: {phone}")
  3. register("wyz", email="wyz@example.com", phone="13800138000")  # ✅ 正确
  4. register("bob456", "bob@test.com", "12345678911")  # ❌ 报错:email和phone必须用关键字参数
复制代码
三、混合使用案例

  1. def complex_example(a, b=0, *args, c, d=10, **kwargs):
  2.     print(f"""
  3.     固定参数: a={a}, b={b}
  4.     可变位置参数: args={args}
  5.     强制关键字参数: c={c}, d={d}
  6.     可变关键字参数: kwargs={kwargs}
  7.     """)
  8. complex_example(1, 2, 3, 4, c=5, e=20, f=30)
  9. # 输出:
  10. # 固定参数: a=1, b=2
  11. # 可变位置参数: args=(3, 4)
  12. # 强制关键字参数: c=5, d=10
  13. # 可变关键字参数: kwargs={'e': 20, 'f': 30}
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4