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

本期“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 蛇形命名法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

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

  1. python为什么是蟒蛇_Python 为什么推荐蛇形命名法?

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

  2. python经典小游戏贪吃蛇_Python开发贪吃蛇小游戏

    独完成一个设计的工作量的可能性很小,因为你总会遇到这样那样的问题.在编写的时候,一个小小的符号,一个常量变量的设定,这都无不考量着我们的细心与严谨.所以,我理解到了作为一个编程人员首先应具有良好的心理 ...

  3. python的标志为什么是蛇_Guido给Python语言起名的原因是他家有只宠物蛇

    Guido给Python语言起名的原因是他家有只宠物蛇 答:× 帮助幼儿处理情绪,那种方式是合适的(?) 答:帮助孩子认清情绪的来源 下列不属于学术常识原则的是 ( ) 答:共同承担责任原则 < ...

  4. python聚类分析如何确定分类个数_Python数据挖掘—聚类—KMeans划分法

    概念 聚类分析:是按照个体的特征将它们分类,让同一个类别内的个体之间具有较高的相似度,不同类别之间具有较大差异性 无分类目标变量(Y)--无监督学习 K-Means划分法.DBSCAN密度法.层次聚类 ...

  5. python函数内部返回的值_Python中函数的返回值示例浅析

    前言: 前面我们介绍了简单的介绍了函数和函数的参数,今天我们来说一下Python中函数的返回值. 函数的返回值:函数运算的结果,需要进一步的操作时,给一个返回值return用来返回函数的结果,如果没有 ...

  6. python中str和int区别_python中eval与int的区别浅析

    python中eval和int的区别是什么?下面给大家介绍一下: 1.eval()函数 eval(<字符串>)能够以Python表达式的方式解析并执行字符串,并将返回结果输出.eval() ...

  7. python 解压文件 重名_python小试身手-文件重命名,文件复制和压缩(.gz) - 铁匠铺的小铁匠...

    1 #!/usr/local/bin/python 2 #coding=UTF-8 3 4 importos5 importcsv as csv6 importre7 importshutil8 im ...

  8. python驼峰命名法_蛇形命名,驼峰命名,你的选择?

    关于今天要讲的,小编想想还有点小激动.那就是关于变量的命名,这个一直都是容易引起程序员论战的话题.如何命名才更具可读性.易写性以及明义性? 程序命名常使用的是英文单词,当他们被作为变量名时,有全小写. ...

  9. 【python教程入门学习】Python实现自动玩贪吃蛇程序

    这篇文章主要介绍了通过Python实现的简易的自动玩贪吃蛇游戏的小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学一学 实现效果 先看看效果 这比我手动的快多了,而且是单机的,自动玩没惹 ...

最新文章

  1. js事件(Event)知识整理
  2. 青果灵动刘睿:3D页游将有更多机会
  3. Asp.Net ajax 面向对象类型系统2 - 使用事件
  4. CG-CTF-Web-/x00
  5. .Net中的多态知识点
  6. Kconfig中的“depends on”和“select”
  7. java deque.pop_Java - dequeue的介紹及用法
  8. 一个特殊的SQL Server阻塞案例分析
  9. mysql 主从复制原理【转】
  10. ​【安全篇 / Web过滤】(5.6) ❀ 01. DNS 过滤僵尸网络 ❀ FortiGate 防火墙
  11. t-SNE原理与推导
  12. Python 汇率换算
  13. 手机163邮箱发送服务器端口,163邮箱发送端口
  14. 时空人文之旅(二):夜话“时空”——从盘古开天辟地说起
  15. 计算机屏幕出现条纹w7,电脑重装win7后屏幕出现条纹怎么办
  16. ubuntu图形界面乱码解决办法
  17. VSCode前端文件(html文件)以服务器模式在chrome浏览器打开
  18. 【愚公系列】2022年09月 微信小程序-slider滑动选择器详解
  19. 清除一个挖矿程序、步骤!!!
  20. 浙大PAT 1003题 1003. Emergency

热门文章

  1. 文件从头开始读函数_如何从头开始编写自己的Promisify函数
  2. 构建python应用_构建天气应用
  3. 139_Power BI之某制造企业HR相关数据年度复盘
  4. 谈谈我对正向代理和反向代理的理解
  5. Python3爬虫反反爬之搞定同程旅游加密参数 antitoken
  6. 小白学 Python 爬虫:自动化测试框架 Selenium 从入门到实战
  7. Django连接mysql数据库(python3.6)
  8. tensorflow中random_normal的使用,案例说明,一看便知
  9. 【opencv学习】【图像的数值计算操作】
  10. oracle中右表有过滤条件的left outer join