zoukankan      html  css  js  c++  java
  • 【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

    在这里插入图片描述

  • 相关阅读:
    nyoj112-指数运算
    nyoj51-管闲事的小明
    nyoj29-求置转换问题
    nyoj24-素数 距离问题
    nyoj22-素数求和问题
    nyoj23-取石子(一)
    nyoj4-ASCII码排序
    nyoj169-素数
    并查集:CDOJ1593-老司机破阵 (假的并查集拆除)
    线段树: CDOJ1598-加帕里公园的friends(区间合并,单点更新)
  • 原文地址:https://www.cnblogs.com/Tom-Ren/p/11054618.html
Copyright © 2011-2022 走看看