一、定义支持多值参数的函数

有时可能需要一个函数能够处理的参数个数是不确定的,这个时候,就可以使用多值参数

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调用函数执行结果分界线

二、多值参数演练 - 数字累加案例

需求:

  1. 定义一个函数叫sum_numbers,可以接收任意多个整数
  2. 功能要求:将传递的所有数字累加并且返回累加结果

代码:

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)

执行结果:和上面一样

对比:可以看出,在形参那里用的不是多值元组参数,而是一个形参只能接收一个实参;在调用函数那里输入的实参是一个元组,比之前多了一对括号。我们说过在调用个函数时输入的实参形式越简单越好,所以对比下还是多值参数更方便一点。

三、多值参数 - 元组和字典的拆包

在调用带有多值参数的函数时,如果希望:

  1. 将一个元组变量,直接传递给args
  2. 将一个字典变量,直接传递给kwargs

就可以使用拆包,简化参数的传递,拆包的方式是:

  1. 在元组变量前增加一个*
  2. 在字典变量前增加两个*

我们先来看一段代码:

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] 多值参数(定义多值参数的函数、案例演练、元组和字典的拆包)相关推荐

  1. python元组和字典的拆包

    """ 元组和字典的拆包 在调用带有多值参数的函数时,如果希望: 1.将一个元素变量,直接传递给args 2.将一个字典遍历,直接传递给kwargs 就可以使用拆包,简化 ...

  2. python实验题第四章_「Python」2020.03.16学习笔记 | 第四章列表、元组、字典-习题(11-13)...

    学习测试开发的Day74,真棒! 学习时间为1H 第四章列表.元组.字典-习题(11-13) 11.求两个集合的交集和并集 代码 list1=[1,2,3,4] list2=[2,3,5,5] def ...

  3. 多值参数-元组和字典的拆包

    def demo(*args, **kwargs):print(args)print(kwargs)# 元组变量/字典变量 gl_nums = (1, 2, 3) gl_dict = {"n ...

  4. Python 编写代码,定义一个求阶乘的函数fact(n),要求输入N, 返回 N! 的值

    思路:使用判断语句进行,使用一个变量作为控制.当其小于输入值时,另一个变量进行叠加.最终输出总和. number=eval(input("请输入数字:")) def fact(n) ...

  5. Python学习笔记(基础知识第三篇:列表、元组、字典、集合)

    一.列表 1.列表知识 定义一个空的列表,列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套). 打印出第一个元素,列表索引值以0为开始值,-1为从末尾的开始位置. 列表可以使用 ...

  6. python中集合是序列吗_Python中序列,列表,元组,字典及集合

    1.序列 一块用于存放多个值的连续内存空间,且按一定顺序排列,每个值都分派一个数字,称为索引或位置 (1).索引 序列中的每个元素都有一个编号,从0开始 若负数作为索引时,是从-1开始的,最后一个元素 ...

  7. Python学习入门基础:一篇文章搞定函数基础、函数进阶

    一.函数基础 函数的快速体验 函数的基本使用 函数的参数 函数的返回值 函数的嵌套调用 在模块中定义函数 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在 ...

  8. python字典内存分析_python--序列,字符串,列表,元组,字典,集合内存分析

    一,什么是序列. 序列是一种数据存储方式,用来存储一系列的数据,在内存(堆内存)中,序列是一块用来存放多个值的连续的内存空间,其存储的值为所指向对象的地址.比如说a = [ 10 , 20 , 30 ...

  9. 回文数python_回文数 python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 所谓回文字符串,就是正读和反读都一样的字符串,比如"level&quo ...

  10. python中求包含5的数_Python 内置函数 ( ) 可以返回列表、元组、字典、集合、字符串以及 range 对象中元素个数。_学小易找答案...

    [简答题]实例1:求两数相除的结果. 先后输入2个数据,计算第一个数除以第二个数的结果. 要求能够处理输入数据为非数字.除数为零.文件末尾EndOfFile 和用户使用Ctrl + C 命令终止程序等 ...

最新文章

  1. 高性能网站架构设计之缓存篇(5)- Redis 集群(上)
  2. C/Cpp / 参数传递时如何防止数组退化为指针
  3. the value of esp was not properly saved across a function call异常
  4. 中国开源燃烧!Zilliz 获全球开源基础软件最大单笔融资 4300 万美元
  5. Linux_Qt:-1: error: cannot find xxx/lib: file format not recognized
  6. Arcgis利用点数据集(txt数据)转为shp线数据(含案例)
  7. 玩转Kinetis之教你将K60主频超到200MHz以上
  8. linux上wps能云同步吗,WPS For Linux 6634 再次更新发布-文档也要上云
  9. word选择粘贴没有html格式,Word选择性粘贴怎么用?Word设置无格式文本粘贴快捷键的方法...
  10. Quora的技术探索
  11. 计算机c盘空间满了应该怎么办,电脑C盘空间不足怎么办?1秒教你彻底释放C盘,拥有新机般的体验...
  12. 一年365天每天进步 5‰或1%和每天退步 5‰或1%最后的结果分别是多少
  13. [转]用友NC单据UI基本代码示例
  14. htc 8x android,[多图]极致简约的奥秘 HTC 8X拆解
  15. 英文经典欣赏:飞鸟集
  16. excel中html批量转化为pdf文件,批量将Excel转换成pdf文档的方法
  17. Linux中fork()系统调用创建两个子进程
  18. (最新详细下载UE5教程)学习UE5的第一步;下载Epic及从Epic中选取相关引擎及启动UE5/day.1
  19. java merkle树,11个默克尔树开源项目
  20. cloc统计代码字数

热门文章

  1. python语言程序设计教程赵璐 第三章 课后习题 程序流程控制
  2. 【竞品分析】腾讯QQ手机浏览器与UC手机浏览器产品对比
  3. excel如何输入身份证号码
  4. window上装python,pip
  5. 将CD转MP3工具(WIN7以上可以使用)
  6. 工资低的.Net程序员,活该你工资低
  7. 可能的克服拖延症的方法
  8. java程序员 .net 程序员_Java 程序员 和 .NET 程序员
  9. 曾经的移动应用推广八法尚能饭否?再加一法大概就事半功倍!
  10. 2021年度总结——波澜不惊