Python语言特性(从django_demo中总结)
多重继承,(深度优先,从左到右) MRO C3
1
2
3
4
5
6
7
8
9
10
11# MyBaseClass
# / 5 \
# / \
# TimesClass PlusClass
# 2 / \ 4
# / \
# TimesFiveClass PlusTwoClass
# \ /
# 1 \ / 3
# \ /
# Way- python的继承不同于java,返回值和形参都可以发生变动
元类
meta class
, 在解释类的时候,调用元类的__new__
方法,可根据此特性实现注册的功能- Django中的
ORM
(Object Relational Mapping),根据这一特性,将类转换成数据库的表结构
- Django中的
多态
闭包,使用
nonlocal
关键字或者数组的形式,改变函数外面的值引用变量时,从
- 当前函数的作用域
- 任何外围作用域(包含当前函数的其他函数)
- 包含当前代码的那个模块的作用域(也叫全局作用域)
- 内置作用域(包含基础函数例如
len
和str
等函数的作用域
的顺序去查找变量
变量赋值时
- 若当前函数作用域有这给变量,更改它的值
- 若没有,在当前作用域下创建一个该变量(避免内部变量对外部变量的污染)
- 可以使用
nonlocal
关键字,声明变量,以使得赋值操作赋值到了当前作用域之外, - 可以使用
global
关键字,声明变量,与nonlocal
关系互补 - 在代码长度较长的时候不建议使nonlocal和global关键字,可以使用辅助类来实现
装饰器,
functools.wraps
会把与内部函数相关的重要元数据全部复制到外围函数重载操作符
multiprocessing
,多进程并行计算,分布在多个计算核心上避免GIL锁的干扰
在vscode中配置Python
配置代码补全
Python 常用操作
时间
1 | # 从字符串中读取时间成 struct_time 形式 |
文件
1 |
pdb调试
性能分析
工具
文档中详细介绍了如何在程序中插入cProfile、参数的含义以及结果的解读 使用如下命令,生成性能测试文件 1
python -m cProfile -o result.out -s cumulative myscript.py
可视化展示
安装可视化展示工具 graphviz
Mac 安装命令 1
brew install graphviz
下载python 文件(本站链接),使用下面的命令,将cProfile输出的结果转换成dot图 1
python gprof2dot.py -f pstats result.out | dot -Tpng -o result.png