设为首页 收藏本站
查看: 1030|回复: 0

[经验分享] Python 命名规范

[复制链接]

尚未签到

发表于 2015-4-22 10:47:10 | 显示全部楼层 |阅读模式
  一,包名、模块名、局部变量名、函数名
  全小写+下划线式驼峰
  example:this_is_var
  二,全局变量
  全大写+下划线式驼峰
  example:GLOBAL_VAR
  三,类名
  首字母大写式驼峰
  example:ClassName()
  四,关于下划线


  • 以单下划线开头,是弱内部使用标识,from M import * 时,将不会导入该对象(python 一切皆对象)。
  • 以双下划线开头的变量名,主要用于类内部标识类私有,不能直接访问。模块中使用见上一条。
  • 双下划线开头且双下划线截尾的命名方法尽量不要用,这是标识
  example for 1:
  module_1 模块中定义变量 var_1, _var_2, __var_3



#module_1

var_1
_var_2
__var_3
  module_2 模块中代码如下:



1  #module_2_error
2 '''
3 以下划线开头的变量不会别导入
4 '''
5  from module_1 import *
6  
7  print var_1
8  print _var_2  #将报错
9  print __var_3  #将报错
  执行到第6,7行将会报错,因为凡是以下划线开头的对象都不会被导入。
  既然是弱内部使用标识,就还是有使用办法的,只需单独导入即可:



1 #module_2_solution
2
3 from module_1 import *  # 导入所有的不是下划线开头的对象
4
5 from module_1 import _var_2, __var_3 # 显式导入下划线开头的对象
6
7 print var_1
8 print _var_2 # 不会报错
9 print __var_3  # 不会报错
  example for 2:



1 #module_error
2 '''
3 双下划线开头的变量不能被直接访问
4 '''
5
6 class MyClass():
7     def __init__(self):
8         self.var_1 = 1
9         self._var_2 = 2
10         self.__var_3 = 3
11     
12 if __name__=="__main__":
13     obj = MyClass()
14     print obj.var_1
15     print obj._var_2
16     print obj.__var_3  # 这里将会出错


#module_solution
'''
需要定义函数来获取双下划线开头的变量
'''
class MyClass():
def __init__(self):
self.var_1 = 1
self._var_2 = 2
self.__var_3 = 3
def get_var_3(self):
return self.__var_3

if __name__=="__main__":
obj = MyClass()
print obj.var_1
print obj._var_2
print obj.get_var_3()  # 不会再报错
  四,其他要注意的


  • 不要像c等语言里面一样去用开头字母标识变量类型(如 iValue),因为python在解释的时候才确定类型。
  • 因为异常也是一个类,所以遵守类的命名规则。此外,如果异常实际上指代一个错误的话,应该使用“Error”做后缀。
  • 命名应当尽量使用全拼写的单词,缩写的情况有如下两种:常用的缩写,如XML、ID等,在命名时也应只大写首字母,如XmlParser。命名中含有长单词,对某个单词进行缩写。这时应使用约定成俗的缩写方式。例如:function 缩写为 fn, text 缩写为 txt, object 缩写为 obj, count 缩写为 cnt, number 缩写为 num 等。
  • 类实例方法第一个参数使用self, 类方法第一个参数使用cls
  五,最后,把一些英文说明作为备注


Package and Module Names               
   Modules should have short, all-lowercase names.  Underscores can be used
      in the module name if it improves readability.  Python packages should
      also have short, all-lowercase names, although the use of underscores is
      discouraged.     
                Since module names are mapped to file names, and some file systems are
      case insensitive and truncate long names, it is important that module
      names be chosen to be fairly short -- this won't be a problem on Unix,
      but it may be a problem when the code is transported to older Mac or
      Windows versions, or DOS.

Class Names
      Almost without exception, class names use the CapWords convention.
      Classes for internal use have a leading underscore in addition.

Exception Names
      Because exceptions should be classes, the class naming convention
      applies here.  However, you should use the suffix "Error" on your
      exception names (if the exception actually is an error).

Global Variable Names
        (Let's hope that these variables are meant for use inside one module
      only.)  The conventions are about the same as those for functions.
        Modules that are designed for use via "from M import *" should use the
      __all__ mechanism to prevent exporting globals, or use the older
      convention of prefixing such globals with an underscore (which you might
      want to do to indicate these globals are "module non-public").

  Function Names
      Function names should be lowercase, with words separated by underscores
      as necessary to improve readability.
      mixedCase is allowed only in contexts where that's already the
      prevailing style (e.g. threading.py), to retain backwards compatibility.

Function and method arguments
      Always use 'self' for the first argument to instance methods.
      Always use 'cls' for the first argument to class methods.
      If a function argument's name clashes with a reserved keyword, it is
      generally better to append a single trailing underscore rather than use
      an abbreviation or spelling corruption.  Thus "print_" is better than
      "prnt".  (Perhaps better is to avoid such clashes by using a synonym.)

Method Names and Instance Variables
      Use the function naming rules: lowercase with words separated by
      underscores as necessary to improve readability.
      Use one leading underscore only for non-public methods and instance
      variables.
      To avoid name clashes with subclasses, use two leading underscores to
      invoke Python's name mangling rules.
      Python mangles these names with the class name: if class Foo has an
      attribute named __a, it cannot be accessed by Foo.__a.  (An insistent
      user could still gain access by calling Foo._Foo__a.)  Generally, double
      leading underscores should be used only to avoid name conflicts with
      attributes in classes designed to be subclassed.
      Note: there is some controversy about the use of __names (see below).

Constants
       Constants are usually defined on a module level and written in all
       capital letters with underscores separating words.  Examples include
       MAX_OVERFLOW and TOTAL.


  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-59549-1-1.html 上篇帖子: Python: sorted 下篇帖子: Python 新手常犯错误(第一部分)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表