Werkzeug之LocalStack源码解析
Werkzeug之LocalStack源码解析 原博文地址 http://liuyajing.coding.me/blogs/python/2018/werkzeug-localstack/ 一、引入 最近在阅读 Flask 的源码,遇到三个概念:Local 、 LocalStack 和 LocalProxy ,本文主要就针对 LocalStack 概念及其源码进行原理剖析。 二、原理 这个类类似于:class:Local,但是在 storage[ident] 中存放的是一个 key 为 stack,value 为 一个堆列表的形式,例如: >>> ls = LocalStack() >>> ls.push(42) >>> ls.top 42 >>> ls.push(23) >>> ls.top 23 >>> ls.pop() 23 >>> ls.top 42 ''' 它们可以通过使用:class:LocalManager或使用:func:release_local函数强制释放,但正确的方法是在使用后从堆栈中弹出元素。 当堆栈为空时,它将不再绑定到当前上下文(并因此释放)。 通过不带参数调用实例方法,它返回一个代理,该代理解析为堆栈中最顶层的元素。 ''' 三、LocalStack 1. init def __init__(self): self._local = Local()