python之偏函数

摘要:python的设计核心原则就是简洁——在这种原则的指导下,诞生了lambda表达式和偏函数:两者都让函数调用变得简洁。本文主要为你介绍偏函数的应用。python

为何要用偏函数

若是咱们定义了一个函数,好比说将四个数相加add(one ,two,three,four),上层有不少函数须要调用这个函数。在这些调用中,80%的调用传递的参数都是one=1,two=20,若是咱们每都输入相同的参数,这样乏味并且浪费,当然,咱们能够经过默认参数来解决这个问题;可是若是另外咱们也须要参数是one=2,two=10的状况呢?因此,咱们须要一种函数,可以将任意数量的参数的函数转化成带剩余参数的函数对象。session

经过上面,咱们大概明白了什么是偏函数:简单的说,偏函数就是某一种函数带有固定参数的实现,因此,咱们须要:函数

1)给偏函数命名spa

2)传递固定参数设计

from functools import partial
def add(a,b):
    return a+b

p1 = partial(add, 100)

p2 = partial(add, 90)

print('p1=', p1(99))

print('p2=', p2(30))

'''
结果:
p1=199
p2=120    
'''

使用偏函数

结合getattr反射code

            import functools
            class RequestContext(object):
                def __init__(self):
                    self.request = "xxxxx"
                    self.session = "iusdkfjlskdf"

            obj = RequestContext()
            # obj.request
            # obj.session



            def get_data(name):
                return getattr(obj,name)

            request_proxy = functools.partial(get_data,'request')
            session_proxy = functools.partial(get_data,'session')

            request = request_proxy()
            print(request)

            session = session_proxy()
            print(session)
结果:
"xxxxx"
"iusdkfjlskdf"
相关文章
相关标签/搜索