• 【python命名规范】谷歌风格命名


    为了让逐渐增长的代码具有统一的、易读的、可拓展的编程风格,学习了google的开源风格,特别着重记录了Python相关的命名规范,以便在今后的编程中统一命名风格、方便后期维护。

    Python中的命名

    python中的命名包括了变量、函数、方法、类、工具包和模块等实体,google给出了一系列命名规则建议,以统一代码风格。
    Caution
    尽量避免单字符的命名,但是可以在计数器和迭代器中使用for i in range(xx)/异常处理中使用 except Error as e:
    避免使用横杆-,尽量使用下划线
    避免使用双下划线开头的名称,像__name__这样的是python自己的保留关键字

    下划线开头:
    单下划线_开头意味着受保护的内部变量/函数,不会被import导出
    双下划线__开头意味着类的私有变量或方法
    内部意味着模块内,类内私有/保护变量/方法;

    类命名:利用驼峰命名法 MyClass
    模块名:利用小写下划线法:my_modules.py
    在测试时可能会有不同的书写方法,例如test<MethodUnderTest>_<state>,或者testPop_EmptyStack

    Guido推荐的命名法:

    实体公有风格内部
    模块my_module_one 小写下划线_my_module_one
    my_package_one
    MyClass 驼峰法_MyClass
    函数my_function_one()
    方法名class_metdod_one()保护:_class_metdod_one()
    私有:__class_metdod_one()
    全局变量my_global_variable_my_global_variable
    局部变量my_local_variable
    实例变量my_instance_varible保护:_my_instance_varible
    私有:__my_instance_varible
    全局常量MY_GLOBAL_CONSTANT_MY_GLOBAL_CONSTANT
    异常MyExpection

    导入

    每行只导入一个变量或者一个模块,避免一行导入多个模块:

    import os
    import sys
    import numpy as np
    

    在开头导入!!!

    • 标准导入:import os
    • 第三方包导入:import tensorflow as tf
    • 子工具包导入:from otherproject.ai import mind
      不同导入的方法写在一组内,类似谷歌给出的例子:
    import collections
    import queue
    import sys
    #不同部分间使用空行隔开,上面是标准导入、下面是导入第三方工具部分
    from absl import app
    from absl import flags
    import bs4
    import cryptography
    import tensorflow as tf
    # 下面是导入子工具包的部分
    from book.genres import scifi
    from myproject.backend.hgwells import time_machine
    from myproject.backend.state_machine import main_loop
    from otherproject.ai import body
    from otherproject.ai import mind
    from otherproject.ai import soul
    
    # Older style code may have these imports down here instead:
    #from myproject.backend.hgwells import time_machine
    #from myproject.backend.state_machine import main_loop
    
    

    注释

    短期注释TODO,需要注意三点

    • 1.#TODO开头
    • 2.在后面紧跟括号,注明名字和你的联系方式
    • 3.写清楚这个todo要解决什么问题,在什么条件下解决(时间/其他工作完成条件)
    #TODO(hitrjj tom@tom.com): Test this module and add a function, when I have space time
    #TODO(tom): Add data io modul untils I receive the data from boss...
    #TODO 中不要写fxxk :D
    

    At last:规范命名、做好注释、利人利己

    ref:
    http://google.github.io/styleguide/pyguide.html
    https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/
    https://www.python-course.eu/python3_exception_handling.php

    在这里插入图片描述

  • 相关阅读:
    MySQL——字符串拆分(含分隔符的字符串截取)
    一列数据组合成字符串并用逗号隔开
    web最大化,最小化文字错位的问题
    Esxi虚拟机安装Ros+Openwrt软路由双系统简单分享(踩到的坑,很大的坑)
    跟着老司机免费申请一个域名去!
    logging模块
    os.rename 和os.replace
    装饰器详解
    python if not
    globals和locals的区别
  • 原文地址:https://www.cnblogs.com/Tom-Ren/p/11054618.html
Copyright © 2020-2023  润新知