Skip to content

Python function parameter parsing

这篇文章讲述 python 的函数定义和函数参数的解析。

函数参数类型

python 中函数参数我认为可以分为两种,一种就是普通的参数类型,另外一种是不定长度的参数:

python
def func(a, *b):
    pass

其中 a 是普通的参数类型,b 是不定长的参数类型,注意在定义函数时候的 * 号代表了不定长度的参数。

函数默认数值

python 可以为函数指定默认参数,函数指定默认参数的数据一次指定之后不会变动,同时是根据定义时候的数据情况获取数据。在某个参数指定了默认数值之后,排在他位置之后的参数也要指定默认数值。不定长度的参数不能有默认数值。默认参数值得注意的点就是,他是一次确定,按照我简单的理解,就是这个函数定义在解析的那一刻,创建在内存里,不再变动。

python
def func(b : int, a : list = [] ):
    a.append(b)
    print(a)

func(1)
func(2)
func(3)

得到如下结果:

python
[1]
[1, 2]
[1, 2, 3]

因为列表一次创建就固定在了内存里面,所以 append 的一直是同一个列表。

函数参数解析

规则是无论传参怎么传,都先按照位置参数进行解析,位置参数解析了之后按关键字参数解析,这两步都完成之后按默认参数进行解析。在函数传参的时候 * 用来拆包, ** 用来传递字典,字典的 kv 会被拆包出来进行关键字解析。