Python 中参数的传递非常灵活,不太容易记住理解,特整理如下备忘:
普通参数
即按照函数所需的参数,对应位置传递对应的值,可以对应 Java 中的普通参数
1 | def max(a, b): |
默认参数
可以对位置参数中的某个参数设置默认值,设置了默认值的参数在调用时可以不传递
此时需要注意,默认参数只能在必选参数后面
1 | def max(a, b=0): |
当有多个默认参数时,调用参数传递的值会按照顺序赋值,也可以通过指定参数值为特定参数赋值
1 | def position(x, y=1, z=0): |
可变参数
即传递的参数个数不确定,可以对应为 Java 中的可变参数,类似传递了一个 list 或 tuple
可变参数只能出现在必选参数和默认参数后面
1 | def max(*numbers): |
关键字参数
关键字参数必须出现在必选参数、默认参数、可变参数、命名关键字参数后面
在可变参数的基础上,即不仅仅可以传递任意个参数,同时还可以对传递的各个参数指定参数名,可以理解为传递了一个 dict
1 | def person(name, **kw): |
总结一下
- 普通参数——必选参数
- 默认参数——参数有默认值,调用函数时可以传递也可以不传递,如果不传递则使用默认值
- 可变参数——传递数量不确定 (可以为0个) 的参数,类似传递一个 list
- 关键字参数——传递数量不确定 (可以为0) 的 键值对,类似传递一个 dict
在函数中出现的顺序必须和上面的保持一致