• 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 代码

    附录

    相关参考

  • 相关阅读:
    Java weak reference
    Java 代理模式
    Eclipse 代码自动提示
    Eclipse 设置默认编码为Utf-8
    MyBatis 作用域(Scope)和生命周期
    MyBatis 命名空间与命名解析
    Java 泛型 介绍
    【总结】过去的风口让很多人改变了阶层,我们90后的下一个风口会是什么?
    【前端】js截取or分割字符串的常见方法
    基于react/vue的移动端终极适配方案vw单位(更新css-modules配置)
  • 原文地址:https://www.cnblogs.com/hippieZhou/p/9432938.html
Copyright © 2020-2023  润新知