Python 函数参数(动态参数)

Python函数参数列表

  • 必传参数:平时最常用的,必传确定数量的参数
  • 默认参数:在调用函数时可以传也可以不传,如果不传将使用默认值
  • 可变参数:可变长度参数
  • 关键字参数:长度可变,但是需要以 key-value 形式传参

 

必传参数(位置参数)

def add(a, b):
  • 传入的两个整数按照位置顺序依次赋给函数的参数 a 和 b,参数 a 和参数 b 被称为位置参数

 

默认参数

  • 使用默认参数,可以简化函数的调用,尤其是在函数需要被频繁调用的情况下
# 必传参数a,默认参数b
def test1(a, b=3):
  • 声明函数时,当同时存在必传参数和默认参数,形参的顺序必须是 (必传参数 , 默认参数),不能默认参数在前

 

动态参数(非固定参数)

  • 动态参数就是传入的参数的个数是动态的,可以是1个、2个到任意个,还可以是0个。在不需要的时候,你完全可以忽略动态函数,不用给它传递任何值。
  • Python的动态参数有两种,分别是*args和**kwargs,这里面的关键是一个和两个星号的区别,而不是args和kwargs在名字上的区别,实际上你可以使用*any或**whatever的方式。
  • 注意:动态参数,必须放在所有的位置参数和默认参数后面。

 

可变参数
*args

  • 一个星号表示接收任意个参数。调用时,会将实际参数(关键参数)打包成一个元组传入形式参数。如果参数是个列表,会将整个列表当做一个参数传入。
def func(*args):
    """
    *表示接收任意个数量的参数,调用时会将实际参数打包为一个元组传入实参
    :param args:
    :return:
    """
    print args
    #通过遍历 args 可以访问传递的参数
    for i in args:
        print i

func({'name': 'kobe'}, 123, 'hello', ['a', 'b', 'c'])
#输出结果:
{'name': 'kobe'}
123
hello
['a', 'b', 'c']

 

  • 如果将列表中的所有元素都当做参数传递进去:在调用时前面加一个*号
func(*['a', 'b', 'c'])
输出结果:
a
b
c

 

关键字参数

  • 以 “参数名 = 参数值” 的形式传递参数

**kwargs

  • 传入一个字典(默认参数)
def func(**kwargs):
    for kwg in kwargs:
        print(kwg, kwargs[kwg])

func(k1='v1', k2=[0, 1, 2])
#输出结果
k1 v1
k2 [0, 1, 2]

 

  • 希望字典内的键值对能够像上面一样被逐一传入,传入参数时需要加**
def func(**kwargs):
    for kwg in kwargs:
        print(kwg, kwargs[kwg])

dic = {
    'k1': 'v1',
    'k2': 'v2'
}

func(**dic)
#输出结果
k1 v1
k2 v2
posted @ 2022-04-07 00:11  青山原  阅读(262)  评论(0编辑  收藏  举报