1.必需参数

必需参数须以正确的顺序传入函数,调用时的数量必须和声明时一样

2.关键字参数

使用关键字参数允许函数调用时参数的顺序与声明时不一致

3.默认参数

如果没有传递参数,则会使用默认参数的默认值,默认参数必须放在非默认参数之后
ps:不可变的数据类型是值传递,可变的数据类型是引用传递,默认参数必须指向不变对象

4.不定长参数

ps:可变位置参数必须在可变关键字参数之前
加了星号*的参数会以元组的形式导入(可变位置参数)

  1. def printinfo(arg, *args):
  2. print(arg, args)
  3. printinfo('关键字参数', '不定', 'buding')
  4. ------------------
  5. #关键字参数 ('不定', 'buding')

加了两个星号**的参数会以字典的形式导入(可变关键字参数)

  1. def printinfo(arg, **args):
  2. print(arg, args)
  3. printinfo('关键字参数', a=1, b=2)
  4. -------------------------------
  5. #关键字参数 {'a': 1, 'b': 2}

如果单独出现星号 * 后的参数必须用关键字传入

  1. def f(a, b, *, c):
  2. print(a+b+c)
  3. f(1, 2, 3) #错误
  4. f(1 2 c=3) #正确


5.匿名函数

lambda语法:lambda : [arg1, [arg2,…]]: expression

  1. sum = lambda arg1, arg2: arg1 + arg2
  2. print(sum(1, 2))