- 博客(5)
- 资源 (6)
- 收藏
- 关注
转载 python3 使用 上下文管理器 同时读写同一个文件
inplace 函数是个上下文管理器,为同一个文件提供了两个句柄(这个示例中的 infh 和 outfh),以便同时读写同一个文件。from contextlib import contextmanager import io import os @contextmanager def inplace(filename, mode='r', buffering=-1, encoding=Non...
2018-04-20 10:17:17 1750
原创 用__call__ 实现装饰器功能
之前我们用函数方式写了一个装饰器: https://blog.csdn.net/a545578125/article/details/79812878 但是Graham Dumpleton 和 Lennart Regebro 两位大神认为,装饰器最好通过实现 __call__ 方法的类实现,不应该通过函数实现。 下面我们就来尝试一下用类实现装饰器:import time imp...
2018-04-04 15:31:39 691 1
转载 一个参数化的注册装饰器
为了便于启用或禁用 register 执行的函数注册功能,我们为它提供一个可选的 active 参数,设为 False 时,不注册被装饰的函数。 从概念上看,这个新的 register 函数不是装饰器,而是装饰器工厂函数。调用它会返回真正的装饰器,这才是应用到目标函数上的装饰器。为了接受参数,新的 register 装饰器必须作为函数调用registry = set()def re...
2018-04-04 13:26:17 328
转载 使用functools.lru_cache做备忘
标准库中最值得关注的两个装饰器是 lru_cache 和全新的 singledispatch(Python 3.4 新增)。使用functools.lru_cache做备忘functools.lru_cache 是非常实用的装饰器,它实现了备忘(memoization)功能。这是一项优化技术,它把耗时的函数的结果保存起来,避免传入相同的参数时重复计算。LRU 三个字母是“Least Recentl...
2018-04-04 09:55:58 739
转载 functools.wraps 装饰器
通常我们实现的装饰器有几个缺点:不支持关键字参数,而且遮盖了被装饰函数的 __name__ 和 __doc__ 属性。 使用functools.wraps 装饰器可以把相关的属性进行 复制到 。此外,这个新版还能正确处理关键字参数。import time import functools def clock(func): @functools.wraps(func) ...
2018-04-04 09:42:58 280
TA创建的收藏夹 TA关注的收藏夹
TA关注的人