1.必需参数
必需参数须以正确的顺序传入函数,调用时的数量必须和声明时一样
2.关键字参数
3.默认参数
如果没有传递参数,则会使用默认参数的默认值,默认参数必须放在非默认参数之后
ps:不可变的数据类型是值传递,可变的数据类型是引用传递,默认参数必须指向不变对象
4.不定长参数
ps:可变位置参数必须在可变关键字参数之前
加了星号*的参数会以元组的形式导入(可变位置参数)
def printinfo(arg, *args):
print(arg, args)
printinfo('关键字参数', '不定', 'buding')
------------------
#关键字参数 ('不定', 'buding')
加了两个星号**的参数会以字典的形式导入(可变关键字参数)
def printinfo(arg, **args):
print(arg, args)
printinfo('关键字参数', a=1, b=2)
-------------------------------
#关键字参数 {'a': 1, 'b': 2}
如果单独出现星号 * 后的参数必须用关键字传入
def f(a, b, *, c):
print(a+b+c)
f(1, 2, 3) #错误
f(1, 2, c=3) #正确
5.匿名函数
lambda语法:lambda : [arg1, [arg2,…]]: expression
sum = lambda arg1, arg2: arg1 + arg2
print(sum(1, 2))