Python 动态参数 *args 和 **kwargs

[复制链接]
作者: Py资源整理 | 时间: 2020-12-8 20:53:13 | python图文教程|
3 987
发表于 2020-12-8 20:53:13| 显示全部楼层 |阅读模式

动态参数

动态参数,表示没有明确定义参数数量,允许传递任意多个参数的函数。

*args 和 **kwargs

可以通过*args**kwargs进行加参数的访问。

注意,其中argskwargs 只是名称, 重点在 * 。故: *a *b **kwa **bbb等等的名字都是可以的。

*args

加了星号*的变量名会存放所有未命名的变量参数, 将他们存为元组。前面可以使用明确的参数,*args只能放置在最后一个参数。

def manyargs(val,*args):
    print("val : ", val)
    print(type(args))
    print("共有参数数量: " , len(args))
    for v in args:
        print(v)
    print(args[2]) # > 3


if __name__ == "__main__":
    manyargs(1,2,3,4)

val : 1

<class 'tuple'> 共有参数数量: 3 2 3 4 4

上面的例子中,1,2,3,4四个参数,其中1传递给val,剩余的3个参数都加入到了args中。

**kwargs

**kwarg 将所有传递过来的命名参数保存成为一个字典,同样前面也可以加入其它参数。

def namedargs(one , **kwargs):
    print("one=",one)
    print("共有参数数量: " , len(kwargs))
    print(kwargs) # 输出参数字典
    print(type(kwargs))

if __name__ == "__main__":
    namedargs(one=1,two=2,three=3)
    # 注意,参数必须都是带有key的。

one= 1 共有参数数量: 2 {'two': 2, 'three': 3} <class 'dict'>

kwargs使用字典的方式将所有命名参数保存起来。

发表于 2020-12-20 21:45:43| 显示全部楼层
支持楼主!言简意赅,深入浅出!!!
回复

使用道具 举报

签到天数: 1 天

 楼主| 发表于 2020-12-17 11:13:25| 显示全部楼层
Cand 发表于 2020-12-16 22:38
这两个参数一起,就是任意参数.

单一个就是任意参数。
一个是元组方式,一个是字典方式。
也可以组合使用,用法非常灵活
回复

使用道具 举报

签到天数: 3 天

发表于 2020-12-16 22:38:22| 显示全部楼层
这两个参数一起,就是任意参数.

点评

单一个就是任意参数。 一个是元组方式,一个是字典方式。 也可以组合使用,用法非常灵活  详情 回复 发表于 2020-12-17 11:13
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

!jz_fbzt! 快速回复 !jz_sctz! !jz_fhlb! 按钮
快速回复 返回列表 返回顶部