* 用于传递位置参数(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, 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(')

输出是

arg is : a
*args are : ('b', 'c')
**kwargs are : {'}

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.

Python中 * 与 **, *args 与 **kwargs的用法的更多相关文章

  1. Python中的*args和**kwargs的理解与用法

    一.简述 1.*args和**kwargs 这两个是python中方法的可变参数. 2.*args表示任何多个无名参数,它是一个tuple: 3.**kwargs表示关键字参数,它是一个dict.并且 ...

  2. 理解 Python 中的 *args 和 **kwargs

    Python是支持可变参数的,最简单的方法莫过于使用默认参数,例如: def test_defargs(one, two = 2): print 'Required argument: ', one ...

  3. Python中的*args和**kwargs

    原文地址:http://www.linuxidc.com/Linux/2011-10/45083.htm 先来看个例子: ,2,3,4) foo(a=1,b=2,c=3) foo(1,2,3,4, a ...

  4. Python中的 *args 和 **kwargs

    基本概念 Python支持可变参数,最简单的方法莫过于使用默认参数. def test_defargs(one, two=2): # 参数one没有默认值,two的默认值为2 print('Requi ...

  5. Python中的args和kwargs

    有时,你会看到python中定义函数的时候带有两个奇怪的参数:*args.**kwargs.如果你曾经想知道它们是干什么的,或者想知道你的IDE为什么在main()函数中定义它们,那么本文可以帮助到你 ...

  6. python中的*args与**kwargs的含义与作用

    在定义函数的时候参数通常会使用 *args与**kwgs,形参与实参的区别不再赘述,我们来解释一下这两个的作用. *args是非关键字参数,用于元组,**kwargs是关键字参数 (字典)例如下面的代 ...

  7. python 中的 *args 和 **kwargs

    在阅读Python代码时,经常会看到如下函数的定义: def fun(*args, **kwargs): 很多同学可能会对此感到困惑,这个 * args和 **kwargs是什么东西.为啥会在源码中应 ...

  8. python中应用*args 与**kwargs

    这是Python函数可变参数 args及kwargs------->目的是:当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值. ...

  9. python中,*args和**kwargs这两个参数的作用是什么?

    *args和**kwargs这两个都是不定长参数,可以解决函数中参数不固定的问题,*args可以把位置参数转化成元组,**kwagrs可以把关键字参数转化成字段

  10. python中“*”、"*args"、"kwargs"三种用法

    参考链接:https://www.cnblogs.com/cwind/p/8996000.html 注意的是: (1)"*"符号的用法很类似C++中的指针,针对列表; (2)&qu ...

随机推荐

  1. 『题解』洛谷P5015 标题统计

    题意描述 给你一个字符串,求所有字符的总数. 字符只包含数字,大小写字母. 分析 字符串的长度还是\(\le5\)的. 直接枚举就可以了. AC代码: NOIP官方标准程序是这样的 #include ...

  2. Linux初体验--配置网络(CentOS7)

    在安装好虚拟机和操作系统后,一台合格的网络设备当然是要冲浪啊. 一.记下自己的网络配置 二.打开终端,输入命令 三.修改文件 保存后退出(wq). 四.重启网络服务 systemctl restart ...

  3. jdbc 加载数据库驱动如何破坏双亲委托模式

    导读      通过jdbc链接数据库,是每个学习Java web 方向的人必然一开始会写的代码,虽然现在各路框架都帮大家封装好了jdbc,但是研究一下jdbc链接的套路还是很意义     术语以及相 ...

  4. python之小木马(文件上传,下载,调用命令行,按键监控记录)

    window版 服务端: 开启两个线程,一个用来接收客户端的输入,一个用来监控服务端键盘的记录 客户端: get 文件(下载)put 文件(上传) window下cmd命令执行结果会直接打印出来,ke ...

  5. Medium高赞系列,如何正确的在Stack Overflow提问

    在我们写程序的时候,经常会遇到各色各样的问题,在国内,小伙伴们经常去知乎.CSDN.博客园.思否.安卓巴士等地方提问并获得答案. 这些地方汇集了很多优秀的.爱分享的国内资源.小编比较自豪的一件事情就是 ...

  6. jquery mobiscroll移动端日期选择控件(无乱码)

    jquery mobiscroll移动端日期选择控件(无乱码) <pre><!DOCTYPE html><html lang="en">< ...

  7. Elasticsearch生产环境遇到的问题以及解决方案

    Elasticsearch是一个开源的分布式实时搜索与分析引擎,支持云服务.它是基于Apache Lucene搜索引擎的类库创建的,提供了全文搜索能力.多语言支持.专门的查询语言.支持地理位置服务.基 ...

  8. Batch批处理获取当前时间

    这不是一个新问题,但是由于网上写的都是针对自己的电脑设置,没有通用性,而我呢,又需要在不同电脑上使用,因此,这命题一个问题了.其实也没有什么好说的,直接上代码. @ECHO OFF set split ...

  9. saprk性能调优参考

    1.Tuning Spark 文档 原文:http://spark.apache.org/docs/latest/tuning.html 翻译参考:https://www.cnblogs.com/lh ...

  10. Python 常用模块系列(2)--time module and datatime module

    import time print (help(time)) #time帮助文档 1. time模块--三种时间表现形式: 1° 时间戳--如:time.time()  #从python创立以来,到当 ...