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