- ·上一篇内容:通信行程卡即将下线,海量的个人信息怎么办
- ·下一篇内容:微软将停止生产微软品牌的鼠标、键盘及网络摄像头等配件
Python函数中的*args和**kwargs参数
本站在《Python中自定义函数的方法》一文中讲解了Python中定义一个函数的方法以及基本参数的相关知识。
但在实际应用中,我们在定义一个函数时无法确切的知道一个函数到底需要指定多少个参数,或者一些参数根据实际情况进行指定,而非每次调用时都用的上,这时我们在定义函数时需要借助*args和*kwargs参数来解决这个问题了。
*args参数
*args表示一个列表或元组型的位置参数,用于传递给函数进行处理使用。
当在定义一个函数时,我们无法确定参数的个数时,可以使用*args来传递任意数量的参数。
此时,*用于将参数打包成一个列表或元组传递给函数。当然,参数的名字是任何符合Python命名规则的参数,但是我们习惯上使用*args来指代这种参数。
下面这个例子用于求若干个数字的和,由于数字的数量事先无法确定,我们使用*args参数来解决这个问题。
def
num_sum(*args):
the_sum = 0
print('打包的参数为:', args)
for
e
in
args:
the_sum
+=
e
return
the_sum
print('1.这些数字之和为:', num_sum(12, 34, 7, 19))
print('2.这些数字之和为:', num_sum(12.3, 34.5))
其运行结果如下:
打包的参数为: (12, 34, 7, 19)
1.这些数字之和为: 72
打包的参数为: (12.3, 34.5)
2.这些数字之和为: 46.8
在Pycharm中的程序及运行结果如下所示:
**kwargs参数
**kwargs参数用于将关键字参数打包成字典类型传递给函数,供函数使用。
下面这个例子用于演示**kwargs参数的使用形式。这个例子用于计算某人3门课程的平均成绩。
def average_grade(**kwargs):
the_sum = 0
print('成绩分别为:', kwargs)
for
k, v
in
kwargs.items():
the_sum += v
return
the_sum
/
len(kwargs.items())
# 第一种使用方法
average_xiaoming = average_grade(Chinese=89, Math=93, History=91)
print('小明的三科平均成绩为:', average_xiaoming)
# 第二种使用方法
grade_xiaogang = {'Chinese': 76, 'Math': 91, 'History': 88}
average_xiaogang = average_grade(**grade_xiaogang)
print('小刚的三科平均成绩为:', average_xiaogang)
其输出结果如下:
成绩分别为: {'Chinese': 89, 'Math': 93, 'History': 91}
小明的三科平均成绩为: 91.0
成绩分别为: {'Chinese': 76, 'Math': 91, 'History': 88}
小刚的三科平均成绩为: 85.0
该例子在Pycharm中的程序及运行结果如下:
最后一个例子
这个例子来源于:https://stackoverflow.com/questions/3394835/use-of-args-and-kwargs
该例子同时演示了常见的三种参数的使用方法。
# required_arg is a positional-only parameter.
print (required_arg)
# args is a tuple of positional arguments,
# because the parameter name has * prepended.
if args: # If args is not empty.
print (args)
# kwargs is a dictionary of keyword arguments,
# because the parameter name has ** prepended.
if kwargs: # If kwargs is not empty.
print (kwargs)
>>> func()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: func() takes at least 1 argument (0 given)
>>> func("required argument")
required argument
>>> func("required argument", 1, 2, '3')
required argument
(1, 2, '3')
>>> func("required argument", 1, 2, '3', keyword1=4, keyword2="foo")
required argument
(1, 2, '3')
{'keyword2': 'foo', 'keyword1': 4}
本文由本站原创和整理,如需转载请注明出处:翔宇亭IT乐园(http://www.biye5u.com),并给出本文的连接地址。
如有任何问题,也欢迎留言交流。
微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。
个人成长离不开各位的关注,你的关注就是我继续前行的动力。