• Python中函数参数 *args 和 **kwargs


    • 普通参数,即在调用函数时必须按照准确的顺序来进行参数传递。
    • 默认参数,即参数含有默认值,在调用函数时可以进行参数传递,若没有进行参数传递则使用默认值,要注意,默认参数必须在普通参数的右侧(否则解释器无法解析)。
    • 元组参数,即 *args,参数格式化存储在一个元组中,长度没有限制,必须位于普通参数和默认参数之后。
    • 字典参数,即 **kwargs,参数格式化存储在一个字典中,必须位于参数列表的最后面。
    ll = [2,5,6] 
    arg = {'name': 'js', 'gender': 'man'}
    
    def func(*args, **kwargs):
        print('args: ')
        print(args)
        print('kwargs :')
        print(kwargs.items())
    
    func(*ll, **arg)
    
    args: 
    (2, 5, 6)
    kwargs :
    dict_items([('name', 'js'), ('gender', 'man')])
    
    • 同时拥有*args和**kwarg形参的函数
    def func(*args, **kwargs):
        print('args: ')
        print(args)
        print('kwargs :')
        print(kwargs.items())
    
    func(2,4,5,name='js',gender='man')
    # 没有指定位置的参数被*arg接收,指定位置的参数被**kwarg接收
    
    args: 
    (2, 4, 5)
    kwargs :
    dict_items([('name', 'js'), ('gender', 'man')])
    

    总结 :和在列表元素匹配,函数使用字典或列表参数(整理参数)和传入字典或列表参数(压缩参数)都有着重要的作用,在装饰器也经常用到,用来接收或者传入任意类型,任意数量的参数,使python语言更动态但是会降低代码可读性,谨慎使用!

    我唯一的害怕,是你们已经不相信了——不相信规则能战胜潜规则,不相信学场有别于官场,不相信学术不等于权术,不相信风骨远胜于媚骨,在这个怀疑的时代,我们仍然要有信仰,信仰努力而不是运气,这个世界虽然不够纯洁,但我仍然相信它还不能埋没真正有才华的人
  • 相关阅读:
    easy-animation | Animation for Sass
    UC手机浏览器(U3内核)相关文档整理
    视差滚动(Parallax Scrolling)的一点小心得
    MVC Filter 返回json格式
    Jquery 实现左右两侧菜单添加、移除
    .Net 发送邮件
    Request.From,Request.QueryString转对象
    DataTable转List,转对象
    SQL Table 自动生成Net底层-控制器Autofac注入
    SQL Table 自动生成Net底层-生成业务层Service
  • 原文地址:https://www.cnblogs.com/wyh0923/p/13912063.html
Copyright © 2020-2023  润新知