关于变量的命名,这又是一个容易引发程序员论战的话题。如何命名才能更具有可读性、易写性与明义性呢?众说纷纭。

本期“Python为什么”栏目,我们将聚焦于变量命名中的连接方式,来切入这块是非之地,想要回答的问题是——Python 为什么要推荐蛇形命名法?

首先一点,对于单个字符或者单词(例如:a、A、PYTHON、Cat),当它们被用作变量名时,大致有全小写、全大写和首字母大写这几种情况。编程语言中出现这些情况时,它们基本上跟英语的表达习惯是相同的。

但是,编程语言为了令变量名表达出更丰富的含义,通常需要使用多个单词或符号。英语习惯使用空格来间隔开单词,然而这种用法在编程语言中会带来一些麻烦,所以程序员们就创造出了另外的方法:蛇形命名法(snake case)

驼峰命名法(camel case)

匈牙利命名法(HN case)

帕斯卡命名法(Pascal case)

脊柱命名法(spinal case)

自由命名法(studly caps)

驼峰蛇形命名法

总体而言,这些命名法都是要克服单词间的空格,从而把不同单词串连起来,最终达到创造出一种新的“单词”的效果。

我画了一张思维导图,大略区分了这几种命名法:

如果按照受众量与知名程度排名,毫无疑问排前两位的是驼峰命名法和蛇形命名法。

我们简单比较一下它们的优缺点:可读性:蛇形命名法用下划线拉大词距,更清楚易读;驼峰命名法的变量名紧凑,节省行宽

易写性:驼峰命名法以大小写为区分,不引入额外的标识符;蛇形命名法统一小写,输入相对方便

明义性:对于某些缩写成的专有名词,例如HTTP、RGB、DNS等等,一般习惯全用大写表示,但是如果严格遵循这两种命名法的话,须得只留首字母大写或者全小写,这样对原意都会造成一些“破坏”,有时候甚至让人感觉到别扭。如果保留全大写,IDE可能识别不准,反而会出现波浪提示

由此可见,它们各有优缺点,但哪一方都不具有压倒性。我个人稍微偏好于蛇形命名法,但是在需要用驼峰命名的时候(比如写 Java 时),也能无障碍切换。

需要指出的是,Python 也推荐使用驼峰式命名,那是在类名、Type 变量、异常 exception 名这些情况。而在包名、模块名、方法名和普通变量名等情况,则是推荐用蛇形命名(lower_case_with_underscores)。

那么,为什么 Python 会推荐用蛇形命名法呢?

最大的原因是历史原因。蛇形命名方式起源于 1960 年代,那时它甚至还没有特定的名称。Python 从 C 语言中借鉴过来后,给它起名为“lower_case_with_underscores”,即带下划线的小写命名。

直到 21 世纪初的几年,在 Intel 和 Ruby 社区中,才有人开始以“snake_case”即蛇形命名来称呼它。

现今有不少编程语言在某些场景下会推荐使用蛇形命名法,而 Python 则是其中最早这么做的之一,并且是使用场景最多的语言之一。

维基百科上统计了一份清单,可以看出 Python 对它的偏好:

其次,还有一个比较重要的原因,那就是 Python 对下划线“_”的独特偏爱。

比如类似于 _xx、__xx、xx_、__xx__ 等等的写法就随处可见,甚至还有孤零零一个下划线 _ 作为变量的特殊情况。这样看来,下划线作为单词间的连接,恰恰是这种传统习惯的一部分。

最后,我还看到过一种解释:因为 Python 是蟒蛇啊,理所当然是用蛇形命名……

对于这三个解释,你们是如何感想的呢?对于蛇形命名法,大家是喜欢还是不喜欢呢?欢迎留言交流。

python为什么是蟒蛇_Python 为什么推荐蛇形命名法?相关推荐

  1. python的标志为什么是蛇_Python 为什么推荐蛇形命名法原因浅析

    关于变量的命名,这又是一个容易引发程序员论战的话题.如何命名才能更具有可读性.易写性与明义性呢?众说纷纭. 本期"Python为什么"栏目,我们将聚焦于变量命名中的连接方式,来切入 ...

  2. php 字符串转驼峰,zhouqq - PHP 蛇形命名法(snake case)和驼峰命名法(camel case) 相互转换...

    知道什么是蛇形命名法(snake case)和驼峰命名法(camel case)吗? snake case类似于这样: file_name. line_number. my_first_program ...

  3. 如何用python画七彩蟒蛇_Python实现七彩蟒蛇绘制实例代码

    本文主要研究的是Python编程turtle的实例,绘制一个七彩蟒蛇..具体如下. 第2周的课后练习里,有一道题目,要求修改"蟒蛇绘制"程序,对Python 蟒蛇的每个部分采用不同 ...

  4. python字体有哪些_python字体推荐 python编程100例

    新手小白想自学python语言,求推荐基本书,没有编程经验的小白怎么办? Python的第一个漏洞是版本2和版本3,但是从2020年1月起,2将停止维护.所以,从Python开始. 这个网站是第一个推 ...

  5. python答案画蟒蛇_python画蟒蛇

    用海龟画图绘制一条蟒蛇 代码如下 #画蟒蛇 #引入turtle库(海龟画图) from turtle import* #设置背景颜色/画笔大小/设计路径等 setup(650,350,200,200) ...

  6. python文件批量改名_python文件批量重命名

    python文件批量重命名 代码如下: # -*- coding: gbk -*- import os class fileRename(): def __init__(self, path): se ...

  7. python中变量名_python中变量的命名及详解

    变量 一个变量存储一个值. 示例message = "Hello Python world!" print(message) 一个变量存储一个值.你可以在任何时候改变这个值. me ...

  8. python引用计数实例_Python中的引用计数法

    [toc] 引用计数法 增量操作 如果对象的引用数量增加,就在该对象的计数器上进行增量操作.在实际中它是由宏Py_INCREF() 执行的. #define Py_INCREF(op) (((PyOb ...

  9. python主函数参数_Python main函数、命名行参数

    1,main函数 python是基于脚本顺序执行,没有main函数的概念,但是我们可以通过关键字 __name__来模拟. __name__:模块名,当执行文件和当前模块一致时,__name__的值等 ...

最新文章

  1. set RowCount 与 top n
  2. 李宏毅线性代数总结:万事万物皆可为向量
  3. LeakCanary——消除Android中的内存泄露
  4. SOA的缺陷及其与微服务的关系
  5. Debian 9 中设置网络
  6. [汇编语言]实验:应用更灵活的寻址方式来定位内存地址
  7. gatling的环境配置_将Gatling集成到Gradle构建中–了解SourceSet和配置
  8. 前端学习(2691):重读vue电商网站12之获取选中节点的keys:
  9. php命令行用法简介
  10. 怎么修改SQL Server服务器选项,Analysis Services 实例的 SPN 注册 | Microsoft Docs
  11. php代码审计小技巧
  12. operator() error
  13. 前端培训Ajax-onreadystatechange 事件
  14. PHP实现PayPal支付对接
  15. 红蓝对抗---蓝队手册
  16. 铺地毯(NOIP真题)
  17. js正则表达式 URL格式匹配详解
  18. 团宝回来了 星晨急便跑了 你们在愚弄谁
  19. STM32驱动开发(二)--USB Device RNDIS虚拟网卡(usb hound抓包完整数据流分析)
  20. Android Device Monitor 工具位置

热门文章

  1. Code First :使用Entity. Framework编程(6) ----转发 收藏
  2. C#面试题整理(不带答案)
  3. 安装数据库windows 安装redmine 详解
  4. 基于FPGA的图像处理(一)--System Generator介绍
  5. 开始android旅程
  6. .NET Framework 1.1安装出现1935错误的解决办法
  7. android 7.1 apk的systemuid [2]
  8. 计算机专业需要注意什么细节,计算机专业考生复试注意事项
  9. 每日一题(47)—— 置1与清0
  10. String Table MFC