python:动态参数*args

动态参数

顾名思义,动态参数就是传入的参数的个数是动态的,可以是1个、2个到任意个,还可以是0个。在不需要的时候,你完全可以忽略动态函数,不用给它传递任何值。

Python的动态参数有两种,分别是*args**kwargs,这里面的关键是一个和两个星号的区别,而不是argskwargs在名字上的区别,实际上你可以使用*any**whatever的方式。但就如self一样,默认大家都使用*args**kwargs

注意:动态参数,必须放在所有的位置参数和默认参数后面!

def func(name, age, sex='male', *args, **kwargs):
    pass

*args

一个星号表示接收任意个参数。调用时,会将实际参数打包成一个元组传入形式参数。如果参数是个列表,会将整个列表当做一个参数传入。例如:

def func(*args):
    """
    *表示接收任意个数量的参数,调用时会将实际参数打包为一个元组传入实参
    :param args:
    :return:
    """
    print args

    for i in args:
        print i


func({'name': 'kobe'}, 123, 'hello', ['a', 'b', 'c'])

运行结果:

({'name': 'kobe'}, 123, 'hello', ['a', 'b', 'c'])
{'name': 'kobe'}
123
hello
['a', 'b', 'c']

可以看到,先打印了args参数,是一个元组,再分别打印了传入的每个参数。

有时候我们传入一个列表,本意是希望将列表中的所有元素都当做参数传递进去,这里直接将[‘a’, ‘b’, ‘c’]看做一个整体了,怎么办?

其实只需要在调用时前面加一个*号,就能实现将列表中的每个元素传递进去了。

其实不光列表,任何序列类型数据对象,比如字符串、元组都可以通过这种方式将内部元素逐一作为参数,传递给函数。而字典,则会将所有的key逐一传递进去。

def func(*args):
    """
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    *表示接收任意个数量的参数,调用时会将实际参数打包为一个元组传入实参
    :param args:
    :return:
    """
    for i in args:
        print i


func(*['a', 'b', 'c'])

输出结果:

a
b
c

特别的,调用时只能有一个参数前添加*号,且必须放在最后面

def func(*args):
    """
    *表示接收任意个数量的参数,调用时会将实际参数打包为一个元组传入实参
    :param args:
    :return:
    """
    for i in args:
        print i


func(123, 'hello', ['a', 'b', 'c'], *{'name': 'kobe', 'age': 41})

输出:将字典的key值作为参数传入了

123
hello
['a', 'b', 'c']
age
name
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值