the*_*vez 11 python syntax dictionary arguments
似乎python的许多方面只是功能的重复.除了我在Python中的kwargs和dict中看到的冗余之外还有一些区别吗?
Tad*_*eck 12
参数解包(许多人使用kwargs
)和传递dict
作为参数之一存在差异:
使用参数解包:
# Prepare function
def test(**kwargs):
return kwargs
# Invoke function
>>> test(a=10, b=20)
{'a':10,'b':20}
Run Code Online (Sandbox Code Playgroud)传递一个词典作为一个论点:
# Prepare function
def test(my_dict):
return my_dict
# Invoke function
>>> test(dict(a=10, b=20))
{'a':10,'b':20}
Run Code Online (Sandbox Code Playgroud)差异主要是:
**kwargs
),在大多数情况下,您可以交换 dicts 和 **kwargs,这是正确的。
例如:
my_dict = {'a': 5, 'b': 6}
def printer1(adict):
return adict
def printer2(**kwargs):
return kwargs
#evaluate:
>>> printer1(my_dict)
{'a': 5, 'b': 6}
>>> printer2(**my_dict)
{'a': 5, 'b': 6}
Run Code Online (Sandbox Code Playgroud)
但是,如果将 kwargs 与其他参数结合使用,则具有更大的灵活性:
def printer3(a, b=0, **kwargs):
return a,b,kwargs
#evaluate
>>> printer3(**my_dict)
(5, 6, {})
Run Code Online (Sandbox Code Playgroud)