zoukankan      html  css  js  c++  java
  • python参数

        函数参数

            实际参数

                  位置实参:按顺序
                          函数名(数据1,数据2)
                      序列实参:拆
                          函数名(*序列)
                  关键字实参:按名字
                           函数名(形参名1=数据1,形参名2=数据2)
                      字典实参:拆
                           函数名(**字典)

            形式参数:限制实参传递方式


                  默认形参:可选
                          def 函数名(形参名1=数据1,形参名2=数据2)
                  位置形参:必填
                          def 函数名(形参名1,形参名2)
                  命名关键字形参:必须是关键字实参
                          def 函数名(*args,形参名1,形参名2)
                          def 函数名(*,形参名1,形参名2)
                  不定长形参:数量无限
                      星号元组形参:位置实参
                              def 函数名(*args)
                      双星号字典形参:关键字实参
                              def 函数名(**kwargs)

      实际参数

    def func01(p1, p2, p3):
        print(p1)
        print(p2)
        print(p3)
    1. 位置实参:根据顺序与形参对应
    func01(1, 2, 3)
    # TypeError: func01() missing 1 required positional argument: 'p3'
    # 错误:缺少一个位置实参
    # func01(1, 2)
    # TypeError: func01() takes 3 positional arguments but 4 were given
    # 错误:只需要3个位置实参,但是提供了4个
    # func01(1, 2, 3, 4)
    2. 关键字实参:根据名称与形参对应
    func01(p2=2, p1=1, p3=3)
    func01(p3=3, p2=2, p1=1)
    # 为什么要根据名称对应,请听下回分解.
    # func01(p3=3)
    # func01(p3=3, p2=2, p1=1,p4 = 4)
    3. 序列实参:将一个序列拆为多个元素,按顺序与形参对应
    list01 = [1, 2, 3]
    func01(*list01)
    tuple01 = (1, 2, 3)
    func01(*tuple01)
    str01 = "123"
    func01(*str01)
    4.字典实参:将一个字典拆为多个键值对,按名字与形参对应
    dict01 = {"p1": 1, "p3": 3, "p2": 2}
    func01(**dict01)

            形式参数

                默认形参:可选

                        def 函数名(参数名1=默认值,参数名2=默认值)

                位置形参:必填

                        def 函数名(参数名1,参数名2)

    默认形参:def 函数名(参数名1=默认值,参数名2=默认值)

    作用:实参可选
    注意:必须从右向左依次存在
    def func01(p1=1, p2=2, p3=3):
        print(p1)
        print(p2)
        print(p3)
    
    func01(1, 2, 3)
    func01(p3=30)
    View Code

    位置形参:def 函数名(参数名1,参数名2)

    实参必填
    def func02(p1, p2, p3):
        print(p1)
        print(p2)
        print(p3)
    
    func02(1, 2, 3)
    func02(1, 2, p3=3)

            形式参数

                星号元组形参


    星号元组形参     合
    作用:将多个位置实参合并为一个元组
    价值:可以让位置实参数量无限
    注意:建议命名为args
    def func01(*args):
        print(args)
    
    func01()  # 空元组 ()
    func01(1)  # (1,)
    func01(1, 2, 3)  # (1,2,3)
    # 不支持关键字实参
    # func01(p1=1)

            形式参数

                命名关键字形参


    命名关键字形参:
    作用:要求必须是关键字实参
    价值:提高代码可读性
    写法1:星号元组形参后面的位置形参是命名关键字形参
    def func01(*args, p1, p2=0):
        print(args)
        print(p1)
        print(p2)
    
    # func01(1, 2, 3, 4, 5)
    func01(1, 2, 3, p1=4, p2=5)
    func01(p1=4, p2=5)
    func01(p1=4)
    写法2:星号后面的位置形参是命名关键字形参
    注意:星号不是参数,只在修饰后面的参数是命名关键字形参
    def func02(p1, *, p2=0):
        print(p1)
        print(p2)
    
    func02(p1=4, p2=5)
    func02(4, p2=5)
    func02(4)
    命名关键字实参应用:
    # def print(*values, sep=' ', end='
    ')
    # 我叫xx,今年xx岁了.
    name = "悟空"
    age = 10
    # print(f"我叫{name},今年{age}岁了.")
    # 因为print第一个参数是星号元组形参
    # 所以可以传递无限个位置实参
    print("我叫", name, ",今年", age, "岁了.", sep="")
    print("*", end=" ")
    print("*")
    print(1, 2, 3, sep="", end=" ")
    # print(1, 2, 3, "", " ")

            形式参数

                双星号字典形参:


    作用:将多个关键字实参合并为一个字典
    价值:关键字实参数量无限
    def func01(**kwargs):
        print(kwargs)
    
    func01()  # {}
    func01(a=1, b=2)  # {'a': 1, 'b': 2}
    func01(p1=2, p2=2)  # {'p1': 2, 'p2': 2}
    应用:万能参数
    def func02(*args, **kwargs):
        print(args)
        print(kwargs)
    
    func02()
    func02(1, 2, 3)
    func02(a=1, b=2)
    func02(1, 2, 3, a=1, b=2) 
    Live what we love, do what we do, follow the heart, and do not hesitate.
  • 相关阅读:
    APIO 2010 特别行动队 斜率优化DP
    洛谷 P2747 Canada Tour 周游加拿大 动态规划
    VIJOS-P1282 佳佳的魔法照片 排序
    [APIO2012]派遣 可并堆
    可并堆模板题-mergeable heap
    可并堆总结
    分治思想及树上点分治
    拉丁字母(英语)缩写
    区块链是什么?跟比特币有什么关系?
    究竟什么比特币?如何理解比特币?
  • 原文地址:https://www.cnblogs.com/failan/p/13661160.html
Copyright © 2011-2022 走看看