美文网首页
Python 偏函数functools

Python 偏函数functools

作者: raingolee | 来源:发表于2016-09-23 00:05 被阅读45次

    最近在看一些源码时候,发现大家都喜欢用functiools partial,其实就是想把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。

    下面我举个例子

    class Sample(object):
        def __init__(self):
            pass
    
        def __wrap(self, method, *args, **kwargs):
            key = args[0]
            server = self.get_server(key)
            f = getattr(server, method)
            return f(*args, **kwargs)
    
        def __getattr__(self, method):
            if method in ['set', 'get']:
                return functools.partial(self.__wrap, method)
            else:
                raise NotImplementedError("method '%s' cannot be sharded" % method)
    
    ---
    instance = Sample()
    instance.set('name', 'raingo') #等价于__wrap(method='set', 'name', 'raingo')
    
    

    这里我们主要看return functools.partial(self.__wrap, method)这语句,其实就是去执行__wrap()函数,并默认把method这个变量传进去__wrap()函数,并且传给set方法的参数也传给了__wrap()函数

    相关文章

      网友评论

          本文标题:Python 偏函数functools

          本文链接:https://www.haomeiwen.com/subject/bfqtyttx.html