函数中参数传递的5种方式

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))

 

4、不定长参数
     不定长参数:数需求传入的参数数量不明确的情况下,一般使用 *args或者 **kwargs形式声明参数的形式

    (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)

posted @ 2018-12-02 16:52  蓝紫光  阅读(5614)  评论(0编辑  收藏  举报