社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python的编码命名规则

Python技术博文 • 8 年前 • 1169 次点击  

python源码和其他一些书籍,命名各种个性,没有一个比较统一的命名规范。于是总结了一些,供参考。 模块名: 

(1):

模块:应该使用尽可能短的、全小写命名,可以在模块命名时使用下划线以增强可读性。同样包的命名也应该是这样的,虽然其并不鼓励下划线。 

       分析:主要是考虑模块名是与文件夹相对应的,因此需要考虑文件系统的一些命名规则的,比如Unix系统对大小写敏感,而过长的文件名会影响其在Windows\Mac\Dos等系统中的正常使用。 通常是小写字母,单词之间用_分割 ad_stats.py 包名;

全部小写字母

模块就是指文件

例:

1
test.py
2
hello_world.py


packagemodule

项目名

首字母大写,其余小写单词,若多个单词组合可以添加“_”下划线增加可读性

  Ui_test

和模块名一样 类名: 

(2):

类名:都使用首字母大写开头(Pascal命名风格)的规范。使用_单下划线开头的类名为内部使用,from M import *默认不被导入的情况。 单词首字母大写 AdStats ConfigUtil 

类名

首字母大写,其它字母小写,若多个单词时,才用驼峰,eg:UserLogin

class Login :

(3):

全局变量名:(类变量,在java中相当于static变量): 大写字母,单词之间用_分割 NUMBER COLOR_WRITE 

对于from M import *导入语句,如果想阻止导入模块内的全局变量可以使用旧有的规范,在全局变量上加一个前导的下划线。

 *注意*:应避免使用全局变量 普通变量: 

小写字母,单词之间用_分割 this_is_a_var 

*注意*: 

1.不论是类成员变量还是全局变量,均不使用 m 或 g 前缀。 

2.私有类成员使用单一下划线前缀标识,多定义公开成员,少定义私有成员。 

3.变量名不应带有类型信息,因为Python是动态类型语言。如 iValue、names_list、dict_obj 等都是不好的命名。 

(4):

实例变量: 

以”_“开头,其他和普通变量一样 _price     _instance_var 

私有实例变量(外部访问会报错): 

以__开头(2个下划线),其他和普通变量一样 __private_var 专有变量: 

__开头,__结尾,一般为python的自有变量,不要以这种方式命名 __doc__ __class__ 

普通变量名

小写字母,单词之间用_分割 或者 遵守驼峰原则命名

month_pay  = 2000monthPay = 2000

注意
1.不论是类成员变量还是全局变量,均不使用 m 或 g 前缀。
2.私有类成员使用单一下划线前缀标识,多定义公开成员,少定义私有成员。
3.变量名不应带有类型信息,因为Python是动态类型语言。如 iValue、names_list、dict_obj 等都是不好的命名。
4.开头,结尾,一般为python的自有变量,不要以这种方式命名
5.以__开头(2个下划线),是私有实例变量(外部不嫩直接访问),依照情况进行命名

**扩展需知**:

1.保护成员变量:
 单下划线作前缀,意思是只有类对象和子类对象自己能访问到这些变量,且不能用'from module import *'导入。如:
_name=name
2.私有成员变量:
 双下划线作前缀,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。

例:
__private=private
3.全局变量:
  大写字母,单词之间用_分割。
  对于from M import *导入语句,如果想阻止导入模块内的全局变量可以使用旧有的规范,在全局变量上加一个前导的下划线;

4. 注意:
 (1) 不论是类成员变量还是全局变量,均不使用 m 或 g 前缀
 (2)变量名不应带有类型信息,因为 Python 是动态类型语言。

如 iValue、names_list、dict_obj 等都是不好的命名。

(5):

普通函数: 和普通变量一样:如: 

get_name() 

count_number() 

ad_stat() 

私有函数(外部访问会报错): 

以__开头(2个下划线),其他和普通函数一样 __get_name() 

(6):

文件名: 

全小写,可使用下划线 

*注意*:混合大小写仅被允许用于这种风格已经占据优势的时候,以便保持向后兼容。

(7):

函数和方法的参数: 

总使用“self”作为实例方法的第一个参数。总使用“cls”作为类方法的第一个参数。 

#注意:如果一个函数的参数名称和保留的关键字冲突,通常使用一个后缀下划线好于使用缩写或奇怪的拼写。

方法名

小写单词,多个单词时,用下划线分隔单词以增加可读性。

def user_login():

参数名

与普通变量一致,函数名应该为小写,可以用下划线风格单词以增加可读性。混合大小写仅被允许用于这种风格已经占据优势的时候,以便保持向后兼容.

小写单词

def user_login(self):
def myfunctio():
def my_example_function():
def myName():

如果函数的参数名与保留关键字冲突,在参数名后加一个下划线,比用缩写、错误 的拼写要好。因此 "_print" 比 "prnt" 好。

(8):

 常量: 常量名所有字母大写,由下划线连接各个单词.

 如 MAX_OVERFLOW,TOTAL,THIS_IS_A_CONSTANT = 1

(9):

异常 :因为异常也是一个类,所以遵守类的命名规则。此外,如果异常实际上指代一个错误的话,应该使用“Error”做后缀。

(10):

 缩写 :命名应当尽量使用全拼写的单词,缩写的情况有如下两种: 

  1. 常用的缩写,如XML、ID等,在命名时也应只大写首字母,如XmlParser

  2. 命名中含有长单词,对某个单词进行缩写。这时应使用约定成俗的缩写方式。

例如: 

function 缩写为 fn text 缩写为 txt object 缩写为 obj count 缩写为 cnt number 缩写为 num,等。 

(11):

前导后缀下划线总结 :

一个前导下划线:表示非公有。 一个后缀下划线:避免关键字冲突。 

两个前导下划线:当命名一个类属性引起名称冲突时使用。 

两个前导和后缀下划线:“魔术”(有特殊用途)对象或者属性,例如__init__或者__file__。绝对不要创造这样的名字,而只是使用它们。 

*注意*:关于下划线的使用存在一些争议。 

Python 用下划线作为变量前缀和后缀指定特殊变量。 _xxx  不能用'from module import *'导入(相当于 private) __xxx__ 系统定义名字 ;

********__xxx  类中的私有变量名(相当于protect) 核心风格:避免用下划线作为变量名的开始。 

********因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始。

********一般来讲,变量名_xxx被看作是“私有的”,在模块或类外不可以使用。当变量是私有的时候,用_xxx 来表示变量是很好的习惯。

********"单下划线" 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量; 

********"双下划线" 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。

******** 以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用“from xxx import *”而导入;

********以双下划线开头的(__foo)代表类的私有成员;

********以双下划线开头和结尾的(__foo__)代表python里特殊方法专用的标识,如__init__()代表类的构造函数。

(12)

特定命名方式 :

主要是指 __xxx__ 形式的系统保留字命名法。项目中也可以使用这种命名,它的意义在于这种形式的变量是只读的,这种形式的类成员函数尽量不要重载。如 class Base(object): 

def __init__(self, id, parent = None): self.__id__ = id self.__parent__ = parent def __message__(self, msgid): # …略 

其中 __id__、__parent__ 和 __message__ 都采用了系统保留字命名法。 

__双下划线开头双下划线结尾__:指那些包含在用户无法控制的命名空间中的“魔术”对象或属性,如类成员的__name__、__doc__、__init__、__import__、__file__、等。推荐永远不要将这样的命名方式应用于自己的变量或函数。 

********单下划线结尾_:只是为了避免与python关键字的命名冲突 

******** _ 单下划线开头:弱“内部使用”标识,如:”from M import *”,将不导入所有以下划线开头的对象,包括:包、模块和成员

最后提示命名注意:

不要使用小写字母'l'(el),大写字母'O'(oh),或者小写'i'作为单独变量名称。因为一些字体中,上诉字母和数字很难区分(比如:O和0,l和1)。

******************************************************************************

推荐阅读,点击就可阅读哦:

如何优雅的使用Python

Python面向对象编程

Python基础章程

自学Python如何少走弯路

2道极好的Python算法题|带你透彻理解装饰器的妙用

用 python 实现各种排序算法

****************************************************************************

小编寄语:

       如果大家有什么想要了解的或者感兴趣的,可以留言小编哦,小编会尽可能的多多发布大家感兴趣的知识点和精品文章的。

      如果有什么想要学习的资料(书籍、文档,视频,数据集等等)也可以留言哦,小编有的话会分享给大家的哈!


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/SR0zF77QIm
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/2381
 
1169 次点击