我的代码具有“function(a)(** kwargs)”模式。我只知道模式“函数(a,** kwargs)”。如果在单独的paranthesis中存在第二组参数,这意味着什么?
缩写为我认为相关的代码如下:
def factory(cid, classes=CLASS_CACHE):
some code ...
from myprog1 import factory
...
class Client(object):
def __init__(self, operations, factory):
self.factory = factory
def some_function()
chk = self.factory(test)(**kwargs)
factory是一个函数,test是一个字符串(命名一个对象)。
答案 0 :(得分:3)
function(a)(**kwargs)
调用function(a)
的返回值,其中关键字参数从**kwargs
解压缩。例如以下代码
def f():
def inner(**ka):
print(ka) # print received keyword arguments
return inner # return a callable function object
f()(argument='here')
输出
{'argument': 'here'}
答案 1 :(得分:2)
**kwargs
是一种语法结构,它从字典中生成函数参数。例如:
def a(b, c):
print b + c
args = {'b': 1, 'c': 2}
a(**args) # will print 3
在您的代码中,搜索kwargs的定义。我打赌你some_function
在参数列表中有**kwargs
,如下所示:
def some_function(**kwargs):
因此,您的代码chk = self.factory(test)(**kwargs)
将执行此操作:
self.factory
参数调用test
方法。self.factory
返回功能some_function
中作为参数传递。