python
很水的长毛怪兽
很菜,很水
展开
-
Python deque学习笔记01
from collections import deque原创 2014-10-12 15:31:24 · 5043 阅读 · 0 评论 -
python源码阅读-闭包实现
一、缘由 听了朋友吹Lua的闭包实现,感觉Lua的闭包实现很优雅,之前也在网上看到一些关于python闭包的源码分析,但是好像很复杂的样子没有细细深究。所以现在好好分析一下。二、开始 以这段代码开始(基于Python 3.4.4,CPython):def f(x): def add(value): return x+value r原创 2016-03-28 00:22:13 · 897 阅读 · 0 评论 -
记一次Nginx+uWsgi+flask部署配置
flask;nginx;uWsgi原创 2016-09-10 16:16:19 · 3581 阅读 · 0 评论 -
flask-tips(01)去掉url末尾的/
后端实现: @mod.before_request def clear_trailing(): from flask import redirect, request rp = request.path print request.query_string if rp != '/' and rp.endswith('/'): rp原创 2016-11-05 16:39:38 · 1624 阅读 · 0 评论 -
python实现短网址系统
前言: 在看了这篇文章短 URL 系统是怎么设计的?之后打算自己实现一个出来。这个系统真的很简单,但是里面包含的内容却不少,体现出基本功。嗯,我的第一想法也是文章所说的最烂的方案短URL系统主要解决下面几个问题: 1·长URL怎么对应短URL(基本) 2·短URL怎么还原成长URL(基本) 3·如何提高并发能力(进阶长URL原创 2016-11-09 22:47:04 · 3610 阅读 · 0 评论 -
flask一次request请求过程 基于tag0.1
以下是基于flask@0.1(从最简单的开始)前提: flask是一个web app,它是跟wsgi_server交互的。他们之间的关系就不在这里叙述了详情请看 WSGI接口从这里开始: def wsgi_app(self, environ, start_response): """The actual WSG原创 2017-02-25 19:05:50 · 829 阅读 · 0 评论 -
gunicorn分析 基于 tag0.2
gunicorn 工作原理1.工作模型 gunicorn采用的是master-worker模型,一个master进程,多个worker进程。master进程负责管理worker进程 def spawn_workers(self): workers = set(w.id for w in self.WORKERS.values()) for i i原创 2017-03-08 22:00:21 · 615 阅读 · 0 评论 -
flask一次request请求过程 基于tag0.2和0.3
前言: 在tag为0.2和0.3的版本中,flask的一次request请求过程没有发生太大的改变。增加的内容: 1·tag为0.2版本中 增加模块化的支持,应该就是blueprint的前身。目的也是为了更好的管理大型项目。例如:app = Flask(__name__)app.register_module(admin, url_prefix='/admin原创 2017-02-26 16:41:43 · 532 阅读 · 0 评论 -
关于闭包
我在这里只是稍稍总结闭包(closure)的一下特点,详细的解释还是参考下面的两个链接吧。1·闭包是词法闭包(Lexical Closure)的简称,是由函数和与其相关的引用环境组合而成的实体。ta是一种特殊的数据结构,ta的scope(作用域)也是一种叫做lexical scope,还有一个概念就是free variable2·python中可以这么实现一个闭包:de转载 2016-01-12 00:10:25 · 382 阅读 · 0 评论 -
python 实现逆波兰式
复习实习数据结构: 实现逆波兰式其实搞懂里面的规则就很简单的了。树的遍历:前序:根左右。中序:左根右。后序:左右根直接上代码import operatoropMap = {'+':operator.add,'-':operator.sub,"/":operator.truediv,"*":operator.mul}proMap = {'(':100,'+':原创 2015-12-14 22:01:31 · 3072 阅读 · 0 评论 -
Python3.4的Pillow库实现验证码图片
简单来说实现验证码就是一下几个步骤随机几个验证码字符将字符draw到image上添加一下干扰旋转,模糊,锐化imagefrom PIL import Image,ImageDraw, ImageFont, ImageFilterimport random_letter_cases = 'abcdefghjkmnpqrstuvwxy'_upper_cases = _letter_cases原创 2014-12-16 22:37:25 · 7794 阅读 · 1 评论 -
python描述符Descriptor
Descriptor(描述符)这个概念比较难解释。参考一下的顺序进行阅读和理解定义了__get__,__set__或__delete__方法的类 称为描述符对象1·官方文档 看完并没有个卵用 2·Python描述符(descriptor)解密 结合例子理解3·Python之美[从菜鸟到高手]--玩转描述符和属性 玩转描述符和属性4·python cookbook pytho原创 2015-06-03 00:30:54 · 477 阅读 · 0 评论 -
python yield send
def cd(n): while n>=0: print("first n:"+str(n)) newn = yield n print("second n:"+str(n)) print("fist newn:"+str(newn)) if newn is not None:原创 2015-05-18 23:36:39 · 592 阅读 · 0 评论 -
python 内存管理简单总结
1·python的垃圾回收机制主要是使用引用计数法,即为,每个生成的对象增加一个计数器,当这个计数器为0的时候进行垃圾回收。2·但是引用计数法不能解决循环引用问题,即为A引用了B,B引用了A,A,B的引用数都为1,但是明显A,B也垃圾,应该回收了*-那么python因为GC模块来解决循环引用问题。方案是:标记-清除法。原理,将所有的对象拷贝一份出来,寸成一个双向链表,然后对每个原创 2015-05-22 20:07:37 · 551 阅读 · 0 评论 -
python小技巧
1·list表头插入元素 a. list.insert(0,obj) b. list[0:0] = [obj]原创 2015-05-24 14:53:37 · 373 阅读 · 0 评论 -
python赋值总结和分片操作
在python中,对于值只有两种,要么可变(list,dict,tuple),要么不可变(int,long,str)。很多时候要理解赋值过程,可以将其看作成一个指针操作。例如:a = 4;#一个名叫a的指针指向一个值为4的地址空间b = [2,3,4,5]#一个名为b的指针指向一个list。那么对于分片操作就很好理解了。 a = [2,3,4];b = a[:]原创 2015-05-17 21:15:46 · 1889 阅读 · 0 评论 -
简单实现flask route
import reclass NotFlask():def __init__(self):self.routers = [];@staticmethoddef build_router_re(route):route_regex = re.sub('()',r'(?P\1.+)',route)route_reg_str = "^{}$".format(route转载 2015-07-19 12:05:36 · 1651 阅读 · 0 评论 -
python是一门动态语言
Python 3.4.3 通过下面的例子,来说说。import sysdef modu(x,y): return x%yprint(modu(7,4))print(modu("hello %s","world"))第一个输出是3,第二个输出呢?you try try。那么原因到底为何?原因在此转载 2015-08-15 16:26:04 · 624 阅读 · 0 评论 -
WebServer和python app之间的联系
WebServer和App的那些事webserver服务器与python app的联系是比较简单的。根据WSGI接口协议,App端只要定义def simple_app(environ, start_response)一个接口两个参数的callable obj就可以了。 在WebServer端则需要:import os, sysdef run_with_cgi(application): en原创 2017-03-20 21:17:11 · 860 阅读 · 0 评论