基础信息

版本

  • 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 学习笔记的更多相关文章

  1. PYTHON 最佳实践指南(转)

    add by zhj: 本文参考了The Hitchhiker's Guide to Python,当然也加入了作者的一些东西.The Hitchhiker's Guide to Python 的gi ...

  2. Python编程之美:最佳实践指南PDF高清完整版免费下载|百度云盘|Python新手到进阶

    百度云盘:Python编程之美:最佳实践指南PDF高清完整版免费下载 提取码:1py6 内容简介 <Python编程之美:最佳实践指南>是Python用户的一本百科式学习指南,由Pytho ...

  3. python 最佳实践与资源汇总

    python 最佳实践 (部分) 一. 结构化工程 文件 功能 README.rst readme LICENSE 许可证 setup.py 打包和发布管理 requirements.txt 开发依赖 ...

  4. 转载:Google 官方应用架构的最佳实践指南 赞👍

    官方给的实践指南,很有实际的指导意义,  特别是对一些小公司,小团队,给了很好的参考意义. 原文地址: https://developer.android.com/topic/libraries/ar ...

  5. 机器学习实践:《Python机器学习实践指南》中文PDF+英文PDF+代码

    机器学习是近年来渐趋热门的一个领域,同时Python 语言经过一段时间的发展也已逐渐成为主流的编程语言之一.<Python机器学习实践指南>结合了机器学习和Python 语言两个热门的领域 ...

  6. Python机器学习实践指南pdf (中文版带书签)、原书代码、数据集

    Python机器学习实践指南 目 录 第1章Python机器学习的生态系统 1 1.1 数据科学/机器学习的工作 流程 2 1.1.1 获取 2 1.1.2 检查和探索 2 1.1.3 清理和准备 3 ...

  7. 如何让HTTPS站点评级达到A+? 还得看这篇HTTPS安全优化配置最佳实践指南

    0x00 前言简述 SSL/TLS 简单说明 描述: 当下越来越多的网站管理员为企业站点或自己的站点进行了SSL/TLS配置, SSL/TLS 是一种简单易懂的技术,它很容易部署及运行,但要对其进行安 ...

  8. 《jQuery权威指南》学习笔记之第2章 jQuery选择器

    2.1 jQuery选择器概述 2.1.1 什么使选择器 2.1.2 选择器的优势: 代码更简单,完善的检测机制  1.代码更简单   示例2-1     使用javascript实现隔行变色 < ...

  9. Python 日期时间处理模块学习笔记

    来自:标点符的<Python 日期时间处理模块学习笔记> Python的时间处理模块在日常的使用中用的不是非常的多,但是使用的时候基本上都是要查资料,还是有些麻烦的,梳理下,便于以后方便的 ...

随机推荐

  1. 提高Linux运维效率的命令行常用快捷键

    提高Linux运维效率的命令行常用快捷键 tab 命令或路径等的补全键,Linux最有用快捷键 Ctrl+a 光标回到命令行首 Ctrl+e 光标回到命令行尾 Ctrl+k 剪切(删除)光标处到行尾的 ...

  2. SQL Server表分区(水平分区及垂直分区)

    什么是表分区? 表分区分为水平表分区和垂直表分区,水平表分区就是将一个具有大量数据的表,进行拆分为具有相同表结构的若干个表:而垂直表分区就是把一个拥有多个字段的表,根据需要进行拆分列,然后根据某一个字 ...

  3. Integer包装类源码分析

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 今天上班的途中在手机里看到几道关于Integer拆装箱的小题目,正好有点时间翻看了一下Integer类的源码,加上自己的一点思考,决定写点 ...

  4. Android Studio在项目中添加assets资源目录

    第一步: 切换到"Project"视图,找到app --> src --> main目录 第二步: 右键点击main目录,New --> Directory -- ...

  5. Eclipse 中 Debug 调试 java 代码一直报 Source not found

    今天使用eclipse的debug调试代码,一直没法正常调试,一按F6就提示Source not found 根据提示发现可能是另一个项目影响了,所以把另一个项目Close Project,这次直接t ...

  6. tk.mybatis通用工具采坑记

    tk.mybatis通用工具pom <!--mybatis依赖--> <dependency> <groupId>org.mybatis.spring.boot&l ...

  7. Keras 资源

    Keras中文文档 github Keras example 官方博客 A ten-minute introduction to sequence-to-sequence learning in Ke ...

  8. Python:标准库(包含下载地址及书本目录)

    下载地址 英文版(文字版) 官方文档 The Python Standard Library <Python标准库>一书的目录 <python标准库> 译者序 序 前言 第1章 ...

  9. mysql 开发进阶篇系列 36 工具篇mysqlshow(数据库对象查看工具)

    一.概述 mysqlshow客户端查找工具,能很快地查找存在哪些数据库,数据库中的表,表中的列或索引,和mysql客户端工具很类似,不过有些特性是mysql客户端工具所不具备的. mysqlshow的 ...

  10. JAVA中的糕富帅技术——反射(一)

    前言 突然发现好久没写博客了,前面写的都是关于Android的东西,今天心血来潮突然有一种冲动想写一篇基于JAVA技术的博客,别问我为什么?有钱.任性! 今天就来谈谈反射机制:学过JAVA的人不一定懂 ...