Python规范:代码规范要注意

主要有以下两种代码规范

  • 《8 号 Python 增强规范》(Python Enhacement Proposal #8),以下简称 PEP8;
  • 《Google Python 风格规范》(Google Python Style Guide),以下简称 Google Style,这是源自 Google 内部的风格规范。公开发布的社区版本,是为了让 Google 旗下所有 Python 开源项目的编程风格统一。(http://google.github.io/styleguide/pyguide.html)
  • Google  Python Style Guide 要更严格些。

统一的编程规范为什么重要?

  开发效率,关乎三类对象,也就是阅读者、编程者和机器。他们的优先级是阅读者的体验 >> 编程者的体验 >> 机器的体验。

阅读者的体验 >> 编程者的体验

  不少的编程规范,本来就是为了优化读者体验而存在的。举个例子,对于命名原则,我想很多人应该都有所理解,PEP8 第 38 条规定命名必须有意义,不能是无意义的单字母。如:

错误示例
if (a <= 0):
   return
elif (a > b):
   return
else:
  b -= a

# 正确示例
if (transfer_amount <= 0):
   raise Exception(‘...‘)
elif (transfer_amount > balance):
   raise Exception(‘...‘)
else:
  balance -= transfer_amount

  再举一个例子,Google Style 2.2 条规定,Python 代码中的 import 对象,只能是 package 或者 module。

#错误示例
from mypkg import Obj
from mypkg import my_func

my_func([1, 2, 3])

# 正确示例
import numpy as np
import mypkg

np.array([6, 7, 8])

编程者的体验 >> 机器的体验

#错误示例
result = [(x, y) for x in range(10) for y in range(5) if x * y > 10]

  以上的代码看起来又累又费劲,转个头可能自已也得看半天。换成简单的for loop,就可以更简洁与明了。

# 正确示例
result = []
for x in range(10):
  for y in range(5):
     if x * y > 10:
       result.append((x, y))

机器的体验也很重要

  一些危险的编程风格,不仅会影响程序正确性,也容易成为代码效率的瓶颈。比如, is 和 ==的使用区别。is是比较对象的内存地址。因此在比较整数的地址时要注意。

#################实验证明,下面代码只在终端中执行Python命令行时才有效,而在执行脚本时整型的数据都会分配同一个空间
#错误示例
x = 27
y = 27
print(x is y) #True

x = 721
y = 721
print(x is y) #False
#以上的代码的改成==,确保是对比对象的值。
#正确示例
x = 27
y = 27
print(x == y)

x = 721
y = 721
print(x == y)

  再看 == ,当比较的是对象或者None时,有可能就会出乎意料,因为==的结果,取决于__eq__() 方法的具体实现

#错误示例
class MyObject(object):
    def __eq__(self, other):
        if other:
            return self.field == other.field
        return True

x = MyObject()
print(x == None)

  如果要与None比较时,永远要使用is和is not

# 正确示例
x = MyObject()
print(x is None)
正确示例
def pay(name, salary=None):
 if salary is not None:
   salary = 11
 print(name, "is compensated", salary, "dollars")

  再提一个错误示范

#错误示例
adict = {i: i * 2 for i in xrange(10000000)}

for key in adict.keys():
   print("{0} = {1}".format(key, adict[key]))

  keys() 方法会在遍历前生成一个临时的列表,导致上面的代码消耗大量内存并且运行缓慢。正确的方式,是使用默认的 iterator。默认的 iterator 不会分配新内存,也就不会造成上面的性能问题:

# 正确示例
for key in adict:

参考

  摘自 《Python核心技术与实战》专栏

原文地址:https://www.cnblogs.com/xiaoguanqiu/p/11269255.html

时间: 2024-08-08 01:12:10

Python规范:代码规范要注意的相关文章

Python PEP8代码规范_20180614

PEP8 代码风格指南 知识点 代码排版 字符串引号 表达式和语句中的空格 注释 版本注记 命名约定 公共和内部接口 程序编写建议 1. 介绍 这份文档给出的代码约定适用于主要的 Python 发行版所有标准库中的 Python 代码.请参阅相似的 PEP 信息,其用于描述实现 Python 的 C 代码规范[1]. 这份文档和 PEP 257(文档字符串约定) 改编自 Guido 的 Python 风格指南原文,从 Barry 的风格指南里添加了一些东西[2]. 随着时间的推移,这份额外约定的

pyhton代码规范

> Python 代码规范 前言 Python 学习之旅,先来看看 Python 的代码规范,让自己先有个意识,而且在往后的学习中慢慢养成习惯 目录 Python代码规范 一.简明概述 1.编码 如无特殊情况, 文件一律使用 UTF-8 编码 如无特殊情况, 文件头部必须加入#-*-coding:utf-8-*-标识 2.代码格式 2.1.缩进 统一使用 4 个空格进行缩进 2.2.行宽 每行代码尽量不超过 80 个字符(在特殊情况下可以略微超过 80 ,但最长不得超过 120) 理由: 这在查

代码规范、代码复审、PSP

作业三: 代码规范.代码复审.PSP 代码规范 代码规范的重要性 一.规范的代码可以促进团队合作  一个项目大多都是由一个团队来完成,如果没有统一的代码规范,那么每个人的代码必定会风格迥异.且不说会存在多个人同时开发同一模块的情况,即使是分工十分明晰的,等到要整合代码的时候也有够头疼的了.大多数情况下,并非程序中有复杂的算法或是复杂的逻辑,而是去读别人的代码实在是一件痛苦的事情.统一的风格使得代码可读性大大提高了,人们看到任何一段代码都会觉得异常熟悉.显然的,规范的代码在团队的合作开发中是非常有

JAVA技术开发规范(4)——JASMP平台的开发代码规范

4.关于代码规范 代码规范对程序员的重要性: 1.在软件开发生命周期中,有80%的时间是用在维护上 2.几乎所有的软件维护者都不是创使人 3.迭代式开发,必须要有清晰.可读性强的代码,以便于快速迭代 4.敏捷开发时,对应文档的输出不是减少,而是更加实用,因此,可交付的易读的代码更为重要了 5.协同协同,必需确保在编码时遵循统一的规范 编码规范是必需的,每个参与人必需严格遵循该规范进行编码. 4.1.命名规范 基本原则: 1.采用英文全称进行命名 2.保持各层级名称基本统一 3.命名英文单词用全称

python基础1 - 多文件项目和代码规范

1. 多文件项目演练 开发 项目 就是开发一个 专门解决一个复杂业务功能的软件 通常每 一个项目 就具有一个 独立专属的目录,用于保存 所有和项目相关的文件 –  一个项目通常会包含 很多源文件 在 01_Python基础 项目中新建一个 hm_02_第2个Python程序.py 在 hm_02_第2个Python程序.py 文件中添加一句 print("hello") 点击右键执行 hm_02_第2个Python程序.py 提示 在 PyCharm 中,要想让哪一个 Python 程

Python代码规范(PEP8)问题及解决

安装了PyCharm,写代码过程中总是看到有波浪线,百度了下找到了这篇文章. 原文链接https://blog.csdn.net/Jason_Lewis/article/details/75386598 最近刚刚接触Python,为了养成好习惯,尽量保证自己写的代码符合PEP8代码规范,下面是过程中报出的警告及解决方法,英文有些翻译不太准确见谅,会不断更新: PEP 8: module level import not at top of file 解决:import不在文件的最上面,可能引用之

python代码规范 自动优化工具Black

自动优化工具Black 在众多代码格式化工具中,Black算是比较新的一个,它***的特点是可配置项比较少,个人认为这对于新手来说是件好事,因为我们不必过多考虑如何设置Black,让 Black 自己做决定就好. 1).安装与使用 与pylint类似,直接pip install black即可完成该模块的安装,不过black依赖于Python 3.6+,但它仍然可以格式化Python2的代码. 在使用方面black默认读取指定python文件并对其进行代码规范格式化,然后输出到原文件. l = 

【python】编码规范(转载)

转自:http://www.cnblogs.com/itech/archive/2012/01/06/2314454.html 1 编码 >>所有的 Python 脚本文件都应在文件头标上如下标识或其兼容格式的标识: # -*- coding:utf-8 -*- >>设置编辑器,默认新建或保存为utf-8格式. 2 注释 >>业界普遍认同 Python 的注释分为两种的概念,一种是由 # 开头的"真正的"注释,另一种是 docstrings.前者表明

Google代码规范工具Cpplint的使用

Cpplint是一个python脚本,Google使用它作为自己的C++代码规范检查工具.如果你所在的公司也使用Google C++代码规范,那么你有必要了解下Cpplint. 下面说一下Cpplint在windows下的简单使用: 1.      从http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py  下载cpplint.py源码,并将其存放到D:\soft\Cpplint\cpplint.py中: 2.