• 技术文章 >后端开发 >Python教程

    Python编码规范知识点整理

    长期闲置长期闲置2022-07-08 20:15:44转载222
    本篇文章给大家带来了关于Python的相关知识,其中主要整理了编码规范的相关问题,想要写好python代码,必须了解python相关编码规范,有了这个的加持,编写的代码不仅可以实现相应的功能,而且简单易读,逻辑清晰,下面一起来看一下,希望对大家有帮助。

    【相关推荐:Python3视频教程

    想要写好python代码,必须了解python相关编码规范,有了这个的加持,编写的代码不仅可以实现相应的功能,而且简单易读,逻辑清晰。本节技能树主要分享相应的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

    类里面函数和方法参数

    特别注意:

    • 不要中英文混编
    • 不要有a、b、c这种没有意义的命名
    • 不要怕名字长就随便缩写,比如person_info 缩写成pi
    • 不要用大小写区分变量类型,比如a是int类型,A是String类型
    • 不要使用容易引起混淆的变量名
    • bool变量⼀般加上前缀 is_ 如:is_success
    • 变量名不要用系统关键字,如 dir type str等等

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

    • _single_leading_underscore(以一个下画线作前导):例如,“from M import *”不会导入以下画线开头的对象。
    • single_trailing_underscore_(以一个下画线结尾):用于避免与 Python 关键词的冲突,例如“Tkinter.Toplevel(master, class_='ClassName')”。
    • __double_leading_underscore (双下画线):从 Python 1.4 起为类私有名。
    • __double_leading_and_trailing_underscore__:特殊的(magic) 对象或属性,存在于
      用户控制的(user-controlled)名字空间,例如:__init__、__import__ 或 __file__。

    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 $

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

    【相关推荐:Python3视频教程

    以上就是Python编码规范知识点整理的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除
    专题推荐:python
    上一篇:完全掌握Python自动操作GUI之PyAutoGUI 下一篇:python爬虫入门实战之爬取网页图片
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 深入了解python中的代码缩进规则• 一文搞懂python中Tkinter的使用• 聊聊利用python怎么读取mat文件内容(matlab数据)• python和jquery是什么意思• 完全掌握Python自动操作GUI之PyAutoGUI
    1/1

    PHP中文网