1、必须参数(位置参数)
必需参数:先用形式参数定义,然后在调用时对应位置使用实参(具体的数值)调用,定义的形式参数和调用的实际参数必需一一对应(顺序、数量)。
def sum(a, b):
return a + b
sum(5, 6)
2、关键字参数
关键字参数:先使用形式参数定义,然后调用时以关键字的形式(形式参数 = 实际参数)传入参数,函数调用时不关心参数的顺序。
def sub(a, b):
return a - b
s1 = sub(a=6, b=3)
s2 = sub(b=3, a=0)
s3 = sub(9, b=3)
3、默认参数
def mul(a, b=3, c=2):
print("a:{0}, b:{1}, c:{2}".format(a, b, c))
return a*b*c
print(mul(2))
print(mul(2, b=4)) #若要对默认值参数重新赋值,需要使用 关键字=值 的形式传参
print(mul(2, b=4, c=6))
(1)以*args形式声明参数在函数内使用args获取传入的参数(args的值是由参数构成的元组)
def fun(*args):
print(args)
#调用示例1
fun(1, 2, 3, 4, 'a')
fun()
fun(4,'a')
#调用示例2
l = [1, 2, 3, 4]
t = ('a', 'b', 'c')
d = {1:2, 2:3, 3:4}
#当传入参数为列表、元组、或者字典的时候,参数名字前需要加*
fun(*l)
fun(*t)
fun(*d)
(2)**kwargs形式的可变参数,在函数内部kwargs是一个字典,字典的key是我们传入的形式参数的名字,值为实际参数的值,若以字典形式传入时,注意字典的key必须时字符串
def fun(**kwargs):
print(kwargs)
#调用形式1:
fun(a = 1, b = 2, c = 3)
fun()
#调用形式2
d = {'1':2,'2':3,'3':4}
fun(**d)
5、必须关键字参数
必须关键字参数:对于必须关键字参数 在传入时必须以关键字形式传入,一般需要写在所有参数的最后部分,与其他形式的参数之间用 * 隔开。
def funkw(a, k=0, *, city, age):
print(a)
print(k)
print(city)
print(age)
#正确的调用
funkw(20, city='西安', age=30)
#错误的调用
#funkw(20, k=23, '西安', 30)