[python] 多值参数(定义多值参数的函数、案例演练、元组和字典的拆包)
一、定义支持多值参数的函数
有时可能需要一个函数能够处理的参数个数是不确定的,这个时候,就可以使用多值参数
Python中有两种多值参数:
参数名前增加一个*可以接收元组
参数名前增加两个*可以接收字典
一般在给多值参数命名时,习惯使用以下两个名字:
*args ——存放元组参数,前面有一个*
**kwargs ——存放字典参数,前面带两个*
args是arguments的缩写,有变量的含义。
kw是keyword的缩写,kwargs可以记忆键值对参数。
提示:
多值参数的应用会经常出现在网络上一些大牛开发的框架中,知道多值参数,有利于我们能够读懂大牛的代码。
代码演示:
def demo(num, *nums, **person):print(num)print(nums)print(person)demo(1)
demo(1, 2, 3, 4, 5, 6)
demo(1, 2, 3, 4, 5, 6, name="小花", age=20, gender="女")
执行结果:
红色是分隔线,代表每个demo调用函数执行结果分界线
二、多值参数演练 - 数字累加案例
需求:
- 定义一个函数叫sum_numbers,可以接收任意多个整数
- 功能要求:将传递的所有数字累加并且返回累加结果
代码:
def sum_numbers(*args):num = 0print(args)# 循环遍历args后在累加for n in args:num += nreturn numresult = sum_numbers(1, 2, 3, 4)
print(result)
执行结果:
有的人可能会说,为什么, 要用多值参数,我直接在调用函数的时候给的参数是元组不就可以了吗,那么我们来把这个代码写一下,看看有什么区别?
def sum_numbers(args):num = 0print(args)# 循环遍历args后在累加for n in args:num += nreturn numresult = sum_numbers((1, 2, 3, 4))
print(result)
执行结果:和上面一样
对比:可以看出,在形参那里用的不是多值元组参数,而是一个形参只能接收一个实参;在调用函数那里输入的实参是一个元组,比之前多了一对括号。我们说过在调用个函数时输入的实参形式越简单越好,所以对比下还是多值参数更方便一点。
三、多值参数 - 元组和字典的拆包
在调用带有多值参数的函数时,如果希望:
- 将一个元组变量,直接传递给args
- 将一个字典变量,直接传递给kwargs
就可以使用拆包,简化参数的传递,拆包的方式是:
- 在元组变量前增加一个*
- 在字典变量前增加两个*
我们先来看一段代码:
def demo(*args, **kwargs):print(args)print(kwargs)# 元组变量、字典变量
gl_nums = (1, 2, 3)
gl_dict = {"name": "Python", "age": 20}demo(gl_nums, gl_dict)
执行结果如下图:
从上图我们可以看到,调用函数时我们传了两个变量参数,结果显示把这两个实参都传递给前面的一个*args这个形参里了,这并不是我们的本意,我们的本意是元组传递给第一个形参,字典传递给第二个形参,这时候就要用到元组和字典的拆包来解决了。
下面使用拆包的方法:很简单
# 拆包语法,简化元组变量/字典变量的传递
demo(*gl_nums, **gl_dict)# 不使用拆包
# demo(1, 2, 3, name="python", age=20)
执行结果:
文章借鉴来源:Python自学网 http://www.wakey.com.cn/
[python] 多值参数(定义多值参数的函数、案例演练、元组和字典的拆包)相关推荐
- python元组和字典的拆包
""" 元组和字典的拆包 在调用带有多值参数的函数时,如果希望: 1.将一个元素变量,直接传递给args 2.将一个字典遍历,直接传递给kwargs 就可以使用拆包,简化 ...
- python实验题第四章_「Python」2020.03.16学习笔记 | 第四章列表、元组、字典-习题(11-13)...
学习测试开发的Day74,真棒! 学习时间为1H 第四章列表.元组.字典-习题(11-13) 11.求两个集合的交集和并集 代码 list1=[1,2,3,4] list2=[2,3,5,5] def ...
- 多值参数-元组和字典的拆包
def demo(*args, **kwargs):print(args)print(kwargs)# 元组变量/字典变量 gl_nums = (1, 2, 3) gl_dict = {"n ...
- Python 编写代码,定义一个求阶乘的函数fact(n),要求输入N, 返回 N! 的值
思路:使用判断语句进行,使用一个变量作为控制.当其小于输入值时,另一个变量进行叠加.最终输出总和. number=eval(input("请输入数字:")) def fact(n) ...
- Python学习笔记(基础知识第三篇:列表、元组、字典、集合)
一.列表 1.列表知识 定义一个空的列表,列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套). 打印出第一个元素,列表索引值以0为开始值,-1为从末尾的开始位置. 列表可以使用 ...
- python中集合是序列吗_Python中序列,列表,元组,字典及集合
1.序列 一块用于存放多个值的连续内存空间,且按一定顺序排列,每个值都分派一个数字,称为索引或位置 (1).索引 序列中的每个元素都有一个编号,从0开始 若负数作为索引时,是从-1开始的,最后一个元素 ...
- Python学习入门基础:一篇文章搞定函数基础、函数进阶
一.函数基础 函数的快速体验 函数的基本使用 函数的参数 函数的返回值 函数的嵌套调用 在模块中定义函数 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在 ...
- python字典内存分析_python--序列,字符串,列表,元组,字典,集合内存分析
一,什么是序列. 序列是一种数据存储方式,用来存储一系列的数据,在内存(堆内存)中,序列是一块用来存放多个值的连续的内存空间,其存储的值为所指向对象的地址.比如说a = [ 10 , 20 , 30 ...
- 回文数python_回文数 python
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 所谓回文字符串,就是正读和反读都一样的字符串,比如"level&quo ...
- python中求包含5的数_Python 内置函数 ( ) 可以返回列表、元组、字典、集合、字符串以及 range 对象中元素个数。_学小易找答案...
[简答题]实例1:求两数相除的结果. 先后输入2个数据,计算第一个数除以第二个数的结果. 要求能够处理输入数据为非数字.除数为零.文件末尾EndOfFile 和用户使用Ctrl + C 命令终止程序等 ...
最新文章
- 高性能网站架构设计之缓存篇(5)- Redis 集群(上)
- C/Cpp / 参数传递时如何防止数组退化为指针
- the value of esp was not properly saved across a function call异常
- 中国开源燃烧!Zilliz 获全球开源基础软件最大单笔融资 4300 万美元
- Linux_Qt:-1: error: cannot find xxx/lib: file format not recognized
- Arcgis利用点数据集(txt数据)转为shp线数据(含案例)
- 玩转Kinetis之教你将K60主频超到200MHz以上
- linux上wps能云同步吗,WPS For Linux 6634 再次更新发布-文档也要上云
- word选择粘贴没有html格式,Word选择性粘贴怎么用?Word设置无格式文本粘贴快捷键的方法...
- Quora的技术探索
- 计算机c盘空间满了应该怎么办,电脑C盘空间不足怎么办?1秒教你彻底释放C盘,拥有新机般的体验...
- 一年365天每天进步 5‰或1%和每天退步 5‰或1%最后的结果分别是多少
- [转]用友NC单据UI基本代码示例
- htc 8x android,[多图]极致简约的奥秘 HTC 8X拆解
- 英文经典欣赏:飞鸟集
- excel中html批量转化为pdf文件,批量将Excel转换成pdf文档的方法
- Linux中fork()系统调用创建两个子进程
- (最新详细下载UE5教程)学习UE5的第一步;下载Epic及从Epic中选取相关引擎及启动UE5/day.1
- java merkle树,11个默克尔树开源项目
- cloc统计代码字数