Python是一个极简优雅的语言,大部分初学者,尤其从事数据科学但初学者,在初学Python时,一般会从Python基本语法、基本数据类型学起,但常常会忽略一些基本规则,Python变量命名规则就是其中一个。

当忽略了这些规则时,我们写出来的代码但易读性往往相对较差,更加不便与同行交流学习,更不用说与别人标准但程序集成与统一了。

Python库的命名约定有点混乱,但Python官方还是有做了一些约定,在我们写代码过程中,均遵守了这些约定,在代码可读性、美观性以及实用性都是有益的。

接下来云朵君从下面几个常用的方面总结了一些规则规范,以供参考。

命名样式

  1. 只能包含字母、数字和下划线,且不能以数字开头

  2. 区分字母大小写

  3. 禁止使用保留字(关键字)

>>> # 查看python关键字
>>> import keyword
>>> kw = keyword.kwlist
>>> print(kw)
>>> # 运行结果
['False', 'None', 'True', 'and', 'as',
'yield', 'assert', 'async', 'await', 'break',
'class', 'continue', 'def', 'del','elif',
'else', 'except', 'finally','for', 'from',
'global', 'if', 'import','in', 'is',
'lambda', 'nonlocal', 'not', 'or', 'pass',
'raise', 'return', 'try', 'while', 'with']
  1. 通常的命名样式如下[1]

  • b (单个小写字母)

  • B (s单个大写字母)

  • lowercase(全部小写字母)

  • lower_case_with_underscores(下划线连接的小写字母)

  • UPPERCASE(全部大写字母)

  • UPPER_CASE_WITH_UNDERSCORES (下划线连接的大写字母)

  • CapitalizedWords (或CapWords或CamelCase。这种命名叫做驼峰式大小写,有时也称为StudlyCaps。注意:在CapWords中使用首字母缩写词时,请使用首字母缩写词的所有字母大写。因此,HTTPServerError比HttpServerError好。)

  • mixedCase (与大小写字母首字母小写字母不同!)

  • Capitalized_Words_With_Underscores (下划线连接、首字母大写的写法非常难看)

驼峰式大小写[2]

当变量名和函数名称是由二个或多个单字链接在一起,而构成的唯一识别字时,利用“驼峰式大小写”来表示,可以增加变量和函数的可读性。

单字之间不以空格断开(例:camel case)或连接号(-,例:camel-case)、下划线(_,例:camel_case)链接,有两种格式:

小驼峰式命名法(lower camel case)

第一个单字以小写字母开始;第二个单字的首字母大写,例如:firstName、lastName。

大驼峰式命名法(upper camel case)

每一个单字的首字母都采用大写字母,例如:FirstName、LastName、CamelCase,也被称为Pascal命名法(英语:Pascal Case)

  1. 使用前划线或后划线的特殊形式命名惯例

  • 以单一下下划线开头的变量名(_x)不会被 from module import *语句导入

  • 前后有下划线的变量名(__x__)是系统定义的变量名,对python 解释器有特殊意义,例如__init____ import____file__

  • 以两个下划线开头但结尾没有下划线的变量名(__x)是类的成员变量,

  • 交互式模式下,变量名 _ 用于保存最后表达式的结果

命名约定

  1. 避免使用的名称

切勿将字符 "l"(小写字母el),"O"(大写字母oh)或"I"(大写字母eye)用作单个字符变量名称。在某些字体中,这些字符与数字1和零没有区别。当尝试使用"l"时,请改用"L"

  1. 软件包和模块名称

模块应使用简短的全小写名称。如果模块名称可以提高可读性,则可以在模块名称中使用下划线。尽管不鼓励使用下划线,Python软件包也应使用短小写全名。

  1. 类名

类名通常应使用驼峰式大小写(CapWords)约定。

在接口被记录并主要用作可调用函数的情况下,可以代替使用函数的命名约定。

请注意,内置名称有一个单独的约定:大多数内置名称是单个单词(或两个单词一起运行),而CapWords约定仅用于异常名称和内置常量。

  1. 函数和变量名

变量名与函数名名称应小写,必要时用下划线分隔单词以提高可读性。

# 批量转化为驼峰格式(Camel)
import re
def camel(s):s = re.sub(r"(\s|_|-)+", " ", s).title().replace(" ", "")return s[0].lower() + s[1:]
# 批量转化
def batch_camel(slist):return [camel(s) for s in slist]

以上函数解析如下

\s指匹配:[ \t\n\r\f\v]

A|B:表示匹配 A 串或 B 串。

re.sub(pattern, newchar, string): substitue代替,用newchar字符替代与pattern匹配的字符所有。

title(): 转化为大写,例子:'Hello world'.title() -> 'Hello World'

s = s[0].lower()+s[1:]  将第一个字母转化为小写。


  1. 函数和方法参数

始终将self作为实例方法的第一个参数。始终对类方法的第一个参数使用cls

如果函数参数的名称与保留关键字发生冲突,通常最好在末尾附加一个下划线,而不要使用缩写或拼写错误。因此,class_优于clss

  1. 常数

常量通常在模块级别定义,并以所有大写字母书写,并用下划线分隔单词。示例包括 MAX_OVERFLOWTOTAL

总结

做到如下几个方面就会成为一个具有良好编程习惯的程序员。

  • 变量名应该能够描述变量表示的信息。

  • 优先考虑代码的易懂性,而不是编写代码的速度。

  • 采用标准的命名约定,做出一个全局决策而不是多个本地决策。

  • 变量/函数名称:用小写字母表示,中间用下划线分割。

  • 常量:用大写字母。

  • Class类:首字母大写,其余小写。

参考资料

[1]

python官网: https://www.python.org/dev/peps/pep-0008/#naming-conventions

[2]

维基百科: https://en.wikipedia.org/wiki/Camel_case

-- 数据STUDIO --

这些规范你需要上点心相关推荐

  1. 驳《编码规范是技术上的遮羞布》自由发挥==摆脱编码规范?X

    引子: 看了一坨文字<编码规范是技术上的遮羞布>,很是上火,见人见智,本是无可厚非,却深感误人子弟者众.原文观点做一个简单的提炼: 1.扔掉编码规范吧,让程序员自由发挥,你会得到更多的好处 ...

  2. 第四章 OAuth2.0规范(史上最详细解释)——获得授权

    为了请求访问令牌,客户端从资源所有者获得授权.授权表现为授权许可的形式,客户端用它请求访问令牌.OAuth定义了四种许可类型:授权码.隐式许可.资源所有者密码凭据和客户端凭据.它还提供了扩展机制定义其 ...

  3. git分支管理规范和gitee上分支开发

    git分支管理规范 分支开发图示: 初始化仓库 git init 初始化master vim Readme.md git add . git commit -m "init" 创建 ...

  4. Webpack 2 视频教程 009 - 配置 ESLint 实现代码规范自动测试 (上)

    原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...

  5. c# 通过解析mp3规范命名并上传服务器

    引用using Shell32; private void Open_Click(object sender, RoutedEventArgs e){OpenFileDialog ofd = new ...

  6. 分享GitHub上一位老外的嵌入式C编码规范(收藏细读)

    简 介: 本文分析在头条上分享GitHub上一位老外的嵌入式C编码规范(收藏细读):嵌入式大杂烩. 关键词: 嵌入式,C语句,编程规范 分享GitHub上一位老外的嵌入式C编码规范(收藏细读) §01 ...

  7. 研究称Instagram上“名人效应”广告的规范率只占7%

    6月13日消息,据国外媒体报道,研究发现,Instagram上大批名人在为品牌宣传的帖子中,有93%没有按照美国联邦公平贸易委员会(FTC)的规范来打广告. 你在Instagram上有关注一批名人吗? ...

  8. mysql学习资料_一不小心,我就上传了 279674 字的 MySQL 学习资料到 github 上了

    自从2019年11月我们出版了<千金良方--MySQL 性能优化金字塔法则>一书之后,持续不断有人来询问我MySQL 4 个系统字典库相关的问题,因为篇幅原因,书中并没有完整收录4个字典库 ...

  9. 实现一个完美符合Promise/A+规范的Promise

    原文在我的博客中:原文地址 如果文章对您有帮助,您的star是对我最好的鼓励- 简要介绍:Promise允许我们通过链式调用的方式来解决"回调地狱"的问题,特别是在异步过程中,通过 ...

最新文章

  1. Sqlite3支持的数据类型 日期函数 Sqlite3 函数
  2. 我在学python-你们以为我在学C++?其实我在学Python!人生苦短!
  3. 汇编 加法减法指令 inc dec add sub neg 标志寄存器测试
  4. linux环境c语言实现who,C语言编程实现Linux命令——who
  5. php框架设计(图)
  6. OrCAD分裂元件的使用方法
  7. 更改span标签样式_CSS 内嵌样式
  8. java反序列化异常接不到_由Java对象反序列化异常想到的
  9. OpenCV3学习(2.2)——图像Mat矩阵操作与常用函数
  10. 好分数阅卷3.0_四川自考阅卷会为了控制通过率故意压分吗?考不过怎么办?
  11. Java类加载文章2(z)
  12. 70. Climbing Stairs【leetcode】递归,动态规划,java,算法
  13. 小结大学计算机基础课程内容报告,WORD制作新年贺卡和个人简历大学计算机基础课程设计报告书.doc...
  14. ReactNative集成百度语音合成
  15. 掌控你的信息流:在自己的VPS上部署RSSHub
  16. 游戏攻略 一 天堂W(韩)
  17. 第17节 三个败家子(17)——少侠孙坚
  18. 多核时代多线程编程(一)基本策略
  19. 个人手机网站接入支付宝在线收款功能
  20. 如何在VM16上安装虚拟机(win7)及联网

热门文章

  1. 在attachments上做的八道题
  2. (C语言)八大排序之:希尔排序
  3. 【数值预测案例】(7) CNN-LSTM 混合神经网络气温预测,附TensorFlow完整代码
  4. sqlserver excel导入数据时有null,为空值
  5. 学习笔记:防火墙带宽管理
  6. 用python,flask,echarts实现豆瓣读书top250的爬取及可视化大屏
  7. layui发送短信验证码 (二)后台接收及校验
  8. EtherCAT igh主站控制埃斯顿伺服回零
  9. 移动端chrome与safria vh高度问题
  10. 财务案例Excel应用-我们一直在等待的UiPath