分类 Python 下的文章

Django 源码阅读(二): settings懒加载


起步

上一篇提到过,django 会根据不同的 subcommand 来加载不同的模块。在 django 程序的配置文件 settings.py 也能看到 INSTALLED_APPS 用来加载应用模块。而作为可能在整个 web 程序其配置作用的配置模块是如何构建的呢?


Django 源码阅读(一):初探从入口到请求到响应


起步

在我研究完 django 的自动加载机制后,有了阅读 django 源码的想法。那就看看吧,也不知道能坚持到什么地方。我阅读的版本也是我正在使用的 1.10.5 版本,算是比较新的了。

一般运行 django 程序都是通过: python manage.py runserver 开始的,那我们就从这个入口开始。


django中自动重载机制探究


起步

出于好奇,想看看 django 中是如何监听文件的变化,并实现自动重载的。经过分析,它的流程大致是这样的,django 程序启动的时候,会启动两个进程(不是线程),在主线程上,监听文件的变化,当发现有文件变化时,重新启动子进程;而那个子进程就是具体的 web 服务。


python中的无穷大


起步

python中整型不用担心溢出,因为python理论上可以表示无限大的整数,直到把内存挤爆。而无穷大在编程中常常需要的。比如,从一组数字中筛选出最小的数字。一般使用一个临时变量用于存储最后结果,变量去逐个比较和不断地更新。而这临时变量一般要初始无穷大或者去第一个元素的值。


python中精确的浮点数运算


起步

浮点数的一个普遍的问题是它们不能精确的表示十进制数。

>>> a = 4.2
>>> b = 2.1
>>> a + b
6.300000000000001
>>> (a + b) == 6.3
False
>>>

这是由于底层 CPU 和 IEEE 754 标准通过自己的浮点单位去执行算术时的特征。看似有穷的小数, 在计算机的二进制表示里却是无穷的。

一般情况下,这一点点的小误差是允许存在的。如果不能容忍这种误差(比如金融领域),那么就要考虑用一些途径来解决这个问题了。