zoukankan      html  css  js  c++  java
  • 遵循PEP8风格

    遵循PEP8风格

      在编写python代码的时候我们应该采用统一的风格来编写代码,可以使代码更加容易读懂。采用和其他程序员统一的编码风格来写代码,也可以使项目更利于多人协作开发。即便代码只有你自己能看懂,也得遵循这套风格,可以令自己后续继续二次开发的时候更容易看懂自己的代码。

    一 空白与缩进

      在Python中,空白会影响代码的含义。Python程序员使用空白的时候会影响代码的清晰程度。

    1.使用4个空格来表示缩进

    if 'tank' == "handsome":
        # 这里是4个空格缩进
        print('是真的!')

     在圆括号、方括号和花括号内,若想写多行参数。应该垂直对齐,要么使用挂行缩进对齐。当使用挂行缩进时,应该考虑到第一行是否应该有参数,以及使用缩进以区分自己多行参数。

    - 推荐使用:

    与左括号对齐

    def login(username, password, root):
        pass
    
    # 与左括号对齐
    func = login(username='tank',
                 password="123",
                 root='super')

    用更多缩进来与其他行区分

    # 用更多的缩进来与其他行区分
    def register(
            username,
            password,
            root):
        print(username, password, root)

    挂行缩进应该再换一行

    func = register(
        username='tank',
        password='123',
        root='supder')

    - 不推荐

    # 当缩进没有与其他行区分时,要增加缩进
    def register(
        username, password,
        root):
        print(username, password, root)
    
    
    # 没有使用垂直对齐时,禁止把参数放在第一行
    func = register(username='广东仔',
        password='123',
        root='super')

    2.每一行的字符数不应该超过79

    # 一行代码的字数不能超过79
    def abcdefg.....79

    3.对于占据多行的长表达式来说,除了首行之外的其余每一行都应该换行开头增加4个空格。

    # 推荐
    num1 = 1
    num2 = 2
    num3 = 3
    num4 = 4
    num5 = 5
    num6 = 6
    print(
        num1
        + num2
        + num3
        + num4
        + num5
        + num6
    )
    
    # 不推荐
    print(num1 +
          num2 +
          num3 +
          num4)

    4.Python文件中的函数与类之间应该用两个空行隔开。

    #
    class Foo:
        pass
    
    
    # 函数
    def foo():
        pass

    5.在同一个类中,各方法之间应该用一个空行隔开。

    class DSB:
        
        def s1(self):
            pass
    
        def s2(self):
            pass

    6.在使用下标来获取列表元素、调用函数或给关键字参数赋值的时候,不要在两旁添加空格。

    # 列表元素
    list1 = [1, 2, 3]
    
    # 推荐
    print(list1[0])
    
    # 不推荐
    print(list1[ 0 ])
    
    
    # 调用函数
    def foo(x, y):
        pass
    
    # 推荐
    foo(x=10, y=20)
    
    # 不推荐
    foo(x = 10, y = 20)

    7.为变量赋值的时候,赋值符号在左右侧应该各自写一个空格

    name = 'tank'

    二 命名

      在python中提倡采用不同风格来定义python中名称,例如变量名、函数名、类名等...

     1.函数、变量及属性应该用小写字母来拼写,各单词之间以下划线相连

    name_of_tank = 'tank'


    2.受保护的实例属性,应该以单个下划线开头

    _private_pwd = '123'


    3.私有的实例属性,应该以两个下划线开头

    __private_field = '123'


    4.类名,应该以单个单词首字母均大写的形式来命名,各单词之间以下划线相连。

    class StudentOfSomebody


    5.常量,应该全部采用大写字母来拼写,各单词之间以下划线相连

    SCHOOL_OF_CITY = "shanghai"


    6.类中的实例方法,把首个参数命名为self,以表示该对象本身。

    # 正确
    class Student:
        def running(self, name):
            print(f"{name} is running")
    
    stu1 = Student()
    stu1.running("张全蛋")
    
    
    # 错误
    '''
    class Student:
        def running(xxx, name):
            print(f"{name} is running")
    '''


    7.类方法的首个参数,应该命名为cls,以表示该类本身。

    class Teacher:
        @classmethod
        def piao(cls, name):
            print(cls)  # <class Teacher>
    
    Teacher.piao('jack')
    >>> jason is piao ing... 

     三 表达式和语句

    1.采用内联形式的否定词,而不要把否定词放在整个表达式前。

    name1 = 'tank'
    name2 = 'superman'
    
    # 推荐
    if name1 is not name2:
        pass
    
    # 反对
    if not name1 is name2:
        pass


    2.不要通过检测长度的方法来判断list是否为空,而应该采用if not list 这种写法来判断,若为空值将自动设置为False

    list1 = [1, 2, 3]
    # 不推荐
    if len(list1) == 0:
        pass
    
    # 推荐
    if not list1:
        pass


    3.检测list是否为[1]或者'li'等非空值时,if list会把非空的值判断为True。

    list1 = ['jason', 'is', 'sb']
    
    # 推荐
    if list1:
        pass

     
    4.不要编写单行的if语句、for、while循环以及except复合语句,而是应该把这些语句分成多行来书写,以示清晰。

    # 推荐
    if True: 
        print('tank 喜欢吃生蚝,男人的加油站,女人的美容院')
        
    while True: 
        print('tank 喜欢吃生蚝,男人的加油站,女人的美容院')
        
    for line in range(10): 
        print('tank 喜欢吃生蚝,男人的加油站,女人的美容院')
    
    
    # 不推荐
    '''
    if True: print('tank 很帅')
    while True: print('tank 很帅')
    for line in range(10): print('tank 很帅')
    '''


    5.import 应该放在文件开头

    # 推荐
    import json
    content = 'jason 喜欢大宝剑'
    
    # 不推荐
    content = 'jsaon 喜欢大宝剑'
    import json


    6.引入模块的时候,应该使用绝对名称,而不应该根据当前模块的路径来使用相对名称。

    # 推荐
    from foo import bar
    
    # 不推荐
    # 在当前模块位置
    import bar


    7.如果一定要以相对名称来写import语句,那就采用明确的写法

    from . import foo


    8.文件中的import语句应该按照顺序划分为三个部分,分别表示标准库模块、第三方模块以及自定义模块。在每一部分中,各自的import语句应该按照模块的字母顺序来排序。

    # python标准库
    import abc, base64, copy, datetime, email, fcntl
    
    # 第三方模块
    import bs4,fake_useragent
    
    # 自定义模块
    import A, B, C, D

    PEP8风格总结

    '''
        1.当编写python代码时,应该遵循PEP8编码风格。
        2.与广大python开发者采用同一套代码风格,可以使项目更利于多人协同开发。
        3.采用一致的风格来编写代码,可以让自己负责项目的二次开发工作更为容易。
    '''

     官网:https://www.cnblogs.com/kermitjam/p/11149422.html

  • 相关阅读:
    最牛B的编码套路
    CRM运维工程师主要职责
    SQL ROUND函数用法
    VMware不能完全卸载问题
    如何建立真正支持业务的高效运维体系?
    【TensorFlow】tf.nn.softmax_cross_entropy_with_logits的用法
    L1正则化与L2正则化详解及解决过拟合的方法
    TensorFlow学习笔记之--[tf.clip_by_global_norm,tf.clip_by_value,tf.clip_by_norm等的区别]
    TensorFlow学习笔记之--[compute_gradients和apply_gradients原理浅析]
    Windows10+Tensorflow1.12-gpu+CUDA+cudnn+Anaconda3.5+Pycharm3.5 离线GPU开发环境搭建
  • 原文地址:https://www.cnblogs.com/kermitjam/p/11160217.html
Copyright © 2011-2022 走看看