通常情况下, 定义函数的时候, 我们只能定义有限的形参个数, 实参个数通常情况下也要和形参来定义.

如果我们想传递任意多个参数给函数, 只能把这些参数先封装到一个列表或元组中, 然后再传进去. 比较麻烦.

python 提供了可变参数, 可以接受任意多个参数, 然后函数内部会自动的把这些参数封装在一个元组中, 供函数内部使用.

可变参数基本使用

在形参前面添加一个 *号, 这样的参数就是可变参数, 可以接受任意多个参数.

def foo(a, *b): # b 就是可变参数, 在函数内部可以作为元组使用
    print(a)
    print(b)

foo(10, 20, 4, 7, 9)

注意:

  1. 函数的形参中最多只能定义一个可变参数, 定义多个可变参数会出现语法错误.

  2. 可变参数一般作为形参中的最后一个参数.

  3. 如果可变参数不是最后一参数, 则给可变参数后的参数赋值的时候只能使用关键字参数赋值(下节学习)

def foo(a, *b, c): 
    print(a)
    print(b)
    print(c)


foo(10, 20, 4, 7, 9, c=90)


给可变参数传递列表和元组

我们已经知道可变参数能够接受任意多的参数, 用起来确实很爽.

但是, 如果我们手里已经有了列表或数组类型的数据, 如何传递给可变参数呢?难道要手动拆开一个一个的传?list[0], list[1],...

当然没有这么麻烦, 只要在列表或元组的前面添加一个*, 则 python 会自动把他们拆开传递给可变参数.

def foo(a, *b, c): 
    print(a)
    print(b)
    print(c)


nums = [20, 40, 6]
foo(*nums, c=50) # python 自动拆开列表, 把列表中的元素传递给函数

Copyright © 李振超 2018 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-02-25 07:12:09

results matching ""

    No results matching ""