Python相当于ActionScript的apply()/ call()方法?

Naf*_*Kay 1 python

我正在编写一个非常简单的函数,用于我的Django项目,只有在应用程序处于调试模式时才显示多个页面.在AS3中,您基本上可以使用该方法的调用或应用方法将方法参数应用于其他方法.让我来证明:

public function secureCall(...arguments):void {
    if (SECURE == true) {
        // reference the 'call' method below
        call.apply(this, arguments);
    } else {
        throw new IllegalAccessError();
    }
}

public function call(a:String, b:int, ...others):void {
    // do something important
} 
Run Code Online (Sandbox Code Playgroud)

有没有办法在Python中执行此操作?我基本上想要做以下事情:

from django.views.generic.simple import direct_to_template

def dto_debug(...args):
    if myapp.settings.DEBUG:
        direct_to_tempate.apply(args)
    else:
        raise Http404
Run Code Online (Sandbox Code Playgroud)

yak*_*yak 5

定义函数时,可以使用以下表示法:

def takes_any_args(*args, **kwargs):
    pass
Run Code Online (Sandbox Code Playgroud)

args将是一个位置参数的元组, kwargs一个关键字参数的字典

然后,您可以使用以下参数调用另一个函数:

some_function(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

您可以省略的*args或者**kwargs,如果你不希望传递位置或关键字参数,分别.你当然可以自己创建元组/字典,它们不必来自def声明.