Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;为关键字参数“获取了多个值”;在python函数中使用*args时,**kwargs_Python_Python 2.7_Keyword Argument - Fatal编程技术网

&引用;为关键字参数“获取了多个值”;在python函数中使用*args时,**kwargs

&引用;为关键字参数“获取了多个值”;在python函数中使用*args时,**kwargs,python,python-2.7,keyword-argument,Python,Python 2.7,Keyword Argument,通过**kwargs传递命名参数请求时,我得到一个错误- Traceback (most recent call last): File "testKwargs.py", line 9, in <module> load_strategy(request="myReq", backend="myBackend", redirect_uri=None, *args, **kwargs) File "testKwargs.py", line 5, in load_stra

通过
**kwargs
传递命名参数
请求时,我得到一个错误-

Traceback (most recent call last):
  File "testKwargs.py", line 9, in <module>
    load_strategy(request="myReq", backend="myBackend", redirect_uri=None, *args, **kwargs)
  File "testKwargs.py", line 5, in load_strategy
    get_strategy("backends", "strategy", "storage", *args, **kwargs)
TypeError: get_strategy() got multiple values for keyword argument 'request'
我原以为
加载策略
**kwargs
中的key
请求
会有一个键值对,该键值对被传递到
获取策略
中的
请求
参数,但情况似乎并非如此


我正在试图找出我在这里遗漏了什么。

您正在传递一个额外的位置参数:

args = ([],)
该元组中有一个值,一个列表对象。它是在传递给
get_strategy()
的其他三个参数之后应用的,因此可以应用于
request
。Python看到您正在调用:

get_strategy("backends", "strategy", "storage", [],
             request="myReq", backend="myBackend", redirect_uri=None, 
             acess_token="myAccToken", id="myId")
4个位置参数分别应用于
后端
策略
存储
请求
参数

如果要传入3个位置参数,请将
args
指定为空元组:

args = ()
一切都很顺利:

>>> def get_strategy(backends, strategy, storage, request=None, backend=None, *args, **kwargs):
...     print request
... 
>>> def load_strategy(*args, **kwargs):
...     get_strategy("backends", "strategy", "storage", *args, **kwargs)
... 
>>> args = ()
>>> kwargs = {"acess_token":"myAccToken", "id":"myId"}
>>> load_strategy(request="myReq", backend="myBackend", redirect_uri=None, *args, **kwargs)
myReq

如果你的意思是
get\u strategy()
不是类的方法,那么是的,我肯定不是这样。事实上,问题中的小代码片段足以重新说明问题。是的,我看到您确实提供了完整的SSCCE,然后看到了错误。
>>> def get_strategy(backends, strategy, storage, request=None, backend=None, *args, **kwargs):
...     print request
... 
>>> def load_strategy(*args, **kwargs):
...     get_strategy("backends", "strategy", "storage", *args, **kwargs)
... 
>>> args = ()
>>> kwargs = {"acess_token":"myAccToken", "id":"myId"}
>>> load_strategy(request="myReq", backend="myBackend", redirect_uri=None, *args, **kwargs)
myReq