前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[python] 多值参数(定义多值参数的函数、案例演练、元组和字典的拆包)

[python] 多值参数(定义多值参数的函数、案例演练、元组和字典的拆包)

原创
作者头像
python自学网
发布2022-06-15 13:45:04
1.4K0
发布2022-06-15 13:45:04
举报
文章被收录于专栏:python+前端 知识分享

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

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

Python中有两种多值参数:

参数名前增加一个*可以接收元组 参数名前增加两个*可以接收字典

一般在给多值参数命名时,习惯使用以下两个名字:

*args ——存放元组参数,前面有一个* **kwargs ——存放字典参数,前面带两个*

args是arguments的缩写,有变量的含义。 kw是keyword的缩写,kwargs可以记忆键值对参数。

提示:

多值参数的应用会经常出现在网络上一些大牛开发的框架中,知道多值参数,有利于我们能够读懂大牛的代码。

代码演示:

代码语言:python
代码运行次数:0
复制
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. 功能要求:将传递的所有数字累加并且返回累加结果

代码:

代码语言:python
代码运行次数:0
复制
def sum_numbers(*args):
    num = 0
    print(args)
    # 循环遍历args后在累加
    for n in args:
        num += n

    return num


result = sum_numbers(1, 2, 3, 4)
print(result)

执行结果:

有的人可能会说,为什么, 要用多值参数,我直接在调用函数的时候给的参数是元组不就可以了吗,那么我们来把这个代码写一下,看看有什么区别?

代码语言:python
代码运行次数:0
复制
def sum_numbers(args):
    num = 0
    print(args)
    # 循环遍历args后在累加
    for n in args:
        num += n

    return num


result = sum_numbers((1, 2, 3, 4))
print(result)

执行结果:和上面一样

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

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

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

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

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

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

我们先来看一段代码:

代码语言:python
代码运行次数:0
复制
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这个形参里了,这并不是我们的本意,我们的本意是元组传递给第一个形参,字典传递给第二个形参,这时候就要用到元组和字典的拆包来解决了。

下面使用拆包的方法:很简单

代码语言:python
代码运行次数:0
复制
# 拆包语法,简化元组变量/字典变量的传递
demo(*gl_nums, **gl_dict)

# 不使用拆包
# demo(1, 2, 3, name="python", age=20)

执行结果:

更多关于这方面的文章或者视频可以参考:Python自学网

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、定义支持多值参数的函数
  • 二、多值参数演练 - 数字累加案例
  • 三、多值参数 - 元组和字典的拆包
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档