赞
踩
通过logger.info的输出可看到想要的结果
好奇之下对这两个参数进行了深入的了解
基本的一些共性就是:
简单的说args(arguments):位置参数。kwargs(key arguments):关键字参数
科普一下python的参数类型(类似其他语言都有形参、实参等):
# 自定义函数
def func(a, b):
print(a + b)
# 实际调用调用,位置一一对应
func(1,1)
# 自定义函数
def func(a, b):
print(a + b)
# 实际调用调用,关键字通过字典的形式传输
func(a=1, b=1)
如果两者参数(位置参数和关键字参数)混合使用,关键字参数必须在位置参数的后面
至于为什么要在后面,通过结合位置参数以及关键字的参数原理:
位置参数:实参和形参位置保持一致,按形参声明的先后顺序一一赋值,否则会出错
关键字参数:调用函数以形参=实参的方式,(实参的顺序无所谓)
具体看完整例子:
# 自定义函数
def func(a, b):
print(a + b)
# 混合使用,正确调用输出
func(1, b=1)
# 混合使用,错误调用,无法输出
func(a=1, 1)
对于参数需要传入什么,以及什么类型
具体可看我之前的文章:
python数据类型详细分析(附代码)
如果在参数名前加*,代表这个参数为可变参数
知识点如下:
元组
进行存储,整体赋值给变量名为*args通过上面参数的科普,*args为位置参数
具体通过例子清晰:
# 自定义函数
def func(*args):
print(type(args))
# 调用函数,传入2个数值
func(1, 2) # 输出的内容为 <class 'tuple'> ,通过元组的格式进行存储
既然已经知道以元组的格式进行存储
可以通过自定义一个元组之后传入参数
# 定义元组
tuple = (1, 2)
# 调用函数
func(*tuple)
知识点如下:
字典
进行存储,整体赋值给变量名为**kwargs具体例子如下:
# 自定义函数
def func(**kwargs):
print(type(kwargs))
# 调用函数,传入2个数值
func(a=1 , b=2) # 输出的内容为 <class 'dict'> ,通过字典的格式进行存储
既然已经知道是字典的格式存储,可以自定义一个字典
# 定义字典
dict = {
'a': 1,
'b': 2
}
# 调用函数
func(**dict)
上文已经知道关键字参数要在位置参数之后
具体例子如下:
# 自定义函数,包含*args和**kwargs
def func(argument, *args, **kwargs):
print(argument) # 输出1
print(args) # 输出2
print(kwargs) # 输出3
# 调用函数,传入argument、args以及kwargs参数
func(1, 2, a=3)
已经知道一个是位置参数一个是关键字参数
可以自定义一个元组以及字典的类型:
# 定义元组以及字典类型
tuple = (1, 2)
dict = {
'a': 1,
'b': 2
}
# 调用函数,传入参数
# 注意位置参数和关键字参数的顺序
func(*tuple , **dict)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。