Python中 * 与 **, *args 与 **kwargs的用法

* 用于传递位置参数(positional argument)
** 用于传递关键字参数(keyword argument)

首先,先通过一个简单的例子来介绍 * 的用法: ```python def add_function(a, b): return a + b a = 1 b = 2 c = [1, 2] print(add_function(a, b)) print(add_function(*c)) ``` 输出是: ``` 3 3 ```

从输出可以看到,使用 * 可以将列表 c 中的值分别传递给函数的参数们。注意,列表中元素的个数需要与函数参数的个数相等。


*args (arguments) 的用法与 * 稍微不太一样,*args在定义函数时使用。

def myFun(*args):
    for arg in args:
        print(arg)
  print(args)
myFun(1,2,3)

输出是:

1
2
3
(1, 2, 3)

由例子可知,*args用于接收可变数量的无名参数,并且存在元组 (tuple) 里,元组中的元素是无法修改的。


最后来讲解一下 **kwargs (keyword arguments) 的用法。
def myFun2(**kwargs):  
    for key, value in kwargs.items(): 
        print ("%s == %d" %(key, value))
    print(kwargs)
myFun2(One=1, Two=2, Three=3)

输出是:

One == 1
Two == 2
Three == 3
{'One': 1, 'Two': 2, 'Three': 3}

从这个例子可以看出,**kwargs用于接收可变数量的关键字参数,并且存在字典里 (dict)。


注意,需要按照 arg, *args, **kwargs 这个顺序定义一个函数。

def myFun3(arg,*args,**kwargs):
    print("arg is :", arg)
    print("*args are :", args)
    print("**kwargs are :", kwargs)
myFun3('a', 'b', 'c', d='1', e='2', f='3')

输出是

arg is : a
*args are : ('b', 'c')
**kwargs are : {'d': '1', 'e': '2', 'f': '3'}

References

GeeksforGeeks. (n.d.). *args and **kwargs in Python - GeeksforGeeks. [online] Available at: https://www.geeksforgeeks.org/args-kwargs-python/.

Lakhanpal, R. (2016). Python *,**,*args and **kwargs. [online] Medium. Available at: https://medium.com/@rahulkp220/python-args-and-kwargs-5fb545b7a538.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值