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)
原文:https://www.cnblogs.com/cdglzz218-blog/p/10054081.html