Python**kwargs循环中的修改
当我试图运行下面的程序时,我在第二个循环中得到错误消息 第二个func得到了多个值,我希望这个程序在循环中运行。 我的假设是Kwargs Rude不会以相同的值再次更新 问题1:kwargs.update(animal=“Lion”)是修改值的正确方法吗 问题2:为什么我会收到错误消息 以下代码仅用于学习目的,无其他意图。 感谢您的帮助 我使用Python 3.6 第二个函数下面的错误消息(变量1,**kwargs,Rude=“leone”) TypeError:Second_Func()为关键字参数获取了多个值 “粗鲁”Python**kwargs循环中的修改,python,python-3.x,Python,Python 3.x,当我试图运行下面的程序时,我在第二个循环中得到错误消息 第二个func得到了多个值,我希望这个程序在循环中运行。 我的假设是Kwargs Rude不会以相同的值再次更新 问题1:kwargs.update(animal=“Lion”)是修改值的正确方法吗 问题2:为什么我会收到错误消息 以下代码仅用于学习目的,无其他意图。 感谢您的帮助 我使用Python 3.6 第二个函数下面的错误消息(变量1,**kwargs,Rude=“leone”) TypeError:Second_Func()为关键
欢迎来到StackOverflow 这里有几件事
kwargs['animal']='Lion'
就足够了kwargs
实际上只是一本字典,没有什么特别之处。**
只是告诉函数将所有额外的关键字arg合并到该dict中Third\u Func
调用First\u Func
)。因此,在第一次使用时,first_Func
将kwargRude
设置为“leone”
,然后将其传递到函数行。然后,当它再次回到First_Func
时,kwargs
现在包含调用堆栈中的键'Rude'
。然后,您试图将原始的Rude
kwarg(在kwargs
内部)和Rude
的第二个副本通过kwarg文本传递到second\u Func
。当名为kwarg的名称有两个值时,Python不知道您的意思,所以它会像这样崩溃def a(**kwargs):
for key, val in kwargs.items():
print(key, value)
>>a(arg1=2, **{'arg1': 7})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: a() got multiple values for argument 'arg1'
def a(**kwargs):
对于键,kwargs.items()中的val:
打印(键、值)
>>a(arg1=2,***{'arg1':7})
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:a()为参数“arg1”获取了多个值
欢迎来到StackOverflow
这里有几件事
kwargs['animal']='Lion'
就足够了kwargs
实际上只是一本字典,没有什么特别之处。**
只是告诉函数将所有额外的关键字arg合并到该dict中Third\u Func
调用First\u Func
)。因此,在第一次使用时,first_Func
将kwargRude
设置为“leone”
,然后将其传递到函数行。然后,当它再次回到First_Func
时,kwargs
现在包含调用堆栈中的键'Rude'
。然后,您试图将原始的Rude
kwarg(在kwargs
内部)和Rude
的第二个副本通过kwarg文本传递到second\u Func
。当名为kwarg的名称有两个值时,Python不知道您的意思,所以它会像这样崩溃def a(**kwargs):
for key, val in kwargs.items():
print(key, value)
>>a(arg1=2, **{'arg1': 7})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: a() got multiple values for argument 'arg1'
def a(**kwargs):
对于键,kwargs.items()中的val:
打印(键、值)
>>a(arg1=2,***{'arg1':7})
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:a()为参数“arg1”获取了多个值
- 问题1:是的,
是正确的方法之一。但是根据一些观察,比 分配。请阅读更多关于此的信息kwargs.update
- 问题2:因为从
再次调用Third\u Func
,之前收集了所有Kwarg。然后,当First\u Func
再次通过添加Second\u Func
调用,您将得到以下结果 错误请注意,此时Rude=“leone”
已经包含 键kwargs
,这样会出现重复Rude
- 问题1:是的,
是正确的方法之一。但是根据一些观察,比 分配。请阅读更多关于此的信息kwargs.update
- 问题2:因为从
再次调用Third\u Func
,之前收集了所有Kwarg。然后,当First\u Func
再次通过添加Second\u Func
调用,您将得到以下结果 错误请注意,此时Rude=“leone”
已经包含 键kwargs
,这样会出现重复Rude