懒惰对象代理模块
lazy_object_proxy
懒惰对象代理模块:lazy_object_proxy
探索该模块:这个模块有何用?
>>> import lazy_object_proxy >>> def expensive_func(): ... a = 2 ... b = 2 ... print("开始计算") ... return a*b ... >>> expensive_func() 开始计算 4 >>> obj <Proxy at 0x0000029E6A262A48 with factory <function expensive_func at 0x0000029E6A0FD708>> >>> print(obj) 开始计算 4 >>> obj <Proxy at 0x0000029E6A262A48 wrapping 4 at 0x00007FFD772F7160 with factory <function expensive_func at 0x0000029E6A0FD708>> >>> print(obj) 4分析上面的代码:懒惰对象代理模块处理过后的函数对象,第一次调用时会全部执行里面的输出语句,而第二次不会调用但是会输出函数的返回值。
#-*-coding:GBK-*- import lazy_object_proxy #导入懒性对象代理模块 from time import sleep def expensive_func(): print("Starting calculation") #Just as example for a very slow computation sleep(2) print("Finished calculation") #return the result of the calculation return 10 obj = lazy_object_proxy.Proxy(expensive_func) #Function is called only when object is actually used (仅当实际使用对象时才调用函数) print(obj) #Now expensive_func is called (expensive_func函数被调用) print(obj) #The result without calling the expensive_func (这里的结果没有调用expensive_func函数)pypi地址:https://pypi.org/project/lazy-object-proxy/
【设计模式】代理模式 ( 代理模式结构 | 客户端 | 主题对象 | 被代理对象 | 代理对象 )设计模式的代理模式
【设计模式】代理模式 ( 动态代理使用流程 | 创建目标对象 | 创建被代理对象 | 创建调用处理程序 | 动态创建代理对象 | 动态代理调用 )动态代理是代理模式吗
代理模式(静态代理模式、动态代理模式、cgLib代理模式、拦截器)动态代理模式
代理模式-静态代理模式 代理模式-动态代理(基于接口,JDK动态代理)动态代理是代理模式吗
设计模式之代理模式、动态代理模式、Cglib代理模式动态代理是代理模式吗
【设计模式】代理模式 ( 动态代理 | 模拟 Java 虚拟机生成对应的 代理对象 类 )设计模式的代理模式