zoukankan      html  css  js  c++  java
  • Python:参数传递和收集机制

    python参数传递时,主要有位置参数和关键字参数

    1. 位置参数:顾名思义,参数的位置顺序很重要,因为是直接根据位置赋值的。

    def func1(a, b):
        print(a,b)  # 位置参数,位置顺序很重要
    func1(1,2)

    2. 关键字参数:首先使得位置不那么重要了,毕竟参数一多,有些人记不住位置也很正常;其次更重要的是可以提供初始值。

    def func2(c=1, d=2):
        print(c,d)  # 关键字参数,1. 使得位置不那么重要;2. 可提供初始值
    func2()   #使用初始值
    func2(100,200)  #关键字参数也可用位置参数的传递形式
    func2(c=100,d=200)  #变换位置
    func2(d=200,c=200)

    3. 位置参数和关键字参数混合时,位置参数必须全部在关键字参数的前面

    def func3(a, b, c=1):
        print(a,b,c)  # 混合使用时,位置参数必须在前面,否则程序会不知道位置参数对应的值是什么
    func3(1,2,100)
    func3(1,2,c=100)

    4. 通过单星号 '*',收集位置参数,形成元组,但使用的时候也是有序的

    p = (1,2,)
    def func4(*para): # 存多个参数,位置参数收集形成元组
        print(para)
    func4(*p)   #传递的也是元组形式
    func4(*(1,2,))

    5. 通过双星号 '**',收集关键字参数,形成字典

    arg = {'c':1,'d':2}
    def func5(**args): # 存多个参数,关键字参数收集形成字典
        print(args)
        print(args['c'])
    func5(**arg)   #传递形式一
    func5(**{'c':1,'d':2})  # 二,或者显式传递字典

    6. 位置参数和单星号 '*' 收集参数的混合:单星号 '*' 表示收集没有对应位置参数的其他位置参数

    def func6(a, b, *para): # 混合位置参数,*表示收集没有对应位置参数的其他位置参数,即从前排到后,多余的位置参数
        print(a,b)
        print('para:',para)
    func6(1,2,3,4,5)

    7. 关键字参数和双星号 '**' 收集参数的混合:同理双星号 '**' 表示收集没有对应关键字参数的其他关键字参数

    def func7(c=1, d=2, **args): # 混合关键字参数,**表示收集没有对应关键字参数的其他关键字参数,即多余的关键字参数
        print(c,d)
        print('args:',args)
    func7(1,d=2,e=3,f=4)

    8. 位置参数、关键字参数混合单星号收集参数、双星号收集参数:

    def func(a, b, c=1, d=2, *ee, **ff):  #混合关键字参数和位置参数:*和** 分别收集多余的位置参数和关键字参数
        print(a,b,c,d)
        print(ee)  #元组形式使用
        print(ff)  #字典形式使用
    # func(100,200,300,400,c=500,d=600,e=700,f=800)  # TypeError: func() got multiple values for argument 'c',原因是关键字参数也可以按照位置参数传递形式赋值
    func(100,200,c=500,d=600,e=700,f=800)
    func(100,200,300,400,500,600,e=700,f=800)  #从前到后多余的参数分别进入元组(单星号)和字典形式(双星号)

    TypeError: func() got multiple values for argument:因为关键字参数也是可以像位置参数那样直接传递的。

    ##

  • 相关阅读:
    http headers总结
    golang跨域配置
    Kafka中topic的Partition,Kafka为什么这么快,Consumer的负载均衡及consumerGroup的概念
    kafka partition(分区)与 group
    RocketMQ从部署到应用(Golang)
    Codeforces Round #706 (Div. 2)
    关于平衡树
    具体数学 第三章 整值函数
    FFT&NTT&多项式全家桶
    省选测试15
  • 原文地址:https://www.cnblogs.com/qi-yuan-008/p/13033887.html
Copyright © 2011-2022 走看看