当前位置: 首页 > news >正文

python3的可变参数如何传递元组和字典

在 Python3 中,使用 *** 操作符可以将元组和字典作为可变参数传递给函数。以下是具体方法和示例:


1. 传递元组作为可变位置参数

  • 语法:使用 * 解包元组
  • 作用:将元组中的元素拆分成单独的位置参数
def print_args(*args):print("位置参数:", args)# 定义元组
tuple_args = ("A", "B", "C")# 通过 * 传递元组
print_args(*tuple_args)  # 等价于 print_args("A", "B", "C")

输出

位置参数: ('A', 'B', 'C')

2. 传递字典作为可变关键字参数

  • 语法:使用 ** 解包字典
  • 作用:将字典的键值对拆分成单独的关键字参数
def print_kwargs(**kwargs):print("关键字参数:", kwargs)# 定义字典
dict_args = {"name": "Alice", "age": 30, "city": "Beijing"}# 通过 ** 传递字典
print_kwargs(**dict_args)  # 等价于 print_kwargs(name="Alice", age=30, city="Beijing")

输出

关键字参数: {'name': 'Alice', 'age': 30, 'city': 'Beijing'}

3. 混合使用元组和字典

可以同时传递元组(位置参数)和字典(关键字参数):

def mixed_example(arg1, arg2, *args, **kwargs):print(f"固定参数: {arg1}, {arg2}")print(f"可变位置参数: {args}")print(f"可变关键字参数: {kwargs}")tuple_args = (3, 4)
dict_args = {"key1": "value1", "key2": "value2"}mixed_example(1, 2, *tuple_args, **dict_args)

输出

固定参数: 1, 2
可变位置参数: (3, 4)
可变关键字参数: {'key1': 'value1', 'key2': 'value2'}

⚠️ 注意事项:

  1. 顺序要求
    调用函数时,参数顺序必须是:
    固定参数 → *args 元组 → **kwargs 字典

    # 正确顺序
    func(固定值, *tuple_var, **dict_var)
    
  2. 字典键名限制
    字典的键必须是字符串,且必须是函数参数的合法名称(不能包含空格或运算符等)。

  3. 避免重复参数
    元组参数和字典参数不能与固定参数重复,否则会抛出 TypeError


总结

参数类型解包操作符示例
元组(位置参数)*func(*tuple)
字典(关键字参数)**func(**dict)

通过灵活使用 ***,可以高效地将元组和字典作为可变参数传递给Python函数。

http://www.lryc.cn/news/587406.html

相关文章:

  • 第七章 算法题
  • 016_Token计数与成本管理
  • python:使用openpyxl库,实现excel表格的创建、查询(读取)、修改、插入数据
  • 在新版本的微信开发者工具中使用npm包
  • 开源工具DeepFilterNet:实时语音降噪
  • AI驱动的软件工程(上):人机协同的设计与建模
  • Vue 3 TypeScript 接口(Interface)使用
  • (一)SAP Group Reporting (GR) 集团财务合并解决方案套件概述
  • 数智管理学(三十三)
  • [论文阅读] 软件工程 | 首个德语软件工程情感分析黄金标准数据集:构建与价值解析
  • 【读书笔记】《Effective Modern C++》第二章:auto
  • 【论文阅读】Think Only When You Need with Large Hybrid-Reasoning Models
  • Datawhale AI 夏令营2025科大讯飞AI大赛<夏令营:用AI做带货视频评论分析>
  • 业务访问控制-ACL与包过滤
  • 【OpenGL ES】手撕一个mini版的Android native渲染框架
  • 串口学习和蓝牙通信HC05(第八天)
  • AI交互中的礼貌用语:“谢谢“的效用与代价分析
  • 09.获取 Python 列表的首尾元素与切片技巧
  • LLM大模型微调技术全景:从IFT、SFT到RLHF、DPO与PPO强化学习
  • 华擎B150M Pro4S魔改bios上8代U
  • AutoLabor-ROS-Python 学习记录——第一章 ROS概述与环境搭建
  • vue3 el-select默认选中
  • (33)记录描述窗体组件属性的枚举量 enum Qt :: WidgetAttribute, 简记为 WA_
  • 大模型微调(一):基于Swift框架进行自我认知微调(使用Lora微调Qwen3-8B模型)
  • MCU中的系统控制器(System Controller)是什么?
  • pthread_mutex_unlock函数的概念和用法
  • 手写muduo笔记
  • Clojure和Golang中的Channel有什么异同(TBC)
  • NumPy 中 np.c_ 的用法解析
  • Can I Trust Your Answer? Visually Grounded Video Question Answering