Python编码规范知识点实例分析

发布时间:2022-07-11 10:18:51 作者:iii
来源:亿速云 阅读:162

这篇文章主要讲解了“Python编码规范知识点实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python编码规范知识点实例分析”吧!

Python编码规范知识点实例分析

1 代码编码格式

# -- coding: utf-8 --
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

2 分号

不要在行尾加分号,也不要用分号将两条命令放在同一行。

3 行的最大长度

每行不超过80个字符

以下情况除外:

  1. 长的导入模块语句

  2. 注释里的URL

不要使用反斜杠连接行。

Python会将 圆括号, 中括号和花括号中的行隐式的连接起来 。

圆括号、方括号或花括号以内的表达式允许分成多个物理行,无需使用反斜杠。例如:

month_names = ['Januari', 'Februari', 'Maart',      # These are the
               'April',   'Mei',      'Juni',       # Dutch names
               'Juli',    'Augustus', 'September',  # for the months
               'Oktober', 'November', 'December']   # of the year

隐式的行拼接可以带有注释。后续行的缩进不影响程序结构。后续行也允许为空白行。

如果需要,可以在表达式外围增加一对额外的圆括号。

如果一个文本字符串在一行放不下, 可以使用圆括号来实现隐式行连接

x = ('这是一个非常长非常长非常长非常长 '
     '非常长非常长非常长非常长非常长非常长的字符串')

4 缩进规则

建议使用 Emacs 的 Python-mode 默认值:4 个空格一个缩进层次。不要用tab,也不要tab和空格混用

正确示例代码:

if a==0:
    print("正确")        # 缩进4个空白占位
else:                    # 与if对齐
    print("错误")        # 缩进4个空白占位

或者

# 4 个空格缩进,第一行不需要
foo = long_function_name(
    var_one, var_two, var_three,
    var_four)

错误示例代码:

if a==0:
    print("正确") 
else:              
    print("错误")   
 print("end")       # 错误的是这行代码前面加了一个空格

或者

# 2 个空格是禁止的
foo = long_function_name(
  var_one, var_two, var_three,
  var_four)

5 注释

Python中有三种形式的注释:行注释、块注释、文档注释

行注释:注释应解释自己做了什么,而不是对代码本身的解释

n = input()
m = input()
t = n / 2     # t是n的一半

# 循环,条件为t*m/n 小于n
while (t * m / (n + 1) < n):
    t = 0.5 * m + n / 2     # 重新计算t值
print(t)

块注释

def FuncName(parameter1,parameter2):

"""

描述函数要做的事情

:param parameter1: 参数一描述(类型、用途等)

:param parameter2: 参数二描述

:return: 返回值描述

"""
# We use a weighted dictionary search to find out where i is in
# the array.  We extrapolate position based on the largest num
# in the array and the array size and then do binary search to
# get the exact number.

if i & (i-1) == 0:        # true if i is a power of 2

文档注释:

class SampleClass(object):
    """Summary of class here.

    Longer class information....
    Longer class information....

    Attributes:
        likes_spam: A boolean indicating if we like SPAM or not.
        eggs: An integer count of the eggs we have laid.
    """

    def __init__(self, likes_spam=False):
        """Inits SampleClass with blah."""
        self.likes_spam = likes_spam
        self.eggs = 0

    def public_method(self):
        """Performs operation blah."""

6 空行

class Class01:
    pass
 
 
class Class02:
    def function_01(self):
        pass
 
    def function_02(self):
        pass

使用必要的空行可以增加代码的可读性,通常在顶级定义(如函数或类的定义)之间空两行,而方法定义之间空一行,另外在用于分隔某些功能的位置也可以空一行。

7 制表符还是空格

空格使用规则:

正确示例代码:

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

if x == 4:
    print x, y
x, y = y, x

dict['key'] = list[index]

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

错误示例代码:

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

if x == 4 :
    print x , y
x , y = y , x

dict ['key'] = list [index]

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

8 命名规范

模块名命名

# 正确

import decoder

import html_parser

# 不推荐

import Decoder

变量命名

count = 0
this_is_var = 0

常量或者全局变量命名

MAX_CLIENT = 100

函数命名

def run():
    pass

def run_with_env():
    pass


class Person():
    def _private_func():
        pass

类命名

class Farm():
    pass

class AnimalFarm(Farm):
    pass

class _PrivateFarm(Farm):
    pass

类里面函数和方法参数

特别注意:

以下用下画线作前导或结尾的特殊形式是被公认的:

9 引号用法规则

字符串引号规则:

正确使用示例:

Tim('Why are you hiding your eyes?')
Bob("I'm scared of lint errors.")
Juy('"Good!" thought a happy Python reviewer.')

10 模块导入规则

正确使用例子:

import os
import numpy
import sys

from types import StringType, ListType

错误使用例子:

import os, numpy, sys
from MyClass import MyClass 
from foo.bar.YourClass import YourClass

模块导入建议

示例评价
from modu import *差, 不清楚具体从模块中导入了哪些内容
from modu import sqrt稍好

import modu

import modu.sqrt

最佳 , 调用的时候直接使用modu.sqrt能比较清楚的知道当前方法属于哪个模块

import os

import sys

推荐

import os, sys

不推荐
from subprocess import Popen, PIPE推荐

11 Main

主功能应该放在一个main()函数中。

在Python中,pydoc以及单元测试要求模块必须是可导入的。代码应该在执行主程序前总是检查 if __name__ == '__main__', 这样当模块被导入时主程序就不会被执行。

def main():
      ...

if __name__ == '__main__':
    main()

12 函数设计规范

13 版本注记

如果要将 RCS 或 CVS 的杂项包含在你的源文件中,按如下格式操作:

__version__ = "$Revision: 1.4 $" 
# $Source: E:/cvsroot/python_doc/pep8.txt,v $

对于 CVS 的服务器工作标记更应该在代码段中明确出它的使用说明,如在文档最开始的版权声明后应加入如下版本标记:

# 文件:$id$ 
# 版本:$Revision$

这样的标记在提交给配置管理服务器后,会自动适配成为相应的字符串,如:

# 文件:$Id: ussp.py,v 1.22 2004/07/21 04:47:41 hd Exp $ 
# 版本:$Revision: 1.4 $

这些应该包含在模块的文档字符串之后,所有代码之前,上下用一个空行分割。

感谢各位的阅读,以上就是“Python编码规范知识点实例分析”的内容了,经过本文的学习后,相信大家对Python编码规范知识点实例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. PHP编码规范
  2. Python最简编码规范

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:JAVA接口与抽象类怎么使用

下一篇:JavaScript常见的Number对象有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》