一文轻松掌握python语言命名规范规则


Posted in Python onJune 18, 2020

和C/C++、Java等语言一样,python在命名上也有一套约定俗成的规则,符合规范的命名可以让程序的可读性大大增加,从而使得代码的逻辑性增强,易于自己和其他协作者在以后的拓展中理解代码的意义,从而提高编写代码的效率。
我们在平常编写程序的时候需要注意以下几点:

一、python变量名命名的硬性规则

1.1. 变量名大小写敏感

python变量名区分大小写,也就是Student和student在python语言中代表两个不同的名字。

1.2. python的变量名字中可以包含英文、下划线、数字,但是不能以数字开头。

也就是说,student_id、student1、student_1、student、_student、_等都是合理的命名,但是1student就是非法的命名。

二、不同风格命名的变量代表不同的类型

与java中命名习惯使用驼峰命名法不同(有可能发明java的程序猿大哥不但喜欢喝爪哇岛的咖啡,也喜欢骑爪哇岛上的骆驼,哈哈),python变量命名一般采用蛇形命名法(毕竟python的本意就是大蟒蛇),也就是如果变量名由两个单词组成,那么使用下划线来连接这两个单词,比如student_id。当然,我们也会在python中看到类似驼峰命名法的变量名,对于专业的程序猿来说,这些命名都不是随便写的,他们符合一定的标准,下面总结以下:

2.1.模块(module)命名风格

模块尽量使用小写命名,首字母保持小写,尽量不要用下划线(除非多个单词,且数量不多的情况)

# 正确的模块名
import decoder
import html_parser

# 不推荐的模块名
import Decoder

2.2.类(class)的命名

类名使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头

class Farm():
 pass

class AnimalFarm(Farm):
 pass

class _PrivateFarm(Farm):
 pass

2.3.函数(function)的命名

函数名一律小写,如有多个单词,用下划线隔开。

def run():
 pass

def run_with_env():
 pass

2.4.变量(variable)的命名

变量名尽量小写, 如有多个单词,用下划线隔开

if __name__ == '__main__':
 count = 0
 school_name = ''

2.5.常量(constant)的命名

如果我们想用一个符号来代表常量(值是不变的量,比如光速、π等),采用全部大写,如有多个单词,使用下划线隔开。

MAX_CLIENT = 100
MAX_CONNECTION = 1000
CONNECTION_TIMEOUT = 600

三、“下划线”开头的特殊命名

很多时候,我们在python的源代码中会看到下划线开头的变量,初学者看到这些变量会感觉怪怪的。确实,这些“_”开头的命名是具有特殊含义的:

3.1.单下划线开头的命名

  • 如果类变量以单下划线“_”开头,代表这个变量不能被直接访问,类似于C++中的protected型,这样的变量也不能被 import
  • module_name导入。
  • 使用单下划线(one underline)开头的方法,则表示该方法不是AP的一部分,不要直接访问(虽然语法上访问也没有什么问题)。

3.2.双下划线开头的命名

  • 以双下划线(two underlines)开头的类变量,表示为类的私有成员,不能被导入和其他类变量访问。
  • 对于类中的方法,使用双下划线开头开头表示子类不能覆写该方法。除非你真的知道你在干什么,否则不要使用这种方式。

3.3.双下划线开头并且双下划线结尾的命名

魔法方法:以双下划线开头和双下划线结尾的变量是Python的专用标识,有其特殊的身份。我们一般称这样的方法为“魔法方法”(magic method)。

  • 魔法方法是python内置方法,不需要主动调用,存在的目的是为了给python的解释器进行调用,几乎每个魔法方法都有一个对应的内置函数,或者运算符,当我们对这个对象使用这些函数或者运算符时就会调用类中的对应魔法方法,可以理解为重写这些python的内置函数。
  • 当你想让自己定义的对象也可以像Python内置的对象一样使用内置的一些函数或操作符(比如len、add、+、、==等)时,你可以定义该类方法。
  • 当然还有些属性只在末尾加了但下划线这仅仅是为了避免我们起的一些名字和Python保留关键字冲突,没有特殊含义。
  • 下划线变量(方法)的使用,往往和面向对象编程中类(class)的设计相关,更多更深入的知识,可以参考   这篇博客。当然,如果需要了解更多python编程规范,PEP8(Python Enhancement Proposal8)的官方文档是最佳的参考资料。

到此这篇关于一文轻松掌握python语言命名规范规则的文章就介绍到这了,更多相关python命名规范 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木! 

Python 相关文章推荐
Python自定义线程池实现方法分析
Feb 07 Python
TensorFlow实现卷积神经网络CNN
Mar 09 Python
python实现对求解最长回文子串的动态规划算法
Jun 02 Python
python实现按长宽比缩放图片
Jun 07 Python
使用numpy和PIL进行简单的图像处理方法
Jul 02 Python
python实现栅栏加解密 支持密钥加密
Mar 20 Python
详解Python下载图片并保存本地的两种方式
May 15 Python
Python笔记之工厂模式
Nov 20 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
Jan 15 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
May 20 Python
python线程里哪种模块比较适合
Aug 02 Python
python 生成正态分布数据,并绘图和解析
Dec 21 Python
Python学习之路之pycharm的第一个项目搭建过程
Jun 18 #Python
基于PyTorch的permute和reshape/view的区别介绍
Jun 18 #Python
Python Switch Case三种实现方法代码实例
Jun 18 #Python
Python3开发环境搭建详细教程
Jun 18 #Python
Python collections.defaultdict模块用法详解
Jun 18 #Python
python实现批量命名照片
Jun 18 #Python
pandas之分组groupby()的使用整理与总结
Jun 18 #Python
You might like
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
PHP批量生成缩略图的代码
2008/07/19 PHP
php array_intersect()函数使用代码
2009/01/14 PHP
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
PHP简单读取PDF页数的实现方法
2016/07/21 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
浅谈javascript的数据类型检测
2010/07/10 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
简介JavaScript中用于处理正切的Math.tan()方法
2015/06/15 Javascript
JavaScript清空数组元素的两种方法简单比较
2015/07/10 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
JavaScript数值千分位格式化的两种简单实现方法
2016/08/01 Javascript
node.js实现的装饰者模式示例
2017/09/06 Javascript
深入理解JS的事件绑定、事件流模型
2018/05/13 Javascript
vue的token刷新处理的方法
2018/07/17 Javascript
Vue.js中的组件系统
2019/05/30 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
解决antd日期选择组件,添加value就无法点击下一年和下一月问题
2020/10/29 Javascript
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
Scrapy框架CrawlSpiders的介绍以及使用详解
2017/11/29 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
2018/05/10 Python
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
2019/08/02 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
tf.concat中axis的含义与使用详解
2020/02/07 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
如何在Windows中安装多个python解释器
2020/06/16 Python
竞聘书模板
2014/03/31 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
应届生找工作求职信
2014/06/24 职场文书
中英文求职信范文
2015/03/19 职场文书
刑事辩护词范文
2015/05/21 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android