• 函数之参数详解


    一、实参

        位置实参:不用明确形参名的传参方式,一定按照位置给形参传值
        关键字实参:必须明确形参名字与值为形参传值,可以不用按照位置

    *****
    注:混用
    1.关键字实参必须出现在位置实参后
    2.多个位置实参还是按照位置传参
    3.关键字实参为没有从位置实参拿到值的形参传值,可以不用按照指定顺序

                def fn2(a, b, c, d, e, f):
                  print(a, b, c, d, e, f)

                fn2(10, 20, 30, e=100, f=500, d=200)

     

    二、位置形参范畴

        2.1位置形参 :positional argument

            def fn(a, b, c):
              print(a, b, c)

          位置形参可以由 位置实参 与 关键字实参 来传值

            fn(10, 20, 30)
            fn(a=10, b=20, c=30)

        2.2默认形参

            def fn(a=10,b=20):
              print(a, b)

          默认形参可以由 位置实参 与 关键字实参 来传值,还可以不用传值(采用自身默认值)

            fn()
            fn(20, 30)
            fn(a=200, b=300)
            fn(100) # 就给a传
            fn(b=100) # 就给b传

          **混用
          # 位置形参与默认形参同时存在,默认形参必须在后
            def fn1(a,b,c=10,d=20):
              print(a, b, c, d)

          # 位置形参必须传值,默认形参分情况传值
          fn1(100, 200, d=1000)

        2.3可变长形参

          # 可变长形参会以 元组 形式接受 位置形参与默认形参未接受完的 所有传入的位置实参,用索引来取第几个
          # 可变长形参只能由 位置实参 来传值 *****

            def fn(a, b=10, *args):
              print(a, b)
              print(args)

          # 小细节:可变长形参只能接受位置实参的值,位置实参还必须在关键字实参前,
               导致默认形参只能由位置实参来传值

              fn(1, 20, 100, 200)      # 1给a 20给b,不能用b=20传 100,200给args

    三、关键字形参范畴

        # 前提:出现在 * 之后的形参
          def fn(a, b=10, *, c, d=20, e):
            pass
        # c,d,e都是出现在*之后,都是关键字形参,由于必须由 关键字实参 来传值,没有顺序的强行要求

        # 可变长关键字形参:用来接收没有被关键字形参接收完的关键字形参,也只能由关键字实参来传值

        # 用字典来存放数据
          def fn(**kwargs):
            print(kwargs)
          fn(a=10,b=20)    # {'a': 10, 'b': 20}

          dic = {'x': 100, 'y': 200}
          fn(**dic)      # {'x': 100, 'y': 200}

    四、参数总结

        def fn(a, b, c=10, *args, d, e=20, f, **kwargs):
          pass


        # 位置形参:a、b
        # 默认形参:c
        # 可变长位置形参:args
        # 无初值关键字形参:d、f
        # 有初值关键字形参:e
        # 可变长关键字参数:kwargs

  • 相关阅读:
    docker进入容器命令
    docker复制文件到容器内以及从容器内复制文件到宿主机
    在idea中创建maven父子工程,子工程无法导入父工程依赖的问题
    maven merge 其他分支比如master的方法
    Maven 右边的maven 项目为空 pom文件
    Spark Streaming集成Kafka调优
    spark sql/hive小文件问题
    CompletableFuture详解
    样式绑定styleBinding
    jsonArray图片数组实例
  • 原文地址:https://www.cnblogs.com/yuanlianghong/p/10635966.html
Copyright © 2020-2023  润新知