func(a)是什么意思(** kwargs))

时间:2014-07-09 16:21:38

标签: python

我的代码具有“function(a)(** kwargs)”模式。我只知道模式“函数(a,** kwargs)”。如果在单独的paranthesis中存在第二组参数,这意味着什么?

缩写为我认为相关的代码如下:

myprog1.py

def factory(cid, classes=CLASS_CACHE):
    some code ...

myprog2.py

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是一个字符串(命名一个对象)。

2 个答案:

答案 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)将执行此操作:

  1. 使用self.factory参数调用test方法。
  2. self.factory返回功能
  3. 将使用参数调用返回的函数,该参数在some_function中作为参数传递。