美文网首页
任意数量的关键字参数

任意数量的关键字参数

作者: ZChao_b56b | 来源:发表于2019-07-27 13:24 被阅读0次
    ## var-keywords parameter
    ## 定义的时候,需要两个星号作为前缀
    
    >>>def func(arg1, arg2, **kwargs):
        print (arg1, arg2, kwargs)
    >>>func("hello", "Dict, values is:", x=2, y=3, z=3)
    hello Dict., values is: {'y': 3, 'x': 2, 'z': 3}
    
    ## 多余的参数将自动被放入字典中提供给函数使用
    ## 如果你需要直接传递字典给函数
    ## 你需要在传递的过程中添加**
    ## 此时如果还有关键字参数应在字典前提供完成
    ## 不能在字典后再提供
    ## 请看下面例子中的输出差异:
    
    >>>func("hello", "Dict., values is:", **{'x':2, 'y':3, 'z':3})
    hello Dict., values is: {'y': 3, 'x': 2, 'z': 3}
    >>>func("hello", "Dict., values is:", **{'x':2, 'y':3, 'z':3,})
    hello Dict., values is: {'y': 3, 'x': 2, 'z': 3}
    >>>func("hello", "Dict., values is:", {'x':2, 'y':3, 'z':3})
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    TypeError: func() takes exactly 2 arguments (3 given)
    >>>func("hello", "Dict., values is:", s=3, **{'x':2, 'y':3, 'z':3,})
    hello Dict., values is: {'y': 3, 'x': 2, 's': 3, 'z': 3}
     
    ## 提供了重复的参数
    
    >>>func("hello", "Dict., values is:", y=3, **{'x':2, 'y':3, 'z':3,})
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    TypeError: func() got multiple values for keyword argument 'y'
    

    相关文章

      网友评论

          本文标题:任意数量的关键字参数

          本文链接:https://www.haomeiwen.com/subject/hjterctx.html