我正在编写一个非常简单的函数,用于我的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
}
有没有办法在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
答案 0 :(得分:5)
定义函数时,可以使用以下表示法:
def takes_any_args(*args, **kwargs):
pass
args
将成为位置参数的元组,
kwargs
关键字参数的词典
然后您可以使用以下参数调用另一个函数:
some_function(*args, **kwargs)
如果您不想分别传递位置或关键字参数,则可以省略*args
或**kwargs
中的任何一个。您当然可以自己创建元组/字典,它们不必来自def
语句。
答案 1 :(得分:3)
您可以使用动态参数。 direct_to_template
的函数签名是:
def direct_to_template(request, template, extra_context=None, \
mimetype=None, **kwargs):
您可以这样称呼:
args = (request, template)
kwargs = {
'extra_content': { 'a': 'b' },
'mimetype': 'application/json',
'additional': 'another keyword argument'
}
direct_to_template(*args, **kwargs)