Python中 * 与 **, *args 与 **kwargs的用法
* 用于传递位置参数(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的用法的更多相关文章
- Python中的*args和**kwargs的理解与用法
一.简述 1.*args和**kwargs 这两个是python中方法的可变参数. 2.*args表示任何多个无名参数,它是一个tuple: 3.**kwargs表示关键字参数,它是一个dict.并且 ...
- 理解 Python 中的 *args 和 **kwargs
Python是支持可变参数的,最简单的方法莫过于使用默认参数,例如: def test_defargs(one, two = 2): print 'Required argument: ', one ...
- 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 ...
- Python中的 *args 和 **kwargs
基本概念 Python支持可变参数,最简单的方法莫过于使用默认参数. def test_defargs(one, two=2): # 参数one没有默认值,two的默认值为2 print('Requi ...
- Python中的args和kwargs
有时,你会看到python中定义函数的时候带有两个奇怪的参数:*args.**kwargs.如果你曾经想知道它们是干什么的,或者想知道你的IDE为什么在main()函数中定义它们,那么本文可以帮助到你 ...
- python中的*args与**kwargs的含义与作用
在定义函数的时候参数通常会使用 *args与**kwgs,形参与实参的区别不再赘述,我们来解释一下这两个的作用. *args是非关键字参数,用于元组,**kwargs是关键字参数 (字典)例如下面的代 ...
- python 中的 *args 和 **kwargs
在阅读Python代码时,经常会看到如下函数的定义: def fun(*args, **kwargs): 很多同学可能会对此感到困惑,这个 * args和 **kwargs是什么东西.为啥会在源码中应 ...
- python中应用*args 与**kwargs
这是Python函数可变参数 args及kwargs------->目的是:当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值. ...
- python中,*args和**kwargs这两个参数的作用是什么?
*args和**kwargs这两个都是不定长参数,可以解决函数中参数不固定的问题,*args可以把位置参数转化成元组,**kwagrs可以把关键字参数转化成字段
- python中“*”、"*args"、"kwargs"三种用法
参考链接:https://www.cnblogs.com/cwind/p/8996000.html 注意的是: (1)"*"符号的用法很类似C++中的指针,针对列表; (2)&qu ...
随机推荐
- python接口测试-数据驱动-DDT
DDT是python的第三方库,全名称为:Data-Driven/Decorated Tests. ddt安装 通过pip安装ddt模块,安装Python后,Python自带pip功能包 切换到Pyt ...
- Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring - 大新博客 - 推酷 - 360安全浏览器 7.1
Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring - 大新博客 时间 2014-02-11 21:08:00 博客园-所有随笔区 ...
- ES6学习笔记01 -- 暂时性死区 ( temporal dead zone )
参考文档: let 和 const 命令 - ECMAScript6入门 暂时性死区(temporal dead zone) 理解ES6中的TDZ(暂时性死区) ES6 中 let 暂时性死区详解 ...
- PHP数组与xml互相转换
1.数组转xml function arrayToXml($arr) { $xml = "<xml>"; foreach ($arr as $key => $va ...
- PHP代码安全有必要了解下
攻击者通过构造恶意SQL命令发送到数据库,如果程序未对用户输入的 SQL命令执行判断过滤,那么生成的SQL语句可能会绕过安全性检查,插入其他用于修改后端数据库的语句,并可能执行系统命令,从而对系统造成 ...
- Lab8:文件系统
文件系统的概念 文件系统是操作系统中管理持久性数据的子系统,提供数据存储和访问功能 文件是具有符号名,由字节序列构成的数据项集合 文件系统的功能 分配文件磁盘空间 管理文件块(位置和顺序) 管理空闲空 ...
- RHEL7.2 安装Hadoop-2.8.2
创建三台虚拟机,IP地址为:192.168.169.101,192.168.169.102,192.168.169.103 将192.168.169.102为namenode,192.168.169. ...
- 【Linux系列】配置Centos 7的软件源(二)
目的 本文主要介绍以下内容: 设置centos的国内软件源,默认源都是国外的下载软件超级麻烦. ssh登录 下载一个shell或者cmder ssh root@192.168.10.18 #上篇设置的 ...
- 【集训Day4 动态规划】【2018寒假集训 Day4 更新】蛙人
蛙人 (ple) 蛙人使用特殊设备潜水.设备中有一个气瓶,分两格:一格装氧气,另一格装氮气.留在水中有时间的限制,在深水中需要大量的氧气与氮气.为完成任务,蛙人必须安排好气瓶.每个气瓶可以用它的重量和 ...
- Appium自动获取 Android 设备 id 和包名等信息(python)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/zhusongziye/article/d ...