Python functools.partial

    def declare_consumer(self, consumer_cls, topic, callback):
        """Create a Consumer using the class that was passed in and
        add it to our list of consumers
        """

        def _connect_error(exc):
            log_info = {‘topic‘: topic, ‘err_str‘: str(exc)}
            LOG.error(_("Failed to declare consumer for topic ‘%(topic)s‘: "
                      "%(err_str)s") % log_info)

        def _declare_consumer():
            consumer = consumer_cls(self.conf, self.channel, topic, callback,
                                    six.next(self.consumer_num))
            self.consumers.append(consumer)
            return consumer

        return self.ensure(_connect_error, _declare_consumer)

    def declare_direct_consumer(self, topic, callback):
        """Create a ‘direct‘ queue.
        In nova‘s use, this is generally a msg_id queue used for
        responses for call/multicall
        """
        self.declare_consumer(DirectConsumer, topic, callback)

    def declare_topic_consumer(self, topic, callback=None, queue_name=None,
                               exchange_name=None):
        """Create a ‘topic‘ consumer."""
        self.declare_consumer(functools.partial(TopicConsumer,
                                                name=queue_name,
                                                exchange_name=exchange_name,
                                                ),
                              topic, callback)

    def declare_fanout_consumer(self, topic, callback):
        """Create a ‘fanout‘ consumer."""
        self.declare_consumer(FanoutConsumer, topic, callback)

functools.partial可以提供对象的默认参数而生成一个新的访问形式,方便统一代码调用形式。以上代码中TopicConsumer类和FanoutConsumer类及DirectConsumer类的构造函数存在差异,如果不使用functools则需要在declare_consumer中进行判断

Python functools.partial

时间: 2024-10-04 16:05:56

Python functools.partial的相关文章

【Python functools.partial 偏函数】 -- 2019-08-08 18:01:31

原文: http://106.13.73.98/__/124/ Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一样. functools.partial可以帮助我们创建一个偏函数,如下示例: """自己定义的偏函数""" def int1(x, base=2): return int(x, base) print(int1('100000

【Python functools.partial 偏函数】 -- 2019-08-09 12:09:26

原文: http://106.13.73.98/__/124/ Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一样. functools.partial可以帮助我们创建一个偏函数,如下示例: """自己定义的偏函数""" def int1(x, base=2): return int(x, base) print(int1('100000

【Python functools.partial 偏函数】 򟱾

原文: http://blog.gqylpy.com/gqy/349 " Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一样. functools.partial可以帮助我们创建一个偏函数,如下示例: """自己定义的偏函数""" def int1(x, base=2): return int(x, base) print(in

python标准库--functools.partial

官方相关地址:https://docs.python.org/3.6/library/functools.html 一.简单介绍: functools模块用于高阶函数:作用于或返回其他函数的函数.一般而言,任何可调用对象都可以作为本模块用途的函数来处理. functools.partial返回的是一个可调用的partial对象,使用方法是partial(func,*args,**kw),func是必须要传入的,而且至少需要一个args或是kw参数. 创建一个功能函数,实现三个数的相加,如果其中的

python:functools之partial

示例:from operator import addimport functoolsprint add(1,2) #3add1 = functools.partial(add,1)print add1(10) #11 原型:new_func = functools.partial ( func[, *args][, **keywords] ) 返回func函数句柄,作用就是把keywords,args的参数传入到func中后,生成一个新的函数,其实仍然是func函数,只是一些参数已经代入

python的functools.partial的应用

functools.partial是类似于创造"可移动"函数的意思,参数的第一个是函数名,其他的是这个函数其他参数,例如: generator_func = functools.partial( tf.random_uniform, [], minval=min_scale_ratio, maxval=max_scale_ratio, dtype=tf.float32, seed=seed) 这时候的generator_func 就是移动函数名,类似于函数指针,可以传参,但是经过&qu

python functools模块

functools.partial 作用: functools.partial 通过包装手法,允许我们 "重新定义" 函数签名 用一些默认参数包装一个可调用对象,返回结果是可调用对象,并且可以像原始对象一样对待 冻结部分函数位置函数或关键字参数,简化函数,更少更灵活的函数参数调用 #args/keywords 调用partial时参数 def partial(func, *args, **keywords): def newfunc(*fargs, **fkeywords): newk

Python——functools

该模块为高阶函数提供支持——作用于或返回函数的函数被称为高阶函数.在该模块看来,一切可调用的对象均可视为本模块中所说的“函数”. 目录 一.模块方法 1. functools.cmp_to_key(func) 2. functools.total_ordering(cls) 3. functools.reduce(function, iterable[, initializer]) *4. functools.partial(func[,*args][, **keywords]) 5. func

functools.partial 偏函数

import functools int2 = functools.partial(int, base=2) int2('1000000') 固定一个参数