
python
yz764127031
一枚渣渣
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
py_redis : python 实现的简单redis
github: https://github.com/yangzhezjgs/py_redis 为了练习编程而写的一个模拟redis的key-value数据库 (1)实现了redis的五种数据结构,但是仅实现基础的set,get指令 (2)采用epoll实现客户端并发,并添加了threadpool,和lock (3)实现了一个类似redis-cli的客户端shell使用方法:g...原创 2018-04-08 14:25:24 · 814 阅读 · 0 评论 -
Xshell : Python实现的简单shell
原项目为:https://github.com/supasate/yoshXshell对原项目进行了重构(面向对象)和扩展(支持重定向,管道,&) github地址:https://github.com/yangzhezjgs/Xshell支持Python版本:2.7 3.5以上 主要使用Python标准库,需要安装prompt_toolkit++++++2017.9.24更新 (1)用pro原创 2017-08-25 22:53:57 · 19735 阅读 · 5 评论 -
python 进阶指南
https://github.com/yangzhezjgs/advanced-python一份个人笔记和备忘录,包含很多摘抄和示例代码,基本覆盖Python的高级特性和语法。文档用mkdown语法来写,代码多数只能用Python3运行,可以当做一份目录和索引来学习。部分内容较为简略,待完善。原创 2017-08-30 16:25:08 · 365 阅读 · 0 评论 -
python实现简单redis客户端(3)使用asyncio添加异步支持
使用Python3标准库的asyncioasynciofrom socket import *import [email protected] create_connection(host,port, *, loop=None): reader, writer = yield from asyncio.open_connection(host, port, loop原创 2017-08-26 21:25:48 · 2399 阅读 · 0 评论 -
werkzeug实现简单Python web框架(1):MVC模式
Werkzeug是Python的WSGI规范的实用函数库。使用广泛,基于BSD协议。 Flask底层就是使用了Werkzeug。关键点: add_url_rule方法调用,导致视图类通过调用类方法,返回一个闭包,闭包返回一个视图函数,于是建立了url与视图函数的映射关系。代码from werkzeug.wrappers import BaseRequest, BaseResponsefrom原创 2017-09-04 00:22:20 · 3286 阅读 · 1 评论 -
werkzeug实现简单Python web框架(5):扩展思路
通过前面三篇我们已经实现了一个简单的MVC结构的Python web框架,但是这个web框架还有很多不完善,可以进很多不同的扩展。(1)session支持 http是无状态的协议,但是我们可以用session来维持用户的状态(2)http协议相关的扩展 比如重定向,支持上传下载文件(3)如何支持返回json数据(4)添加异常处理(5)也可以继续完善orm实现的方法(6)路由方面:动态路由,正则匹原创 2017-09-04 12:02:38 · 792 阅读 · 0 评论 -
werkzeug实现简单Python web框架(4):添加orm支持
orm代码: 参考前文 Python实现简单orm 将代码复制粘贴到orm.py文件即可。下面我们用一个例子来说明这个简单orm的使用。 (1)新建 scheme.sqldrop database if exists my_user;create database my_user;use my_user;create table users ( `id` varchar(50) not原创 2017-09-04 11:37:27 · 452 阅读 · 0 评论 -
werkzeug实现简单Python web框架(3):添加动态路由
借助werkzeug原生的Map,Rule来添加动态路由支持 修改了 __init__函数和add_url_rule,dispatch_request函数import osfrom werkzeug.wrappers import BaseRequest, BaseResponsefrom werkzeug.exceptions import HTTPException, MethodNotA原创 2017-09-06 11:26:29 · 886 阅读 · 0 评论 -
flask + redis 实现Server-Sent Event demo
学习要点: (1)web即时通讯 Web 即时通信,就是说我们可以通过一种机制在网页上立即通知用户一件事情的发生,是不需要用户刷新网页的。 常用的有Polling,Long-Polling,Server Send Event,WebSocket Server Send Event协议: HTTP 的头部Content-Type设置成text/event-stream就可以了。其实SSE,原创 2017-08-28 13:52:06 · 1732 阅读 · 1 评论 -
一道Python编程题(类方法,getitem与setitem)
一些说明: 题目由来最近加了个接单做大学生编程作业的兼职群,13日一单的其中一道题,然而那单已经被退回去了,因为群里发的时候,我没看到。。感觉题目挺有意思,就花几个小时做了一下。 有两个坑的地方,一个是Account表里是a_id,所以pymysql返回的字典的key是‘a_id’,而下面是{‘id’:’a01’,’balance’:500},所以如果采用 user=bank_user(‘u原创 2018-01-14 01:47:59 · 556 阅读 · 0 评论 -
python 实现具有TTL功能的属性装饰器
题目描述: https://www.shiyanlou.com/challenges/3000 实现一个带 TTL 生存时间功能的属性装饰器。如果每次访问属性时间间隔小于 TTL,则返回相同的缓存值,但是访问间隔大于 TTL 时,则重新计算属性。 说一下做的时候遇到的几个问题: 1.instance是指ttl_property类自身 2.需要self.price = self._pric...原创 2018-03-02 10:42:48 · 1090 阅读 · 0 评论 -
Python实现LRU缓存模拟
LRU LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。 实现原理 利用list记录key的次序,每次set,或get操作将key插入到list首位。 缓冲区满之后再出现set操作,移除末尾的key。 使用Python3 ,key in dict判断key是否出现过,...原创 2018-03-01 11:54:29 · 1833 阅读 · 0 评论 -
Python拾遗
来源:https://zhuanlan.zhihu.com/p/33266239 做了一些归类整理语法 知道python的语法,缩进和符号对应的含义。知道PEP8常见的范式以及代码格式化方法。知道python所有关键字的含义和使用。 del assert知道python中大部分常用的类型(布尔值,字符串类型,数字类型,序列,集合,字典,生成器…)。知道如何编写pyth...原创 2018-03-08 14:45:15 · 429 阅读 · 0 评论 -
python 异步与协程学习
参考: 深入理解Python异步编程 理解 Python asyncio(1)异步非租塞 http://blog.csdn.net/yz764127031/article/details/72459158 以春运火车票为例, 异步—-你使用分流软件抢票,设置好时间类型,软件自动运行 非阻塞—-你不用等抢票结果,可以去做别的事 如何获得结果: 轮询—–每隔一段时间,你看一下抢到票没有原创 2018-02-08 17:04:10 · 378 阅读 · 0 评论 -
python 实现namedtuple(元类)
PS:非原创,网友的代码代码:def namedtuple(tuple_name, attrs): class Meta(type): def __call__(self, *args): return type.__call__(self, args) attrs_set = set(attrs) def __init__(...原创 2018-03-07 17:51:06 · 632 阅读 · 0 评论 -
python web开发入门
ps:最近(18.2.26)对内容做了一些修改。Python web开发通常都是从学习某一种框架开始,比如Django,flask。但是框架封装了太多细节导致初学者难以理解python web开发的本质,写一下自己的经验希望能够对同样迷茫的你有些许帮助。(1)编写一个web服务器 Python web开发是web开发的子集,在学习如何用Python开发web应用之前,我们需要了解web服...原创 2017-05-10 20:24:20 · 30313 阅读 · 0 评论 -
python编程题(继承和元类)
1.实现不可修改的字典def is_immutable(self): raise TypeError('%r objects are immutable' % self.__class__.__name__)class ImmutableDict(dict): def setdefault(self, key, default=None): is_imm原创 2018-01-18 18:26:25 · 1038 阅读 · 0 评论 -
爬虫经验
最近实习写了两个爬虫,使用的工具是requests , bs4, selenium + PhantomJS, 这里写一些总结。 1.ajax 通常可以通过分析js文件,找到数据接口,可以直接获取到数据2.正则表达式re 获取到的json数据格式为:jQuery1910981251106322391_1517453911085({…})就需要用正则表达式来解析数据3.验证码识别 最原创 2018-02-01 11:22:48 · 586 阅读 · 0 评论 -
werkzeug实现简单Python web框架(2):添加jinjia2模板支持
添加了render_template函数,提供了模板支持,并进行了重构将鼓励函数和wsgi接口分开。 代码:import osfrom werkzeug.wrappers import BaseRequest, BaseResponsefrom werkzeug.exceptions import HTTPException, MethodNotAllowed, \ NotImple原创 2017-09-04 11:01:45 · 554 阅读 · 0 评论 -
python实现简单redis客户端(2)重构
将客户端划分为通信模块和客户端模块进行重构from socket import *class Connection: def __init__(self, host="localhost", port=6379): self.host = host self.port = port self.client=socket(AF_INET, SO原创 2017-08-26 00:29:29 · 604 阅读 · 0 评论 -
《python之旅》推荐
地址:http://funhacks.net/explore-python/作者学习Python期间所写的博客整理成书。 建议阅读的章节: (1)字符编码 (2)函数式编程 (3)面向对象 (4)高级特性 概念解释清晰易懂原创 2017-08-06 21:24:28 · 418 阅读 · 0 评论 -
sicp in python
gitbook英文书:https://www.gitbook.com/book/wizardforcel/sicp-in-python/details中文翻译版:https://github.com/wizardforcel/sicp-py-zh豆瓣地址:https://book.douban.com/subject/1148282/SICP是MIT大一的教材,是著名的编程入门书,原书是用Schem原创 2017-05-08 21:25:01 · 2175 阅读 · 0 评论 -
scrapy抓取豆瓣电影TOP250
scrapy入门级的学习 关于scrapy学习的要点: (1)CSS选择器选择元素 scrapy提供CSS和Xpath两种选择器来提取HTML元素,因为我对CSS更熟,这里用的就是CSS。 (2)对item和pipeline的理解 item是存放数据的容器,pipline用来处理抓取后放在item中的数据。 环境 Ubuntu14 Python3.5 scrapy 1.3.3原创 2017-05-26 21:50:21 · 1066 阅读 · 0 评论 -
nginx + uWSGI + flask应用部署
简单写一下过程 操作系统版本:Ubuntu 16.4 主要参考资料: http://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/WSGIquickstart.html 按照上面网址来做就好了 (1)安装软件 apt-get安装ngnix,这种方式安装的版本较低nginx version: nginx/1.10.0 (Ubuntu)sudo apt-原创 2017-05-05 21:28:36 · 371 阅读 · 0 评论 -
Python 实现简易 Shell
本文是实验楼课程的实验报告,课程地址: https://www.shiyanlou.com/courses/647不涉及具体代码之前学习Linux系统编程的时候学习过用C语言编写简单的shell,今天看到用Python实现shell,就想借此机会复习操作系统中shell相关的知识。什么是shell?(1)shell是一个系统软件,负责用户和操作系统内核之间的交互,是产生进程的进程(通过linux系原创 2017-05-10 14:00:14 · 3046 阅读 · 0 评论 -
Python爬取拉勾网招聘信息
此代码运行建议Python3,省却中文编码的麻烦 遇到的几个问题: (1)拉钩网的数据是通过js的ajax动态生成,所以不能直接爬取,而是通过post’http://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false‘来获取信息。一开始没有找到positionAjax.json因为没有在jobs这个目录下,在zhaopin原创 2017-05-29 23:01:58 · 2631 阅读 · 1 评论 -
一个web框架的诞生——写程序最重要的是开心
最近写完了自己的个人项目—— 一个轻量级的 python web框架Light,简单写写总结和心得体会。 完成这个项目的过程中学到的东西大体可以分为两个部分,一个是具有通用性的知识,一个是编写过程中的具体的细节和理解。 通用部分可以分为:1.http协议的理解 2.面向对象的设计思想 3.web框架的理解 4.对一个项目的管理和组织 具体部分就是:1.Python的面向对象的特性 2.Py原创 2017-08-20 23:28:53 · 525 阅读 · 0 评论 -
Python实现简单orm
参考修改了廖雪峰老师的代码 只完成了最基本的功能 数据库连接模块import pymysqlclass BaseDB: def __init__(self, user, password, database='', host='127.0.0.1', port=3306, charset='utf8', cursor_class=pymysql.cursors.DictCursor)原创 2017-08-19 23:37:22 · 834 阅读 · 0 评论 -
flask+mongodb实现简单todolist应用
学习mongodb的小练习 效果 点击submit,显示如下列表 点击done,unifinished 变为 finished 点击delete删除 结构 todolist/ ├── app.py └── templates ├── base.html └── index.html代码 app.pyfrom flask import Flask, j原创 2017-08-11 21:35:32 · 2820 阅读 · 2 评论 -
python实现简单redis客户端(1)
目的: (1)学习各种数据库客户端的原理: 连接数据库服务器的端口,发送协议,受到应答 (2)redis协议 Redis 的通信协议是基于文本的,且以行为划分,每行以 \r\n 结束。每一行都有一个消息头,消息头共分为5种分别如下:+ 表示一个正确的状态信息,具体信息是当前行 + 后面的字符;- 表示一个错误信息,具体信息是当前行-后面的字符;* 表示消息体总共有多少行,不包括当前行,* 后原创 2017-08-16 13:22:14 · 857 阅读 · 0 评论 -
《200行Python代码实现2048》分析
实验地址:https://www.shiyanlou.com/courses/368 实验文档 https://www.shiyanlou.com/courses/368/labs/1172/document 1.有限状态机控制游戏逻辑 利用函数式编程,通过一个字典数据结构建立不同状态和函数之间的映射关系,不同的状态执行不同的函数并且获得新的状态。 while state != 'Ex原创 2017-06-21 23:05:29 · 4094 阅读 · 0 评论 -
tornado websocket 学习demo:简单聊天室
说明: 1.需要在放chat.py的目录下新建template,存放index.html文件 2.使用的时候访问127.0.0.1:8888 3.效果图为: 4.参考:http://blog.csdn.net/lrenjun/article/details/8906099 对原版做了一点修改,主要是 var url = "ws://"+location.host+"/websoc原创 2017-06-02 19:56:44 · 3581 阅读 · 0 评论 -
《Python数据分析与展示》学习笔记(一)numpy数据存储与函数
上一篇地址:http://blog.csdn.net/yz764127031/article/details/72597951一.numpy数据的存储 numpy使用的时候,一般是用ipython进行交互式处理,也就是需要将数据加载到内存。 自然就涉及到了数据的存储。 一种常用的方式就是使用CSV,CSV是一种常见的文件格式,用来存储批量文件。 numpy提供了便利的接口来生成和读取CSV格原创 2017-05-21 16:18:43 · 709 阅读 · 1 评论 -
《Python数据分析与展示》学习笔记(一)numpy入门
中国大学mooc,北京理工大学课程的个人笔记 课程地址: http://www.icourse163.org/course/BIT-1001870002#/info一.数据分析的基础 Python在数据科学领域有一套成熟的工具链,numpy就是整个工具链的基础构件,就像数字电路中的与非门,是其他复杂电路的基础。 numpy在数学中对应的理论就是线性代数,numpy的核心是提供了ndarray原创 2017-05-21 13:27:31 · 2984 阅读 · 1 评论