zoukankan      html  css  js  c++  java
  • 函数的不定长参数

    # *args:位置参数,收集成元组
    def func1(*args):
        print(args)
        for i in args:
            print(i)
    
    func1('python', 28, 'man', 'meiguo')
    
    # **kwargs :收集关键字参数,合并字典
    def func2(**kwargs):
        print(kwargs)
        for key, value in kwargs.items():
            print(key)
            print(value)
    
    func2(name='python', age=28, sex='man', weizhi='helan')
    
    
    def fun(a, b, *args, **kwargs):
        """可变参数演示示例"""
        print("a =%d" % a)
        print("b =%d" % b)
        print("args:")
        print(args)
        print("kwargs: ")
        for key, value in kwargs.items():
            print("value=%s" % value)
    
    print("-fu-"*10)
    c = (3, 4, 5)
    d = {"m": 6, "n": 7, "p": 8}  # 传入元组和字典时应该注意加*号,如果不加就当做普通的不定长参数处理
    fun(1, 2, *c, **d)  # 就算不定长形参也是元组,那么会变成给实参的这个元组变成不定长形参的第一个位置
    fun(1, 2, c, d)     # 生拉硬凑一个元组,加个逗号((),)这样。,字典,必须要加双*
                        # 所以以后给不定长形参传入元组和字典一定记得*号
    # 缺省参数在*args后面
    print('-fun-'*10)
    def sum_nums_3(a, *args, b=22, c=33, **kwargs):
        print(a)
        print(b)
        print(c)
        print(args)
        print(kwargs)
    
    sum_nums_3(100, 200, 300, 400, 500, 600, 700, b=1, c=2, mm=800, nn=900)
    # 如果很多个值都是不定长参数,那么这种情况下,可以将缺省参数放到 *args的后面
    # 但如果有**kwargs的话,**kwargs必须是最后的
    # 加了星号(*)的变量args会存放所有未命名的变量参数,args为元组
    # 而加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典
    

      

                                                                       -------  知识无价,汗水有情,如需搬运请注明出处,谢谢!

  • 相关阅读:
    Android中View绘制流程以及invalidate()等相关方法分析
    开机黑屏 仅仅显示鼠标 电脑黑屏 仅仅有鼠标 移动 [已成功解决]
    servlet上传文件报错(一)
    白话经典算法系列之六 高速排序 高速搞定
    POJ1177+线段树+扫描线
    tensorflow compile
    算法编程题的心得体会
    算法编程题的心得体会
    标识变量的使用
    标识变量的使用
  • 原文地址:https://www.cnblogs.com/wf-skylark/p/9008549.html
Copyright © 2011-2022 走看看