zoukankan      html  css  js  c++  java
  • 函数中参数传递的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)

    竹杖芒鞋轻胜马,一蓑烟雨任平生!
  • 相关阅读:
    Python动态展示遗传算法求解TSP旅行商问题
    MOEAD算法中均匀权向量的实现---Python
    HDU 5294 多校第一场1007题 最短路+最小割
    POJ 3261 Milk Patterns sa+二分
    HDU 4292 FOOD 2012 ACM/ICPC Asia Regional Chengdu Online
    CodeForces 201A Clear Symmetry
    POJ 1679 The Unique MST 确定MST是否唯一
    POJ 3268 Silver Cow Party 最短路 基础题
    POJ 2139 SIx Degrees of Cowvin Bacon 最短路 水題
    POJ2229 Sumsets 基礎DP
  • 原文地址:https://www.cnblogs.com/cdglzz218-blog/p/10054081.html
Copyright © 2011-2022 走看看