Python 最佳实践指南 2018 学习笔记
程序员文章站
2022-06-18 20:50:07
[TOC] 基础信息 版本 Python 2.7 Python 3.x Python2.7 版本在 2020 年后不再提供支持,建议新手使用 3.x 版本进行学习 实现 CPython:Python的标准实现; PyPy:用 RPython 实现,目标实在提高性能; JPython:将 Python ......
目录
基础信息
版本
- python 2.7
- python 3.x
python2.7 版本在 2020 年后不再提供支持,建议新手使用 3.x 版本进行学习
实现
- cpython:python的标准实现;
- pypy:用 rpython 实现,目标实在提高性能;
- jpython:将 python 编译成 java 字节码,使其能在 jvm 中运行,目前支持 python2.7;
- ironpython:是 .net 平台下的一种实现,支持 .net 平台下的语言调用 python代码;
- pythonnet:是一个为 python 本地安装和 .net 公共语言运行库(clr)提供无缝整合的软件包;
安装 python
- mac os x
- windows
- linux
在 windows 上安装完成后检查一下是否配置了 python 和 scripts 的环境变量,方便
cmd
快速启动。
虚拟环境
pipenv
virtualenv
//安装 pip3 install virtualenv //查看版本号 virtualenv --version //创建虚拟环境 virtualenv venv //创建一个独立的虚拟环境 virtualenv --no-site-packages venv //激活虚拟环境 source venv/bin/activate //退出虚拟环境 deactivate //删除虚拟环境 rm virtualenv venv //查看帮助 virtualenv -h
python 开发环境
- pycharm
- visual studio code
- visual studio 2017
上述命令在 ubuntu 环境下测试可用,新手在 windows 上开发还是建议使用 pycharm
写出优雅的 python 代码
代码结构
仓库结构
readme.rst license setup.py requirements.txt sample/__init__.py sample/core.py sample/helpers.py docs/conf.py docs/index.rst tests/test_basic.py tests/test_advanced.py
具体模块
位置 | ./sample/ 或 ./sample.py |
---|---|
目的 | 具体代码 |
授权
位置 | ./license |
---|---|
目的 | 法律相关 |
setup.py
位置 | ./setup.py |
---|---|
目的 | 包安装和分发管理 |
依赖文件
位置 | ./requirements.txt |
---|---|
目的 | 开发中的依赖 |
文档
位置 | ./docs/ |
---|---|
目的 | 项目的参考文档 |
测试套件
位置 | ./test_sample.py 或 ./tests |
---|---|
目的 | 软件包集成和单元测试 |
makefile
位置 | ./makefile |
---|---|
目的 | 通用的管理任务。 |
模块
- 使用 import * 会使代码更难阅读,并使得依赖更少的分块。
包系统
面向对象编程
将有上下文和副作用的函数与逻辑函数(称为纯函数)隔离开来,可以获得以下好处:
- 纯函数是确定性的:给定一个固定的输入,输出始终是相同的。
- 纯函数需要重构或优化时,更容易更改或替换。
- 纯函数更易于使用单元测试进行测试:对于复杂的上下文设置和事后的数据清理的需求更少。
- 纯函数更容易操作、修饰和传递。
装饰器
上下文管理器
动态类型
可变和不可变类型
除了 str.join() 和 +,您也可以使用 % 格式运算符来连接确定数量的字符串,但 pep 3101 建议使用 str.format() 替代 % 操作符。
编码风格
- 明确代码意义
- 函数参数
- 必选参数
- 关键字参数
- 任意参数列表 (*args)
- 任意关键字参数字典(**kwargs)
- 避免魔法方法
魔法方法: 改变对象创建和实例化的方式; 改变python解释器导入模块的方式;甚至可能(如果需要的话也是被推荐的)在 python 中嵌入 c 程序。
- 任何不开放给客户端代码使用的方法或属性,应该有一个下划线前缀;
- 建议在函数体中避免使用返回多个有意义的值;
- 习语
- 解包(unpacking)
许多 python 风格指南建议使用单下划线的 _ 而不是这里推荐的双下划线 __ 来标记废弃变量。问题是, _ 常用在作为 gettext() 函数的别名,也被用在交互式命令行中记录最后一次操作的值。相反,使用双下划线 十分清晰和方便,而且能够消除使用其他这些用例所带来的意外干扰的风险。
- 约定
- 检查变量是否等于常量;
- 访问字典元素;
- 访问字典元素:不要使用
dict.has_key()
方法。 相反,使用x in d
语法,或者将默认参数传递给dict.get()
方法。 - 列表推导式,除此之外,map() 和 filter() 函数在列表的操作上也是非常简洁的。
- 读文件;使用
with open
语法来读文件,它能够为你自动关闭文件。
python 应用场景
部署优雅的 python 代码
附录
相关参考
推荐阅读
-
《.Net 最佳实践》 - 学习笔记
-
荐 「「 Python从入门到实践 」」学习笔记(连载中)
-
荐 「「 Python从入门到实践 」」学习笔记(连载中)
-
《Python编程:从入门到实践》个人学习笔记/心得(菜鸟瞎扯淡) Chapter2 变量和简单数据类型
-
《.Net 最佳实践》 - 学习笔记
-
Python 最佳实践指南 2018 学习笔记
-
《Python指南》学习笔记 一
-
【原创】Mybatis学习笔记(二)——一些写mapper配置使用的最佳实践
-
【原创】Mybatis学习笔记(二)——一些写mapper配置使用的最佳实践
-
CSS学习笔记(十六) CSS最佳实践之可维护性篇_html/css_WEB-ITnose