美文网首页
可变参数

可变参数

作者: Joylice | 来源:发表于2019-01-23 15:01 被阅读0次

定义默认参数要牢记一点:默认参数必须指向不变对象!

在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的:
以数学题为例子,给定一组数字a,b,c....,请计算a2 + b2 + c2 + …...。

    def calc(numbers):
           sum = 0
           for n in numbers:
                sum = sum + n * n
            return sum

但是调用的时候,需要先组装出一个list或者tuple:

>>> calc([1, 2, 3])
14
>>> calc((1, 3, 5, 7))
84

如果利用可变参数,调用函数的方式可以简化成:

>>> calc(1, 2, 3)
14
>>> calc(1, 3, 5, 7)
84

至此,可以把函数的参数改为可变参数:

def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

定义可变参数和定义一个list或者tuple参数相比,仅仅在参数前面加一个*号。函数内部,参数 numbers接收到的是一个tuple,因此函数代码完全不变,但是调用该函数时,可以传入任意个参数,包括0个参数:

>>> calc(1, 2)
5
>>> calc()
0

如果要传入的参数是已经存在的list或者tuple,又该如何调用呢?

>>> nums = [1, 2, 3]
>>> calc(nums[0], nums[1], nums[2])
14

但是 上面的写法不够简练,还可以这样调用:

>>> nums = [1, 2, 3]
>>> calc(*nums)
14

Python是允许list或者tuple前面加*号,变成可变参数传进去的。

相关文章

  • 元组、字典可变参数

    可变参数 需求: 参数数量不确定,能否接收? args元组可变参数 kwargs字典可变参数 传递可变参数

  • 函数参数

    1、可变参数,参数个数可变 在参数前面加上* 就代表可变参数 可变参数,在函数内部其实就是一个tuple def ...

  • ★10.关于可变参数模板

    可变参数函数模板 可变参数类模板 可变参数函数模板的使用 转发参数包

  • 函数的,参数,变量作用域,递归,匿名函数

    一:函数参数的介绍 1:可变和不可变参数 1.1:必选参数 1.2:默认参数 1.3:可变参数 1.4:关键字参数...

  • Go语言可变参数

    可变参数 参数数量可变的函数称为可变参数函数 在声明可变参数函数时,需要在参数列表的最后一个参数类型之前加上省略符...

  • 可变参数列表

    可变参数列表 数组可以向可变参数传值,反之,不行 可变参数列表作为参数时只能放在参数的最后面 可变参数列表的方法是...

  • python函数回顾

    1.参数的介绍 (1)可变和不可变参数 (2)必选参数 (3)默认参数 (4)可变参数 (5)关键字参数 1.1....

  • Python参数 * 与 ** ,及装包拆包

    (*args)可变参数在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以...

  • 12. 可变参数函数

    12. 可变参数函数 什么是可变参数函数 可变参数函数是一种参数个数可变的函数。 语法 如果函数最后一个参数被记作...

  • Java中的可变参数

    学习笔记:可变参数,仅语法 可变参数又称参数的个数可变,用作方法形参的出现,那么方法的参数个数就是可变的了. 格式...

网友评论

      本文标题:可变参数

      本文链接:https://www.haomeiwen.com/subject/knwjjqtx.html