zoukankan      html  css  js  c++  java
  • Python标准库--functools模块

    functools模块:管理函数的工具

    partial对象:包装原函数,提供默认值

    import functools
    # 原函数
    def myfunc(a, b=2):
        """Docstring for myfunc()."""
        print(' called myfunc with:', a, b)
        return
    # 输出函数
    def show_details(name, f, is_partial=False):
        print(name)
        print(f)
        if not is_partial:
            print(f.__name__)
        if is_partial:
            print(f.func)
            print(f.args)
            print(f.keywords)
        return
    
    # show_details('myfunc', myfunc)
    # myfunc('a', 3)
    
    p1 = functools.partial(myfunc, b=4)        # 包装后的函数
    show_details('partial with named', p1, True)
    p1('passing a')        # 调用包装后的函数
    p1('override b', b=5)

    复制原函数的属性到partial对象

    functools.update_wrapper(p1, myfunc)      # 注释掉这一行,运行报错
    print(p1.__name__)
    print(p1.__doc__)

    包装实例对象的函数

    class MyClass(object):
        def method(self, a, b=2):
            """Docstring for method()."""
            print(' called method with:', a, b)
            return
    
    o = MyClass()
    
    p1 = functools.partial(o.method, b=4)
    show_details('partial with named', p1, True)
    
    functools.update_wrapper(p1, o.method)
    print(p1.__name__)
    print(p1.__doc__)

    @functools.wraps 装饰器

    def simple_decorator(f):
        @functools.wraps(f)
        def decorated(a='decorated', b=1):
            print(a, b)
            f(a, b=b)
            return
    
        return decorated
    
    wrapped = simple_decorator(myfunc)
    print(wrapped.__name__)
    print(wrapped.__doc__)

    @functools.total_ordering

      为类添加富比较方法,类必须提供__eq__和另一个富比较方法

    @functools.cmp_to_key(cmp_obj)

  • 相关阅读:
    C++学习9 this指针详解
    福建省第八届 Triangles
    UVA 11584 Partitioning by Palindromes
    POJ 2752 Seek the Name, Seek the Fame
    UVA 11437 Triangle Fun
    UVA 11488 Hyper Prefix Sets (字典树)
    HDU 2988 Dark roads(kruskal模板题)
    HDU 1385 Minimum Transport Cost
    HDU 2112 HDU Today
    HDU 1548 A strange lift(最短路&&bfs)
  • 原文地址:https://www.cnblogs.com/wj5633/p/7043956.html
Copyright © 2011-2022 走看看