Skip to main content
 首页 » 编程设计

Python 等效于 ActionScript 的 apply()/call() 方法

2025年05月04日25kerrycode

我正在编写一个非常简单的函数,用于在我的 Django 项目中仅在应用程序处于 Debug模式时显示多个页面。在 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 
}  

有没有办法在 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 

请您参考如下方法:

在定义一个函数时,你可以使用这样的表示法:

def takes_any_args(*args, **kwargs): 
    pass 

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

然后您可以使用这些参数调用另一个函数,如下所示:

some_function(*args, **kwargs) 

如果您不想分别传递位置参数或关键字参数,则可以省略 *args 或 **kwargs 中的任何一个。您当然可以自己创建元组/字典,它们不必来自 def 语句。