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)

时间: 2024-10-17 13:20:45

Python标准库--functools模块的相关文章

Python 标准库 ConfigParser 模块 的使用

Python 标准库 ConfigParser 模块 的使用 demo #!/usr/bin/env python # coding=utf-8 import ConfigParser import sys config = ConfigParser.ConfigParser() #写入 config.add_section("Inc_basic") config.set("Inc_basic","name","iPIN")

[python标准库]XML模块

1.什么是XML XML是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分.您可以创建内容,然后使用限定标记标记它,从而使每个单词.短语或块成为可识别.可分类的信息. XML有以下几个特点. XML的设计宗旨是传输数据,而非显示数据. XML标签没有被预定义.您需要自行定义标签. XML被设计为具有自我描述性. XML是W3C的推荐标准. 其解析流程如下图: 2.常用解析XML的Python包 Python的标准库中,提供了6种

【python】Python标准库defaultdict模块

来源:http://www.ynpxrz.com/n1031711c2023.aspx Python标准库中collections对集合类型的数据结构进行了很多拓展操作,这些操作在我们使用集合的时候会带来很多的便利,多看看很有好处. defaultdict是其中一个方法,就是给字典value元素添加默认类型,之前看到过但是没注意怎么使用,今天特地瞅了瞅. 首先是各大文章介绍的第一个例子: 代码如下: import collections as coll def default_factory()

Python标准库--os模块

这个模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下运行.一个例子就是使用os.sep可以取代操作系统特定的路径分割符. 下面列出了一些在os模块中比较有用的部分.它们中的大多数都简单明了. os.name字符串指示你正在使用的平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'. os.getcwd()函数得到当前工作

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 (cmp_to_key, lru_cache, total_ordering, partial, partialmethod, reduce, singledispatch, update_wrapper, wraps)

functools模块处理的对象都是其他的函数,任何可调用对象都可以被视为用于此模块的函数. 1. functools.cmp_to_key(func) 因为Python3不支持比较函数,cmp_to_key就是将老式的比较函数(comparison function)转换成关键字函数(key function),与能够接受key function的函数一起使用,比如说sorted,list.sort, min, max, heapq.nlargest, itertools.groupby等等.

[python标准库]Logging模块

1.模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同的日志等级,在release版本中只输出重要信息,而不必显示大量的调试信息: print将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看其它数据:logging则可以由开发者决定将信息输出到什么地方,以及怎么输出: 模块提供logger,handler,filter,formatter. logger

Python——标准库 Sys模块

------------------------------------------------------------------------------------------------------ sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. 处理命令行参数 在解释器启动后, argv 列表包含了传递给脚本的所有参数, 列表的第一个元素为脚本自身的名称. ---------------------------------------------------

[python标准库]Time模块

在python中,通常有以下几种方式来表示时间: 时间戳:表示的是从1970年1月1日00:00:00开始按秒计算的偏移量. 格式化时间:struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时) 字符串时间:xxx年xxx月xxxx日 import time s1 = time.localtime(23213123) # 将时间戳转化为结构化时间 s2 = time.mktime() # 将结构化时间转化为时间戳 s3 = time.str