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 会被拆包出来进行关键字解析。