`
2014马年
  • 浏览: 118444 次
  • 性别: Icon_minigender_1
  • 来自: 晋中
社区版块
存档分类
最新评论

PEP8 中文翻译,python的编程规范

阅读更多

英文原文地址:

http://legacy.python.org/dev/peps/pep-0008/

原文太长,这里展示一部分规范。

 

介绍

本文档改编自《Guido's original Python Style Guide essay》,还有一些来自《Barry's style guide》

 

一致性并不一定对(A Foolish Consistency is the Hobgoblin of Little Minds)

代码更多的是为了让人去读。

 

一致性很重要。但是更重要的是:知道何时保持一致性,很多时候不应该用代码规范。

 

下面的情况忽略掉代码规范:

  • 当用上代码规范后,让代码不容易阅读。
  • 和周围代码保持一直(可能是历史代码)
  • 由于代码的原因,没有任何理由修改代码(除了使用代码规范)
  • 与旧版本保持一直,或不支持代码规范中的写法

代码布局

Indentation(缩进)

使用4个空格

下面是带括号的一些缩进情况。

Yes:

# 和括号开始的部分对齐
foo = long_function_name(var_one, var_two,
                         var_three, var_four)

#需要更多一层的缩进
def long_function_name(
        var_one, var_two, var_three,
        var_four):
    print(var_one)

No:

# 禁止对齐下一层的代码
foo = long_function_name(var_one, var_two,
    var_three, var_four)

# 需要进一层的缩进,区分下一层的代码
def long_function_name(
    var_one, var_two, var_three,
    var_four):
    print(var_one)

 

还可以用下面的风格:

 

# 不需要额外的缩进
foo = long_function_name(
  var_one, var_two,
  var_three, var_four)

在闭合的括号中,可以选择下面两种方式,都行:

my_list = [
    1, 2, 3,
    4, 5, 6,
    ]
result = some_function_that_takes_arguments(
    'a', 'b', 'c',
    'd', 'e', 'f',
    )
my_list = [
    1, 2, 3,
    4, 5, 6,
]
result = some_function_that_takes_arguments(
    'a', 'b', 'c',
    'd', 'e', 'f',
)

空格或者Tab

空格是绝对的首选。

python3 已经不允许空格和Tab混用了。

 

每行最大字符数

修改每行最大字符数到79,因为python标准库就是每行最大79个字符,

如果太长使用 反斜杠来换行:

 

with open('/path/to/some/file/you/want/to/read') as file_1, \
        open('/path/to/some/file/being/written', 'w') as file_2:
    file_2.write(file_1.read())

下面是在括号中换行的情况:

class Rectangle(Blob):

    def __init__(self, width, height,
                 color='black', emphasis=None, highlight=0):
        if (width == 0 and height == 0 and
                color == 'red' and emphasis == 'strong' or
                highlight > 100):
            raise ValueError("sorry, you lose")
        if width == 0 and height == 0 and (color == 'red' or
                                           emphasis is None):
            raise ValueError("I don't think so -- values are %s, %s" %
                             (width, height))
        Blob.__init__(self, width, height,
                      color, emphasis, highlight)

 

源码文件的编码

python2 默认ASCII ,python3 默认utf8

用utf8省事

 

import的使用

分行包含:

Yes: import os
     import sys

No:  import sys, os

 

下面的也可以:

from subprocess import Popen, PIPE

 

包含顺序也有讲究,顺序如下(他们之间最好加一个换行):

  • 标准库
  • 第三方库
  • 本地的应用或者库

使用绝对路径import,不用import *  ,可能会导入到名字相同的冲突的包

 

表达式和语句中的空格

避免多余的空格

1.括号里:

Yes: spam(ham[1], {eggs: 2})
No:  spam( ham[ 1 ], { eggs: 2 } )

2.逗号,冒号,分号 之后:

Yes: if x == 4: print x, y; x, y = y, x
No:  if x == 4 : print x , y ; x , y = y , x

3.方法调用:

Yes: spam(1)
No:  spam (1)

 

4.数组索引

Yes: dict['key'] = list[index]
No:  dict ['key'] = list [index]

 

5.多个赋值(或其他)操作:

Yes:

x = 1
y = 2
long_variable = 3

 

No:

x             = 1
y             = 2
long_variable = 3

 

其它建议

1.对于 assignment (=),augmented assignment (+=-= etc.), comparisons (==<>!=<><=>=innot inisis not), Booleans (andornot).,需要加上空格

Yes:

i = i + 1
submitted += 1
x = x*2 - 1
hypot2 = x*x + y*y
c = (a+b) * (a-b)

 

No:

i=i+1
submitted +=1
x = x * 2 - 1
hypot2 = x * x + y * y
c = (a + b) * (a - b)

 

 

2.当=用于给参数赋默认值的时候,不要加空格

Yes:

def complex(real, imag=0.0):
    return magic(r=real, i=imag)

 

No:

def complex(real, imag = 0.0):
    return magic(r = real, i = imag)

3.多操作的时候,要换行

Yes:

if foo == 'blah':
    do_blah_thing()
do_one()
do_two()
do_three()

 

Rather not:

if foo == 'blah': do_blah_thing()
do_one(); do_two(); do_three()

注释

优先更新注释,用英语写

 

命名

1.模块名短一点,都小写,用下划线。因为模块会映射到文件的名字,所以避免和系统限制冲突(大小写不区分,长度限制等)

2.类名:首字母大写,内部类加入前导下划线

3.异常名:加入后缀Error

4.函数名:小写+下划线

5.函数和方法的参数:实例使用self 开始,类使用cls 开始。如果和系统参数名重复,在其后加_

6.方法名和实例变量:小写+下划线

 

结束

 

分享到:
评论

相关推荐

    PEP8Python 编码规范

    PEP8Python 编码规范 将Python 的英文编码变成中文的数据规范

    Python PEP8 编码规范中文版.zip

    hualinux python 基础篇 python PEP 8编程规范 文字 中文版 ,挻不错的,有兴趣的可以看一下。

    Python编码PEP8规范中文版

    Python编码PEP8规范中文版,高清版,里面介绍了代码如何更加规范。

    Python编程规范PEP8.pdf

    Python编程规范PEP8( Style Guide for Python),包括命名规范,注释规则,编程推荐等等,欢迎大家下载。

    Python PEP8编码规范中文版

    基于2016年6月8日一次修改的Python PEP8编码规范翻译成的中文版

    Python PEP8 编码规范中文版.pdf

    Python PEP8 编码规范中文版.pdf

    Python编程规范要求

    Python编程规范是指在使用Python编程时应遵循的一系列约定和规则。编程规范的目的是提高代码的可读性和可维护性,使多人合作开发更加高效。 Python编程规范的主要内容包括以下几个方面: 1. 缩进:Python使用缩进来...

    python PEP8 编码规范总结

    参照https://legacy.python.org/dev/peps/pep-0008/官方文档简单总结了python编程过程中应当遵守的编码规范,比如函数的命名、变量的命名等(PEP8编码规范)。

    Python编程规范

    其中文翻译:http://wiki.woodpecker.org.cn/moin/PythonCodingRule 精巧地址:http://bit.ly/3HURoL 在这里先简要叙述一下要点。 应用 Python 八荣八耻 以动手实践为荣,以只看不练为耻; 以打印日志为荣,以单步...

    python编程设计(2).docx

    Python的代码风格也非常规范,符合PEP8规范,这使得代码易于阅读和维护。 Python编程设计的另一个重要方面是模块化编程。Python提供了很多标准库和第三方库,这些库可以帮助我们快速实现各种功能。同时,Python也...

    Python GUI编程(第一部分) 2_PEP8编码规范_窗口大小和位置.mp4

    Python GUI编程(第一部分) 2_PEP8编码规范_窗口大小和位置.mp4

    2019千峰Python超详细入门教程(百度云盘分享).docx

    ├─千锋Python教程:第04章 列表&元组&流程控制语句(8集) │ │ .DS_Store │ │ │ ├─code │ │ 1、list(列表).py │ │ 2、列表方法.py │ │ 3、浅拷贝与深拷贝.py │ │ 4、tuple(元组).py │ │ 5、条件...

    值得收藏的10道python 面试题

    Q1:PEP8是什么?Python之禅(import this)是什么? 这题是考察你对编码规范的认识,无论是自己写代码还是在团队中写代码,了解并遵循代码规范是很基础的要求。企业中在提交代码后都会有对应的工具来对代码进行检查...

    详解Python 4.0 预计推出的新功能

    经过邮件列表上的论战,PEP8 里的一行 79 个字符的限制将增加至一行 89.5 个字符。IDE 用户终于可以充分利用 30″ 超宽 4K 显示器的优势啦!这是我们对每行 100 个字符这一呼声的妥协,大家各退一步。 所有新的支持...

    Python入门知识经典总结.docx

    遵循PEP 8编码规范,使代码更易读和遵循Python社区的最佳实践。 使用内置函数和迭代工具,如map(), filter(), 和 reduce()。 字符串与输出: 明确区别str()和repr()函数:str()用于生成人类可读

    Python基本语法经典教程.pdf

    缩进 Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯。并且Python语⾔利⽤缩 进表⽰语句块的开始和退出(Off-side规则),⽽⾮使⽤花括号或者某种关键字。增加缩进表⽰...

    让代码变得更易维护的7个Python库

    随着软件项目进入“维护模式”,对可读性和编码标准的要求很容易落空(甚至从一开始就没有建立过那些标准)。...PEP 8 是 Python 代码风格规范,它规定了类似行长度、缩进、多行表达式、变量命名约定等内容。

    Pyright - 微软开源的Python语言的静态类型检查器-python

    类型检查功能 PEP 484 类型提示,包括泛型 PEP 526 变量注释语法 PEP 544 结构子类型 PEP 589 类型字典 PEP 591 最终限定符 PEP 593 灵活变量注释 PEP 604 联合的补充语法 PEP 612 参数规范类型别名 PEP 613 类型...

    3D图示Python标准自学教程基础篇(5)_模块与包

    然后对模块成员函数的可访问性进行总结归纳,末尾就模块的执行顺序、模块的搜索路径以及包的定义与应用进行详细的阐述 第二部分:对Python的PEP8 开发规范进行详细的总结与梳理,主要讨论与总结Python的总体开发...

    python如何实现代码检查

    通常我们的python代码都是遵循PEP8的规范化格式,目的是为了保持代码的一致性、可读性。,这里给大家推荐几个常用的静态代码检查工具,大家可以酌情选择使用 1. pylint Pylint是一个Python静态代码分析工具,它可以...

Global site tag (gtag.js) - Google Analytics