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

2024-10-02 20:30:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个模式为“function(a)(**kwargs)”的代码。我只知道“函数(a,**kwargs)”的模式。如果在另一个论题中有第二组论据,这意味着什么?你知道吗

简称为我认为相关的代码如下所示:

我的程序1.py

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

我的程序2.py

from myprog1 import factory
...

class Client(object):
    def __init__(self, operations, factory):
        self.factory = factory

def some_function()
    chk = self.factory(test)(**kwargs)

工厂是一个函数,测试是一个字符串(命名对象)。你知道吗


Tags: 函数代码pyself程序factorydef模式
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. test参数调用self.factory方法。你知道吗
  2. self.factory返回函数
  3. 返回的函数将用参数调用,参数作为参数在some_function中传递。你知道吗

function(a)(**kwargs)使用从**kwargs解压的关键字参数调用function(a)的返回值。例如下面的代码

def f():
    def inner(**ka):
        print(ka) # print received keyword arguments
    return inner # return a callable function object

f()(argument='here')

输出

{'argument': 'here'}

相关问题 更多 >