partial函数-python学习

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

一个函数可以有多个参数,而在有的情况下有的参数先得到,有的参数需要在后面的情景中才能知道,python 给我们提供了partial函数用于携带部分参数生成一个新函数。

defadd(a,b,c=2):PRint("a is:%s b is %s c is %s"%(a,b,c))returna+b+c

add_with_a_b=partial(add,2,3)print(add_with_a_b())#it's 7add_with_a=partial(add,9)print(add_with_a(10))#it's 21

#################

a is:2 b is 3 c is 2

7

a is:9 b is 10 c is 2

21

下面一个列子是用partial来生成了一个装饰器,用于修改函数的__doc__为另一个函数的

#coding:utf-8'''Created on 2014-10-1

@author: zkchen'''fromfunctoolsimportpartial

PARAMS=("__doc__",)defupdate_params(target,source,params=PARAMS):#将target的在PARAMS中提到的属性设置为source的[setattr(target,p,getattr(source,p,None))forpinPARAMS]returntargetdefupdate_params_wrap(source):returnpartial(update_params,source=source,params=PARAMS)deftest_partial():deffuncA():'''this is funcA's doc'''pass@update_params_wrap(funcA)deffuncB():'''this is funcB's doc'''passprint(funcB.__doc__)

#################################

this is funcA's doc

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航