Python 最佳实践指南 2018 学习笔记
基础信息
版本
- 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 代码
附录
相关参考
Python 最佳实践指南 2018 学习笔记的更多相关文章
- PYTHON 最佳实践指南(转)
add by zhj: 本文参考了The Hitchhiker's Guide to Python,当然也加入了作者的一些东西.The Hitchhiker's Guide to Python 的gi ...
- Python编程之美:最佳实践指南PDF高清完整版免费下载|百度云盘|Python新手到进阶
百度云盘:Python编程之美:最佳实践指南PDF高清完整版免费下载 提取码:1py6 内容简介 <Python编程之美:最佳实践指南>是Python用户的一本百科式学习指南,由Pytho ...
- python 最佳实践与资源汇总
python 最佳实践 (部分) 一. 结构化工程 文件 功能 README.rst readme LICENSE 许可证 setup.py 打包和发布管理 requirements.txt 开发依赖 ...
- 转载:Google 官方应用架构的最佳实践指南 赞👍
官方给的实践指南,很有实际的指导意义, 特别是对一些小公司,小团队,给了很好的参考意义. 原文地址: https://developer.android.com/topic/libraries/ar ...
- 机器学习实践:《Python机器学习实践指南》中文PDF+英文PDF+代码
机器学习是近年来渐趋热门的一个领域,同时Python 语言经过一段时间的发展也已逐渐成为主流的编程语言之一.<Python机器学习实践指南>结合了机器学习和Python 语言两个热门的领域 ...
- Python机器学习实践指南pdf (中文版带书签)、原书代码、数据集
Python机器学习实践指南 目 录 第1章Python机器学习的生态系统 1 1.1 数据科学/机器学习的工作 流程 2 1.1.1 获取 2 1.1.2 检查和探索 2 1.1.3 清理和准备 3 ...
- 如何让HTTPS站点评级达到A+? 还得看这篇HTTPS安全优化配置最佳实践指南
0x00 前言简述 SSL/TLS 简单说明 描述: 当下越来越多的网站管理员为企业站点或自己的站点进行了SSL/TLS配置, SSL/TLS 是一种简单易懂的技术,它很容易部署及运行,但要对其进行安 ...
- 《jQuery权威指南》学习笔记之第2章 jQuery选择器
2.1 jQuery选择器概述 2.1.1 什么使选择器 2.1.2 选择器的优势: 代码更简单,完善的检测机制 1.代码更简单 示例2-1 使用javascript实现隔行变色 < ...
- Python 日期时间处理模块学习笔记
来自:标点符的<Python 日期时间处理模块学习笔记> Python的时间处理模块在日常的使用中用的不是非常的多,但是使用的时候基本上都是要查资料,还是有些麻烦的,梳理下,便于以后方便的 ...
随机推荐
- ELK学习
[root@log-node1 ~]# cobbler repo add --name=logstash-2.3 --mirror=http://packages.elastic.co/logstas ...
- 卷积在图像处理中的应用(转自https://medium.com/@irhumshafkat/intuitively-understanding-convolutions-for-deep-learning-1f6f42faee1)
直观理解深度学习的卷积 探索使他们工作的强大视觉层次 近年来强大且多功能的深度学习框架的出现使得可以将卷积层应用到深度学习模型中,这是一项非常简单的任务,通常可以在一行代码中实现. 然而,理解卷积 ...
- Git 的一个教程网站(中文、GUI)
交互教学网站:http://learngitbranching.js.org/ Github Repositry (fork)https://github.com/pcottle/learnGitBr ...
- Thinking in Java Chapter 14
From Thinking in Java 4th Edition RTTI(Run-Time Type Information),运行时类型信息,使得你可以在程序运行时发现和使用类型信息.对RTTI ...
- 第30节:Java基础-内部类
内部类 // 外部类 class Demo{ private int num = 3; // 定义内部类 class Int{ void show(){ System.out.println(&quo ...
- Android开发工程师文集-提示框,菜单,数据存储,组件篇
提示框,菜单,数据存储,组件篇 Toast Toast.makeText(context, text, 时间).show(); setDuration();//设置时间 setGravity();// ...
- RSA实现JS前端加密,PHP后端解密
web前端,用户注册与登录,不能直接以明文形式提交用户密码,容易被截获,这时就引入RSA. 前端加密 需引入4个JS扩展文件,jsbn.js.prng4.js.rng.js和rsa.js. <h ...
- 使用 maven-assembly-plugin 打包项目
此种方式可避免resource节点对compile阶段的影响,compile阶段会读取resource节点的信息但是不会读取assembly的配置文件 1. pom文件 <?xml versio ...
- linux下tar.bz2文件的 解压缩方法
一 使用bzip2解压缩命令进行解压缩: bzip2 -d gcc-4.1.0.tar.bz2 二 上面解压完之后执行下面的命令. tar -xvf gcc-4.1.0.tar 或 tar -xvf ...
- Testing - 软件测试知识梳理 - 测试分类
参考信息 软件测试分类 经典软件测试技术分类 软件测试方法汇总 简洁分类 对软件内部结构的深入程度 黑盒测试:又叫功能测试.数据驱动测试或基于需求规格说明书的功能测试. 该测试类别注重于测试软件的功能 ...