python中def func(*args, **kwargs)
在python的函数中经常能看到输入的参数前面有一个或者两个星号,例如:
def fun1(param1, *param2):
def fun2(param1, **param2):
def fun3(param1, *param2, **param3)
*args, **kwargs 其实都是用来将任意个数的参数导入到python函数中。
具体而言:
1、*args:将多个输入打包成元组输入函数中
def fun(param1, *param2):print(param1)print(param2)
if __name__ == '__main__':fun(1,2,3,4,5)
---------------
out:
1
(2, 3, 4, 5)
分析:
(1) 由于形参param1只能接收一个实参,所以param=1被导入函数fun中
(2) 剩下的输入2,3,4,5被打包成元组赋给param2,所以*param2前面的*号表示这是一个元组,可以理解为是一个标志,便于编译器理解。如果没有这个*号,编译器会默认将数值2赋给param2,而不是(2,3,4,5)
注意:
(1) 在子函数中,param2就变成了独立的变量了,不需要*号作为标志。可以作为元组正常索引。
(2) 由上例知道*args是可变长度的,这也是其优点之一
2、**kwargs:将多个输入打包成字典输入函数中
def fun2(param1, **param2):print(param1)print(param2)
if __name__ == '__main__':fun2(1,a=2,b=3)
------------------------------
out:
1
{'a': 2, 'b': 3}
分析:
(1) 由于形参param1只能接收一个实参,所以param=1被导入函数fun中
(2) 剩下的输入a=2,b=3 被打包成字典赋给param2,所以**param2前面的*号表示这是一个字典,可以理解为是一个标志,便于编译器理解。
注意:
(1) 在子函数中,param2就变成了独立的变量了,不需要**号作为标志。可以作为字典正常索引。
(2) 由于**kwargs是字典类型,所以实参在输入的时候,要有字典所需要的key-value即键值对,不能单单输入数值
(3) 由上例知道**kwargs是可变长度的,这也是其优点之一
3、例子
注意点:参数arg、*args、**kwargs三个参数的位置必须是一定的。必须是(arg,*args,**kwargs)这个顺序,否则程序会报错。
def fun3(a, b=9, *args, **kwargs):print(a)print(b)print(args)print(kwargs)
if __name__ == '__main__':fun3(1, 2, 3, 4, c=5, d=6, e=7)
--------------------------------
out:
1
2
(3, 4)
{'c': 5, 'd': 6, 'e': 7}
4、主函数和子函数中的不同作用
上述的单星号用于子函数的输入,这里用于主函数中输入实参的操作中,作用是解压参数列表:
def fun4(a, b):print(a)print(b)if __name__ == '__main__':input = [1, 2]fun4(*input)
-----------------------
out:
1
2
注意:子函数的形参个数要与解压之后数据的长度保持一致
同理,**kwargs也有类似用法,但是由于字典有key-value对,所以用法稍微有些不同。不同点在于:主函数中**用来解压,子函数中**用来做字典的标志。不同位置含义不同
def fun4(**kwargs):print(kwargs['a'])print(kwargs['b'])for key, value in kwargs.items():print(key)print(value)if __name__ == '__main__':input = {'a':1,'b':2}fun4(**input)
-------------------
1
2
a
1
b
2
python中def func(*args, **kwargs)相关推荐
- pythonfunc函数的功能,python函数中def func(*args)这里*的作用是什么?
python函数中def func(*args)这里*的作用是什么? mip版 关注:160 答案:3 悬赏:0 解决时间 2021-02-23 21:54 已解决 2021-02-23 03: ...
- python中def func是什么意思_Python的函数参数详解
原标题:Python的函数参数详解 前言 Python中函数的参数可以分为两大类形参和实参~ def func(x, y): # x, y 就是形参 print(x, y) func(2, 3) # ...
- Python中def()->int奇怪的语法和*args与**args
看源码有一些奇奇怪怪的写法,顺便把以前用的整理整理 首先解释*args, **kwargs这两个,先看个测试代码 def func(*args, **kwargs):print(args)print( ...
- python中可变参数args传入函数时储存的类型是,Python函数可变参数定义及其参数传递方式实例详解...
本文实例讲述了Python函数可变参数定义及其参数传递方式.分享给大家供大家参考.具体分析如下: python中 函数不定参数的定义形式如下: 1.func(*args) 传入的参数为以元组形式存在a ...
- python中可变参数*args传入函数时的存储方式为_python 中文读法详解Python函数可变参数定义及其参数传递方式...
Python函数可变参数定义及其参数传递方式详解 python中 函数不定参数的定义形式如下 1. func(*args) 传入的参数为以元组形式存在args中,如: def func(*args): ...
- python中def fun(a、b=200)_python中的函数的参数和可变参数
最近在搞python的过程中需要用到给函数传可变参数..所以去网上找前人的帖子学习了一下 刚学用Python的时候,特别是看一些库的源码时,经常会看到func(*args, **kwargs)这样的函 ...
- python中可变参数args传入函数时储存的类型是_[转载]Python中函数的参数定义和可变参数*args与**args...
Python中函数的参数定义和可变参数 *args与**args区别 刚学用Python的时候,特别是看一些库的源码时,经常会看到func(*args, **kwargs)这样的函数定义,这个*和** ...
- python中def函数字典_python中的函数def和函数的参数
''' 函数: 1.减少代码重用性 2.易维护 3.可扩展性强 4.类型function 定义函数: def 函数变量名(): 函数的调用: 1.函数名加括号 2.函数如果没被调用,不会去执行函数内部 ...
- python中def函数中的参数_python中的函数def和函数的参数
''' 函数: 1.减少代码重用性 2.易维护 3.可扩展性强 4.类型function 定义函数: def 函数变量名(): 函数的调用: 1.函数名加括号 2.函数如果没被调用,不会去执行函数内部 ...
最新文章
- Symfony笔记之--控制器的快捷方法
- linux主机怎么建站,linux主机建站
- module ‘imgaug.augmenters‘ has no attribute ‘Resize‘
- linux中export与source的作用
- es6 --- 使用yield*命令遍历完全二叉树
- python 核心编程第5章(习题)
- Ubuntu扩大boot空间
- 安全整数和 Number.isSafeInteger()
- php 检查txt中全角大写字母的个数
- HTML 实现扫雷游戏
- 软考中级软件设计师--6.UML
- 文本智能处理与RPA领军企业达观数据宣布完成5.8亿元C轮融资
- 解决 Minimum supported Gradle version is 5.1.1. Current version is 4.6
- python使用pywinauto驱动微信客户端实现公众号爬虫
- oa系统需要的服务器配置,oa办公系统需要服务器配置
- 命名规范 (C++)
- html实训QQ音乐官网首页制作
- jadx反编译程序未响应
- 手把手教做Excel直方图
- 功率半导体芯片是什么_LED日光灯与传统日光灯之间有什么区别和优势呢?