在以下情况
def f(kwargs):
kwargs['a'] = 44
print('a: {}, b: {}'.format(kwargs['a'], kwargs['b']))
提供给f()
的词典将按预期进行修改。
那是:
given_dict = {'a': 1, 'b': 2}
f(given_dict) # prints a: 44, b: 2
print(given_dict) # prints {'a': 44, 'b': 2}
^
|__ changed
但是,使用下面的代码时,dict不会被修改:
def g(**kwargs):
kwargs['a'] = 44
print('a: {}, b: {}'.format(kwargs['a'], kwargs['b']))
given_dict = {'a': 1, 'b': 2}
g(**given_dict) # prints a: 44, b: 2
print(given_dict) # prints {'a': 1, 'b': 2}
^
|__ unchanged
为什么g()
没有像f()
那样修改给定的字典?
我期待kwargs['a'] = 44
在两个函数中都会产生相同的效果。