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)

    竹杖芒鞋轻胜马,一蓑烟雨任平生!
  • 相关阅读:
    管理Linux软件——aptitude
    管理Linux软件——apt
    /etc/apt/sources.list 和 /etc/apt/sources.list.d
    JSR303参数校验正则表达式的莫名其妙的错误
    HighCharts 动态设置 series
    template might not exist or might not be accessible by any of the configured Template Resolvers
    springboot 热部署替代方式
    如果访问国外站点慢的话,可以多切换一下运营商,比如开热点。
    当 springboot 部署war包,tomcat报一堆无法解决的问题时
    thymeleaf在开发环境正常,但用jar运行时报错 Error resolving template template might not exist or might not be accessible
  • 原文地址:https://www.cnblogs.com/cdglzz218-blog/p/10054081.html
Copyright © 2011-2022 走看看