python的functools.partial用法解释

在使用bottle的jinja2_template过程中碰到了一个自定义filter的问题,其中bottle关于jinja2_template的定义是这样的:

jinja2_template = functools.partial(template, template_adapter=Jinja2Template)

在.NET中class也是有partial这个概念的,所以从字面理解,jinja2_template应该是template和后边template_adapter=Jinja2Template这个参数之和的结果。官方的解释为:

Return a new partial object which when called will behave like func called with the positional arguments args and keyword arguments keywords.

官方给的例子:

from functools import partial

basetwo = partial(int, base=2)

basetwo.__doc__ = 'Convert base 2 string to an int.'

basetwo('10010')

18

不管你懂没懂,反正我是没懂。最后Google了下,在 这里找到一个简单易懂的例子。摘录如下:

import functools

def add(a, b):

return a + b

add(4, 2)

6

plus3 = functools.partial(add, 3)

plus5 = functools.partial(add, 5)

plus3(4)

7

plus3(7)

10

plus5(10)

15

函数的partial应用

典型的,函数在执行时,要带上所有必要的参数进行调用。然后,有时参数可以在函数被调用之前提前获知。这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用。

所以bottle中使用jinja2_template即等同于template(你传入参数, template_adapter=Jinja2Template)。稍后的文章会再说明如何自定义filters

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值