0

0

Python可变参数如何使用_*args与**kwargs讲解【指导】

舞夢輝影

舞夢輝影

发布时间:2025-12-23 23:07:02

|

121人浏览过

|

来源于php中文网

原创

args接收任意位置参数并打包为tuple,kwargs接收任意关键字参数并打包为dict;二者顺序固定为必选参数→args→kwargs,且支持解包调用。

python可变参数如何使用_*args与**kwargs讲解【指导】

Python 中的 *args**kwargs 是处理可变数量参数的核心机制,它们让函数更灵活、复用性更强。关键不在于记住语法,而在于理解“什么时候该用、怎么传、怎么接”。

什么是 *args:接收任意多个位置参数

*args 用于捕获调用时传入的**多余位置参数**(即没有对应形参名的参数),自动打包成一个 tuple。它必须写在普通参数之后、**kwargs 之前。

示例:

def greet(name, *hobbies):
    print(f"Hi {name}!")
    print("Your hobbies:", hobbies)  # hobbies 是 tuple

greet("Alice", "reading", "swimming", "coding")

立即学习Python免费学习笔记(深入)”;

输出:

Hi Alice!

Your hobbies: ('reading', 'swimming', 'coding')

  • 如果只传必需参数,*args 接收到的是空 tuple ()
  • 不能用关键字方式传给 *args 参数(如 greet(name="Bob", "tennis") 会报错)
  • 名字不固定,*args 只是约定俗成;写成 *things*rest 也合法

什么是 **kwargs:接收任意多个关键字参数

**kwargs 捕获所有**未被显式声明的关键字参数**,自动打包成一个 dict。它必须放在参数列表最后。

考拉新媒体导航
考拉新媒体导航

考拉新媒体导航——新媒体人的专属门户网站

下载

示例:

def profile(name, **info):
    print(f"Name: {name}")
    print("Extra info:", info)  # info 是 dict

profile("Tom", age=30, city="Shanghai", job="Engineer")

输出:

Name: Tom

Extra info: {'age': 30, 'city': 'Shanghai', 'job': 'Engineer'}

  • 键必须是合法标识符(不能是数字或表达式),值可以是任意类型
  • 若没传额外关键字参数,**kwargs 得到的是空字典 {}
  • *args 一样,**kwargs 是命名习惯,实际可用 **options

组合使用:*args + **kwargs 的典型顺序

当函数既要支持任意位置参数、又要支持任意关键字参数时,标准写法是:

def func(required, *args, **kwargs):
    ...

这个顺序不可颠倒:必选参数 → *args → **kwargs。Python 靠这个顺序区分参数类型。

  • required 必须提供(除非有默认值)
  • *args 接收剩下未匹配的位置参数
  • **kwargs 接收所有未匹配的关键字参数
  • 常见于装饰器、封装底层函数、API 适配层等场景

实际技巧:解包传递参数

*args**kwargs 不仅用于定义函数,也常用于“解包”已有的数据结构来调用函数。

  • * 解包序列(list/tuple)作为位置参数:func(*my_list)
  • ** 解包字典作为关键字参数:func(**config_dict)
  • 可混合使用:func(a, *b, c=10, **d)
  • 这是实现“参数透传”的基础,比如写一个通用日志装饰器,不关心被装饰函数收什么参数

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

183

2023.12.04

Python标识符有哪些
Python标识符有哪些

Python标识符有变量标识符、函数标识符、类标识符、模块标识符、下划线开头的标识符、双下划线开头、双下划线结尾的标识符、整型标识符、浮点型标识符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

287

2024.02.23

java标识符合集
java标识符合集

本专题整合了java标识符相关内容,想了解更多详细内容,请阅读下面的文章。

258

2025.06.11

c++标识符介绍
c++标识符介绍

本专题整合了c++标识符相关内容,阅读专题下面的文章了解更多详细内容。

124

2025.08.07

treenode的用法
treenode的用法

​在计算机编程领域,TreeNode是一种常见的数据结构,通常用于构建树形结构。在不同的编程语言中,TreeNode可能有不同的实现方式和用法,通常用于表示树的节点信息。更多关于treenode相关问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

538

2023.12.01

C++ 高效算法与数据结构
C++ 高效算法与数据结构

本专题讲解 C++ 中常用算法与数据结构的实现与优化,涵盖排序算法(快速排序、归并排序)、查找算法、图算法、动态规划、贪心算法等,并结合实际案例分析如何选择最优算法来提高程序效率。通过深入理解数据结构(链表、树、堆、哈希表等),帮助开发者提升 在复杂应用中的算法设计与性能优化能力。

17

2025.12.22

深入理解算法:高效算法与数据结构专题
深入理解算法:高效算法与数据结构专题

本专题专注于算法与数据结构的核心概念,适合想深入理解并提升编程能力的开发者。专题内容包括常见数据结构的实现与应用,如数组、链表、栈、队列、哈希表、树、图等;以及高效的排序算法、搜索算法、动态规划等经典算法。通过详细的讲解与复杂度分析,帮助开发者不仅能熟练运用这些基础知识,还能在实际编程中优化性能,提高代码的执行效率。本专题适合准备面试的开发者,也适合希望提高算法思维的编程爱好者。

28

2026.01.06

clawdbot ai使用教程 保姆级clawdbot部署安装手册
clawdbot ai使用教程 保姆级clawdbot部署安装手册

Clawdbot是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

16

2026.01.29

clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址
clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址

clawdbot龙虾机器人官网入口:https://clawd.bot/,clawdbot ai是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

12

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.3万人学习

Django 教程
Django 教程

共28课时 | 3.6万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号