相关疑难解决方法(0)

如何从Python中的函数中剥离装饰器

假设我有以下内容:

def with_connection(f):
    def decorated(*args, **kwargs):
        f(get_connection(...), *args, **kwargs)
    return decorated

@with_connection
def spam(connection):
    # Do something
Run Code Online (Sandbox Code Playgroud)

我想测试该spam函数而不必经历设置连接的麻烦(或者装饰器正在做的任何事情).

鉴于spam,如何从中删除装饰器并获得底层的"未修饰"功能?

python decorator

58
推荐指数
7
解决办法
2万
查看次数

从代码中调用点击命令

我有一个函数,使用click打包为命令。所以看起来像这样:

@click.command()
@click.option('-w', '--width', type=int, help="Some helping message", default=0)
[... some other options ...]
def app(width, [... some other option arguments...]):
    [... function code...]
Run Code Online (Sandbox Code Playgroud)

我对此功能有不同的用例。有时,可以通过命令行调用它,但是有时候我也想直接调用该函数

from file_name import app
width = 45
app(45, [... other arguments ...]) 
Run Code Online (Sandbox Code Playgroud)

我们该怎么做?我们如何使用click调用已包装为命令的函数?我找到了这篇相关的文章,但是我不清楚如何使它适应我的情况(即,从头开始构建Context类并在click命令功能之外使用它)。

编辑:我应该提到:我不能(轻松)修改包含要调用的函数的程序包。因此,我正在寻找的解决方案是如何从呼叫方进行处理。

python command-line-interface python-click

8
推荐指数
4
解决办法
1681
查看次数