Memory

描述器的意义

Python描述器有什么用

场景 因为Python是动态语言,所以变量不需要声明类型。而这样的话,有时候我们想做一些限制,就会比较麻烦。比如我们想在 Human 类里想对 name 这个属性做一下类型限制,可能就需要这样写: class Human: @property def name(self): return self._name @name.setter de...

Pipenv的使用

虚拟环境:Python各种虚拟环境工具的比较

前言 之前就听说过pipenv,但是没有怎么研究过怎么使用,还是用着virtualenv。前两天闲了翻了下文档,发现还是挺好用的一个工具,这个项目在github上已经11k个star。 Pipenv是什么 Pipenv说白了就是一个虚拟环境的工具,跟传统的virtualenv起到的作用类似,只是使用起来更加方便,方便在哪?这是文档上说的一些优点: 你不用繁琐的切进virtuale...

Python2的命名空间泄露

列表推导式与命名空间

看下面一段代码: >>> i = 1 >>> [i for i in range(5)] 然后在 Python 2 和 Python 3 里打印出 i 的值,会发现它们是是截然不同的。 Python 2 >>> i 4 Python 3 >>> i 1 出现这种情况,是因为在 Python 2 里列表推导...

记一次SQL查询语句

SQL的行转列

由来 项目里有个表结构就是类似下图这种表结构: 需求是:根据时间戳(timestamp)进行分组,然后输出这个时间戳下状态(status)为hit和miss的请求数的和和流量的和,返回json效果类似下面: [ { "timestam": 1527782400, "hit": 24, "hitFlow": 241, ...

Django安装app需要注意的问题

从一个BUG说起

前言 这几天在写项目的时候遇见了一个BUG,就是application明明安装了,却总是报错,后来进源码研究了一下,发现了里面的玄机。 问题的由来 先看看项目布局,目录类似下面这种: 然后配置文件里是这样安装application的: 好,如果现在这种情况直接运行会报如下的错: 这个报错信息什么意思呢,就是说模型类没有声明app_label并且没在安装的application里...