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

Python函数中的*args,**kwargs作用与用法

前言

最近在使用Python函数的时候,经常碰见函数中使用*args**kwargs,而且参数的传递也是非常奇特,就特意对Python函数中*args**kwargs进行了查询,下面就以实例进行说明。

1 Python中的*args**kwargs

在 Python 中,*args**kwargs 分别用于处理函数的不定数量的位置参数和关键字参数。这句话比较难以理解,直接通过实例进行说明。

1.1 *args

*args 表示接受任意数量的位置参数。在函数定义中,*args 允许函数接受不定数量的位置参数,并将它们作为一个元组传递给函数。

def example_function(*args):for arg in args:print(arg)#有两种传递方式,第一种直接传递元组
example_function(1, 2, 3, 4)
#第二种先定义一个元组,然后利用*()进行传递
my_tuple = (1, 2, 3, 4)
example_function(*my_tuple)
#两种运行结果相同
# 1
# 2
# 3
# 4

1.2 **kwargs

**kwargs 表示接受任意数量的关键字参数。在函数定义中,**kwargs 允许函数接受不定数量的关键字参数,并将它们作为一个字典传递给函数。

def example_function(**kwargs):for key, value in kwargs.items():print(f'{key}: {value}')#有两种传递方式,第一种直接传递键值对
example_function(a=1, b=2, c=3)
#第二种是定义一个字典,用**{}进行解包
my_dict = {'a': 1, 'b': 2, 'c': 3}
example_function(**my_dict)
#两种运行结果相同
# a: 1
# b: 2
# c: 3

1.3 *args**kwargs联合使用

有些函数中往往*args**kwargs都存在,因此它既可以接受任意数量的位置参数(通过 *args),又可以接受任意数量的关键字参数(通过 **kwargs)。

#定义一个传递*args 和 **kwargs函数
def example_function(*args,**kwargs):for arg in args:print(arg)for key, value in kwargs.items():print(f'{key}: {value}')
#定义元组和字典
my_tuple = (1, 2, 3, 4)
my_dict = {'a': 1, 'b': 2, 'c': 3}
#一起传递元组和字典
example_function(*my_tuple,**my_dict)# 结果
# 1
# 2
# 3
# 4
# a: 1
# b: 2
# c: 3

后记

大家如果有问题需要交流或者有项目需要合作,可以加Q Q :504156006详聊,加好友请留言“CSDN”,谢谢。

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

相关文章:

  • python可视化界面自动生成,python如何做可视化界面
  • 力扣热题100道-双指针篇
  • 数据库一般会采取什么样的优化方法?
  • 编程笔记 html5cssjs 015 HTML列表
  • 【力扣题解】P404-左叶子之和-Java题解
  • elasticsearch 索引数据多了怎么办,如何调优,部署
  • Spring Cloud Gateway之Predicate断言详解
  • JavaScript中的prototype和_proto_的关系是什么
  • 机器学习(二) -- 数据预处理(3)
  • 【数学建模美赛M奖速成系列】Matplotlib绘图技巧(三)
  • 手写Spring与基本原理--简易版
  • EasyNTS端口穿透服务新版本发布 0.8.7 增加隧道流量总数记录,可以知晓设备哪个端口耗费流量了
  • python自动合计各部周销
  • Java内存区域与内存溢出异常
  • 远程网络唤醒家庭主机(openwrt设置)
  • Spring知识02
  • Linux服务器搭建笔记-006:拓展/home目录容量
  • 元宇宙与VR虚拟现实的未来如何?
  • 微服务事务处理:CAP 定理和最终一致性的关系
  • 【Linux操作系统】探秘Linux奥秘:操作系统的入门与实战
  • Copilot概述:AI助手引领编程新纪元
  • 最小覆盖子串(LeetCode 76)
  • Windows Sockets 2 笔记
  • 13章总结
  • (2023,3D NeRF,无图像变分分数蒸馏,单步扩散)SwiftBrush:具有变分分数蒸馏的一步文本到图像扩散模型
  • 【WPF.NET开发】将路由事件标记为已处理和类处理
  • 2023年03月18日_微软office365 copilot相关介绍
  • GBASE南大通用携手宇信科技打造“一表通”全链路解决方案
  • Python 内置高阶函数练习(Leetcode500.键盘行)
  • 【JavaWeb】day01-HTMLCSS