python中的*args和**kwargs

一、简介

*args 和 **kwargs 主要⽤于函数定义,你可以将不定数量的参数传递给⼀个函数简单的来说就是:预先并不知道函数使⽤者会传递多少个参数给你, 所以在这个场景下使⽤这两个关键字。
*args 是⽤来发送⼀个⾮键值对的可变数量的参数列表给⼀个函数。

**kwargs 允许你将不定长度的键值对, 作为参数传递给⼀个函数。 如果你想要在⼀个函数⾥处理带名字的参数, 你应该使⽤**kwargs。

二、*args的是方法

*args是用来发送一个非键值对的可变数量的参数列表给一个函数。

举个例子

#!coding:utf8

def test_args(first_arg,*args):
    print 'first args is :%s' % first_arg
    for arg in args:
        print 'anthoer arg is : %s' % arg


if __name__=='__main__':
    # 测试*args的用法
    test_args("python", "hadoop", "mongodb")

输出的结果如下:

first args is :python
anthoer arg is : hadoop
anthoer arg is : mongodb

三、**kwargs的用法

**kwargs 是将不定长度的键值对作为参数传递给一个函数。如果想要在一个函数处理带名字的参数,可以考虑使用**kwagrs

举个例子

#!coding:utf8

def test_kwargs(**kwargs):
    for key,value in kwargs.items():
        print '%s == %s' % (key,value)


if __name__=='__main__':
    # 测试**kwargs的用法
    test_kwargs(name="CSDN", user=" 小丶城丶故事")

输出结果如下:

name == CSDN
user ==  小丶城丶故事

四、是*args和**kwargs调用函数

#!coding:utf8

def test_args_kwargs(arg1,arg2,arg3):
    print 'arg1 : %s' % arg1
    print 'arg2 : %s' % arg2
    print 'arg3 : %s' % arg3


if __name__=='__main__':
    # 使⽤ *args 和 **kwargs 来调⽤函数
    args = ('csdn', 1, 2)
    kwargs = {'arg1': '小丶城丶故事', 'arg2': 3, 'arg3': 4}
    test_args_kwargs(*args)
    test_args_kwargs(**kwargs)

输出结果:

arg1 : csdn
arg2 : 1
arg3 : 2
arg1 : 小丶城丶故事
arg2 : 3
arg3 : 4

五、标准参数和*args 、**kwargs在使用时的顺序

#!coding:utf8

def test_args_and_kwargs(f_args,*args,**kwargs):
    print "first arg is : %s" % f_args
    for arg in args:
        print 'another arg is : %s ' % arg
    for key,value in kwargs.items():
        print '%s == %s' % (key,value)

if __name__=='__main__':
    # 测试标准参数与*args、 **kwargs在使⽤时的顺序
    test_args_and_kwargs("Hello", "csdn", "小丶城丶故事", name="csdn", user="小丶城丶故事")

结果如下:

first arg is : Hello
another arg is : csdn 
another arg is : 小丶城丶故事 
name == csdn
user == 小丶城丶故事

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值