[英]Python - Pass named arguments to function object
我收到了有关Web应用程序中过时参数的电话。 我看到了这个帖子...
...现场。
该字段的默认值是在Web服务器启动时设置的。 这很容易测试。 该文件中有一些打印语句,并且已被证明。
因此,现在高级软件工程师的问题是“如何传递参数?”。
那...
myfunc(offset=3):
.... some code
fromdate = fields.DateField('From Date', default=myfunc, validators=[validators.required()])
但是高级软件工程师希望能够在分配函数时内联参数,例如...
fromdate = fields.DateField('From Date', default=myfunc(-10), validators=[validators.required()])
...但不立即调用它。 基本上,在不执行函数对象的情况下存储函数对象及其参数,仍会延迟以使代码在页面加载时运行,而不是在服务器启动时运行。
目前,我们有两个想法。
解决此问题的最佳方法是什么? 我在想,有一种不错的方法不是我刚才描述的两种方法之一,而我们只是还不知道。
您正在描述现有功能functools.partial
:
from functools import partial
fromdate = fields.DateField('From Date', default=partial(myfunc, offset=-10), validators=[validators.required()])
您只需在代码前加上lambda:
即可轻松创建不带参数的可调用对象,即:
fromdate = fields.DateField('From Date', default=lambda: myfunc(-10), validators=[validators.required()])
听起来您可以使用functools.partial:
>>> from functools import partial
>>> fromdate = fields.DateField('From Date', default=partial(myfunc, 10), validators=[validators.required()])
更多信息: https : //docs.python.org/2/library/functools.html#functools.partial
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.