![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python食谱
文章平均质量分 65
你抱着的是只熊
hello 世界
展开
-
1024来一发占坑
PASSPASS原创 2019-10-24 11:26:47 · 3656 阅读 · 0 评论 -
函数闭包理解
函数闭包理解# coding:utf-8# 闭包=函数+环境变量(外部的但不是全局的变量)# 返回函数及函数现场def curver_pre(): a = 25 def curver(x): # a不能在内部赋值,否则会被python认为是局部变量 return a*x*x return curverif __name__ ...原创 2019-10-17 23:33:24 · 5449 阅读 · 0 评论 -
实现简单的并行编程
问题我们有一个执行了大量CPU密集型工作的程序,现在想让它利用多个CPU的优势运行得更快些解决方案concurrent.future库中提供了一个ProcessPoolExecutor类,可用来在单独运行的python解释器实例中执行计算密集型的函数。# coding:utf-8from concurrent.futures import ThreadPoolExecutor, Proc...原创 2019-09-29 22:34:12 · 3864 阅读 · 0 评论 -
让属性具有惰性求值的能力
问题我们想将一个只读的属性定义为property属性方法,只有在访问它时才参与计算。但是,一旦访问了该属性,我们希望把计算出的值缓存起来,不要每次访问它时都重新计算。解决方案:# coding:utf-8import mathclass lazyproperty: def __init__(self, func): self.func = func ......原创 2019-09-11 23:58:12 · 3586 阅读 · 0 评论 -
当创建大量实例如何节省内存
问题当程序需要创建大量的实例时,那么程序就会占用大量的内存,我们想要节省内存的话该怎么做呢?解决方案在类中使用__slots__属性class Date: __slots__ = ['year', 'month', 'day'] def __init__(self, year, month, day): self.year = year s...原创 2019-09-01 23:09:55 · 3623 阅读 · 0 评论 -
在类中定义装饰器
问题如何在类中定义装饰器,并将其应用到其它函数或者方法上解决方案# coding:utf-8from functools import wrapsclass A: # decorator as an instance method @ staticmethod def decorator1(func): @wraps(func) ...原创 2019-08-27 23:24:29 · 4415 阅读 · 0 评论 -
定义一个可接受参数的装饰器
问题怎么编写一下可以接受参数的装饰器解决方案我们想编写一个可以为函数添加日志功能的装饰器,但是又允许用指定日志的级别及其它细节。from functools import wrapsimport loggingdef logged(level, name=None, message=None): """ some explain. :param level:...原创 2019-08-22 22:43:29 · 3652 阅读 · 0 评论 -
抽象超类
先上代码:# coding:utf-8class Super: def method(self): print("in Super.method") def delegate(self): self.action()class Inheritor(Super): passclass Replaced(Super): ...原创 2019-08-11 14:07:49 · 3932 阅读 · 0 评论 -
在类中定义多个构造函数
问题如果想让用户能够以多种方式创建实例,而不局限于__init()__方法,可以用下面的解决方案import timeimport timeclass Date: def __init__(self, year, month, day): self.year = year self.month = month self.day...原创 2019-08-18 23:18:09 · 9762 阅读 · 0 评论 -
如何绕过init来创建实例
问题我们需要创建一个实例,但是出于某些原因想绕过__init__魔术方法,用别的方式来创建。解决方案可以直接调用类的__new__()方法来创建一个未被初始化的实例。例如:# coding:utf-8import timeclass Date: def __init__(self, year, month, day): self.year = year ...原创 2019-08-19 21:36:59 · 3757 阅读 · 0 评论 -
元编程之给函数添加一个包装
前言软件开发中最重要的一条真理是"don’t repeat yourself",即不要重复自己的工作。也就是说,在任何时候,需要创建高度重复的代码或者需要复制粘贴源码时,通常这时都需要寻找一个更加优雅的解决方案!!!在PYTHON中,我们称这为"元编程"!元编程的主要目的是创建函数和类,并用它们来操纵代码;例如:修改、生成或包装已存在的代码。python中基于这个目的的主要特性包括装饰器,类装...原创 2019-08-21 22:28:31 · 3608 阅读 · 0 评论 -
利用装饰器对函数参数强制执行类型检查
问题为函数参数添加强制性的类型检查的功能。解决方案# coding:utf-8from inspect import signaturefrom functools import wrapsdef typeassert(*ty_args, **ty_kwargs): # if in optimized mode ,disable type checking if not __...原创 2019-08-25 22:44:30 · 3635 阅读 · 0 评论