加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 10:59:31 所属栏目:Python 来源:网络整理
导读:? * 用于传递位置参数(positional argument) ** 用于传递关键字参数(keyword argument) ? 首先,先通过一个简单的例子来介绍 * 的用法: def add_function(a,b): return a + ba = 1 b = 2 c = [1,2 ] print (add_function(a,b)) print (add_function(*c)) 输

?

* 用于传递位置参数(positional argument)

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

?

首先,先通过一个简单的例子来介绍 * 的用法:

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,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,**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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读