在 Python 3.x 中,如何为另一个纯传递函数创建一个简单的代理函数?

suc*_*awk 2 python python-3.x

在 Python 3.x 中,我想为特定的已知函数proxiedFunc创建一个代理函数_proxy并保证传递的所有参数都完全“转发”,就像它们直接传递给proxiedFunc 一样

# Pseudo-Python code
def _proxy(???generic_parameters???):
        return proxiedFunc(???arguments???)
Run Code Online (Sandbox Code Playgroud)

所说的“纯直通”是什么意思 -> _proxy方法的实现不应受到对proxiedMethod的(非)兼容更改的影响,假设函数名称不变(SOLID 原则)。显然,呼叫者_proxy需要,如果要修改proxiedMethod是不兼容的改变(即我不打算对_proxy是一个适配器,但是这将是一个可能性)。

shx*_*hx2 5

在函数定义中采用“任何东西”的通用方法是使用*args, **kwargs.

在调用另一个函数时,相同的语法用于传递这些参数。

def _proxy(*args, **kwargs):
        return proxiedFunc(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

single *(eg *args) 捕获位置参数,double (eg **kwargs) 捕获关键字参数。

args并且kwargs是您为这些参数容器提供的名称。按照惯例,“any-positional-args”参数的名称是argsor a(其类型是tuple),“any-keyword-args”参数的名称是kwargsor kw(其类型是dict)。