一文轻松掌握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中使用语句导入模块或包的机制研究
Mar 30 Python
对Python新手编程过程中如何规避一些常见问题的建议
Apr 01 Python
使用python编写简单的小程序编译成exe跑在win10上
Jan 15 Python
Python中的函数式编程:不可变的数据结构
Oct 08 Python
对python数据切割归并算法的实例讲解
Dec 12 Python
浅谈Python接口对json串的处理方法
Dec 19 Python
基于python历史天气采集的分析
Feb 14 Python
解决tensorflow训练时内存持续增加并占满的问题
Jan 19 Python
Python + selenium + crontab实现每日定时自动打卡功能
Mar 31 Python
Python参数传递及收集机制原理解析
Jun 05 Python
Python 创建守护进程的示例
Sep 29 Python
Python爬虫抓取论坛关键字过程解析
Oct 19 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
PHP邮件发送类PHPMailer用法实例详解
2014/09/22 PHP
PHP中执行cmd命令的方法
2014/10/11 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
2013/04/17 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
2016/02/25 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
浅谈Webpack自动化构建实践指南
2017/12/18 Javascript
vue 中directive功能的简单实现
2018/01/05 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
2018/10/11 Javascript
vue.js中导出Excel表格的案例分析
2019/06/11 Javascript
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
JavaScript实现公告栏上下滚动效果
2020/03/13 Javascript
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
vant 中van-list的用法说明
2020/11/11 Javascript
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
2019/04/26 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
2019/06/14 Python
python requests更换代理适用于IP频率限制的方法
2019/08/21 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
python多进程并行代码实例
2019/09/30 Python
python语音识别指南终极版(有这一篇足矣)
2020/09/09 Python
Python 高效编程技巧分享
2020/09/10 Python
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
2019年.net常见面试问题
2012/02/12 面试题
汽车运用工程系毕业生自荐信
2013/12/27 职场文书
环保公益广告语
2014/03/13 职场文书
态度决定一切演讲稿
2014/05/20 职场文书
年终考核实施方案
2014/05/26 职场文书
信息管理与信息系统专业求职信
2014/06/21 职场文书
Python实现归一化算法详情
2022/03/18 Python
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android