partial函數-python學習


   一個函數可以有多個參數,而在有的情況下有的參數先得到,有的參數需要在后面的情景中才能知道,python 給我們提供了partial函數用於攜帶部分參數生成一個新函數。

def add(a,b,c=2):
    print("a is:%s b is %s c is %s"%(a,b,c))
    return a+b+c
add_with_a_b=partial(add,2,3)
print(add_with_a_b())# it's 7
add_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
'''
from functools import partial
PARAMS=("__doc__",)
def update_params(target,source,params=PARAMS):
    #將target的在PARAMS中提到的屬性設置為source的
    [setattr(target,p,getattr(source,p,None)) for p in PARAMS]
    return target
def update_params_wrap(source):
    return partial(update_params,source=source,params=PARAMS)

def test_partial():
    def funcA():
        '''this is funcA's doc'''
        pass
    @update_params_wrap(funcA)
    def funcB():
        '''this is funcB's doc'''
        pass
    print(funcB.__doc__)
#################################

this is funcA's doc

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM