Python 动态参数*args **args

2020-05-03  本文已影响0人  不太聪明的亚子

Python 动态参数*args **args

还没有很细致的学习Python,所以很多知识都是用到的时候学,今天这个知识点是在网上学到的,结合实际后总结一下。

动态参数,就是不限制参数个数,大于等于0个都OK。

1. 定义function(*args) ,*args表示将参数以一个元组的形式传入

        例:function(1, 2, 'hi', {'name': 'Tina'})

        那么function得到的参数形式是(1, 2, 'hi', {'name': 'Tina'}),这是一个元组

        调用该函数,想传列表/字符串/元组/字典等序列形式的参数,把序列中的每个元素分开传入,而不是作为一个整体,那么在这个序列前面加 *

        例:function(*['a', 'b', 'c'])

        那么function得到的参数形式是('a', 'b', 'c')

        否则function(['a', 'b', 'c'])得到的参数形式是(['a', 'b', 'c'], )

        如果带*传入一个字典,那么function得到的参数是以key为元组元素的:

        例:function(*{'a':1, 'b':2})

        那么function得到的参数形式是('a', 'b')

2. 定义function(**args) ,**args表示将参数以一个字典的形式传入

        例:function(a = 1, b = 2, c = 3)

        那么function得到的参数形式是{'a': 1, 'b': 2, 'c': 3},这是一个字典

        调用该函数,参数得是赋值的变量,如function(a, b = 2),就不行。

        在字典前面加**作为参数调用function,如function(**{'a':1,'b':2},c = 3)得到的参数形式也是{'a': 1, 'b': 2, 'c': 3},这个可以用在将多个不同的字典,组合成一个字典传入。

3. function(args, *args, **args),即在定义函数时,参数优先顺序为args > *args > **args,参数名不能相同,args只是大家习惯使用,可以随便用字母。

参考:

python:动态参数*args - 秋寻草 - 博客园(原文中提到调用functon(*args)时,只能有一个参数前加*,并且必须放到最后,这句话经过实践,目前是错误的,我是python3.5,对于*的使用不限制顺序和个数)

上一篇 下一篇

猜你喜欢

热点阅读