Python机器学习代码中的命名

本文探讨了Python机器学习代码中的命名规范,强调了代码可读性和英语语法的重要性。作者指出,程序员应遵循Python官方的PEP 0008规范,并避免拼写错误、词性错误、单复数误用和不恰当的缩写。文中还提醒注意机器学习领域的特定词汇和数学符号的命名,建议程序员利用英文资源提升代码质量。
摘要由CSDN通过智能技术生成

Python代码规范

最近看了几期CSDN上面的机器学习培训,说实话,对于培训讲师的英文水平和代码规范实在不敢恭维。为什么代码规范能和英文水平联系起来呢?别忘了,我们一般都是用英文写代码的。一个人搞不清楚单复数和词形,写出来的代码看着就很难受。

如果我一直都看国内讲师的节目,也许挑不出毛病。恰好我是先看的斯坦福,coursera等课程,也看了python for data analysis等规范的教材。所以一开始就养成了良好的编程习惯。

子曰:名不正则言不顺。

作为python的机器学习工程师,首先要和其他python程序员一样遵守python代码规范。

以下是Python官方的代码规范:

https://www.python.org/dev/peps/pep-0008/

有些内容,我看了以后还是挺吃惊的。比如python对于数学公式的规范:

#正确的示范

y = a*x + b

#错误的示范

y = a * x + b

想知道为什么?自己去看。

代码规范的核心就是要让代码可读,如果代码规范会使得代码的可读性下降,那么可以不遵守代码规范。

代码规范中提到内容,这里不再重复。以下是我对代码规范的补充。

代码中的英语和语法

很多人写文章谈代码规范,都是翻译或者看了外国人写的文章,对于中国人经常犯的错误,闭口不提。但是我发现,程序员写代码用的是英语,但是却不注意英语的使用。我作为程序员兼英语老师,对这个特别有发言权。

拼写错误

程序员为了赶时间,随便就取了个名字,殊不知拼写错了。我遇到的最夸张的是,有人把Exists(存在)写成了Exit(退出)。这个小小的错误足足耽误了我半天时间,我不仅需要反复确认我的判断,还需要修改很多代码(他的这个错误到处存在)。我开玩笑说,我接手的代码到处都存在(Exist)bug,我都想退出(Exit)了。

我们都知道写错别字是不对的,但是程序员们为了赶时间,往往忽视这点。但是这样就给后来的程序员很大的困扰:改还是不改,这是个问题。

还有一类拼写错误,是反复使用一个词的时候,有一次不小心打错了。其实这样的错误是可以避免的。首先,应该避免反复使用同一个字符串。办法就是把同样的字符串放到静态变量里,或者使用枚举。

单词拼错,并不是一个英文好不好的问题。而是,程序员们工作压力太大,没有时间关心代码可读性。这反映出当今中国社会急功近利的浮躁文化。

平时单词经常读错也是导致写代码的时候写错的原因之一,这个只能靠自己了。

顺便提一下,机器学习中被中国人读错最多的就是ensemble这个单词。这个读ang-semble。这个单词CSDN的某讲师也是读错的。

词性错误

词性错误在国内也特别常见。我看到有人把方法名叫做Imputer,这明显有问题。如果他好好看过scikit-learn的代码,他应该知道Imputer这个词,肯定是个类名(大写)或者module名(小写)。

类和module是一组相关的操作(动作)的集合,类和module解决一个是什么的问题,方法解决一个干什么的问题。比如,有个类叫做水壶那么,他就会有三个方法,接水,倒水,烧水。如果你把三个方法叫做接水器,倒水器,烧水器,是不是很奇怪?

Python当中,方法名可以用名词,而当方法名是名词的时候,他相当于省略了get或者set。比如plt.title(“人口增长”),就是设置title。这个在Java当中,应该使用setTitle了,而title应该是私有的变量。

我们回过来说Imputer这个词,他肯定是个类,而他的主要方法就是impute。

再说说布尔型的变量。他肯定是个形容词,为了可读性,有时可以加上is或者has。比如isnull()函数,has_key()函数。对于数据挖掘的数据,我会分为categorical和continuous,我没有加is,我觉得这已经很清楚了,加is画蛇添足。

接着前面的has,说说第三人称的问题。国内很多人写代码,容易把has写成have,Exists写出Exist。这里为什么要用第三人称呢?这个问题好像我也回答不了。你可以这样理解:The dict has the key ‘a’。但是为什么impute不是imputes?正确的英语应该是:The imputer imputes the data。根据我的观察,如果返回值是布尔型的,函数使用第三人称。我没见过任何一个编码规范这样说,但是大家实际上都是这么做的。

词性 适用于
名词 类名,module名,变量名,方法名
动词 方法名
第三人称动词 方法名,返回值是布尔型
形容词 布尔型变量名,布尔型函数名

下表给出python中各种成员的命名语法ÿ

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

织网者Eric

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值