Python简洁美 -- 1、Python式思维(一)

1. Python式思维

Python有别于其他编程语言的特点就是它的简单,但简单的同时又不乏深度。正是因为Python的简单,所以在编写代码时反而要特别小心,尤其对于大的项目,很容易因为其简单导致写出来的代码变得异常复杂而臃肿。Python有个称之为Python禅道(Zen of Python)的理念,倡导的就是宁简勿繁。

在本章,你会学到一些让你的Python代码变得更易读、更简洁的一些常用方法,其中一些技巧可能众所周知,另外一些技巧并没那么广为人知。那么,在现有的项目中,或者后续项目中,可以有意识的应用这些技巧,让你的代码变得质量更高。

使用Python,遵循Python禅道(Zen of Python)理念可以让你的代码更Python化,Python官方文档里推荐了很多让代码更简洁易读的实践做法,研读其中的PEP8有助于理解为什么会推荐这些编程实践。


1.1 编写Python式代码

Python官方称之为PEP8的文档约定了编写Python式代码的最佳实践,这些编程风格指南会持续保持更新,最新文档请参阅https://www.python.org/dev/peps/pep-008

1.1.1 命名

本人作为程序员,使用过多种开发语言,如Java、NodeJS、Perl、Golang等,所有的这些语言都有自己对应的命名规范,包括变量、函数、类等等。本节会着重讨论编写Python代码中你需要遵循的命名规范。

1.1.1.1 变量和函数

函数和变量的命名推荐使用下划线分割的单词进行命名,以提高代码的可读性,如代码1-1:

代码 1-1 变量名

当然,你还可以单下划线(_)或双下划线(__)作为变量的前缀,称之为免冲突(nonmangling:为避免和python自带的命名冲突所采用的一种方法)法的方式进行命名,如代码1-2所示:

代码-1-2 免冲突(nonmangling)命名

推荐使用单下划线(_)作为类内部变量的前缀,用以标识改变量不允许在类外部进行访问,但这仅仅是个约定,Python本身并无法将这种形式的变量真正私有化。

Python对于函数的命名同样也有约定,如代码1-3所示:

代码1-3 常用函数命名

对于私有函数,或者为避免与Python的内嵌函数命名冲突,也可以使用同变量命名的相同规则,如代码1-4所示:

代码1-4 标识私有函数的命名或防冲突命名

除了遵循这些规则,另外很重要的一点,不要在变量或函数名称使用含义模糊的名字,而是要给命名赋予明确的含义。

让我们来看下面这个函数,通过所提供的用户ID,返回用户对象,如代码1-5所示:

代码1-5 函数命名

在代码可以看到,第二个函数get_user_by,可以确保传递变量时使用相同的语境,从而让函数拥有了正确的上下文。而第一个函数get_user_info因参数id可代表任何含义,让函数的变得模凌两可。这个id是用户表的索引id,还是用户的账户id,还是其它的什么id?这种类型的代码会给其它开发人员使用你开发好的API造成很多困惑。因此,为解决这个问题,在第二个函数中做了两个改变:更改了函数名称和所传递的参数名,让代码变得更易读。当看到这个函数的时候,你立马会知道函数的目的以及函数所期望传入的参数。

作为开发人员,时刻牢记在给变量和函数命名的时候需要仔细斟酌考虑,让其他开发人员更容易看懂是你的重要职责。

1.1.1.2 类

和其它别的语言一样,Python类的命名需遵循驼峰命名法,如代码1-6中简单例子所示:

代码1-5 类命名

1.1.1.3 常量

常量命名应该使用大写字母,如代码1-7所示:

代码1-7 常量命名

1.1.1.4 函数和方法的参数

函数和方法的参数需要遵循和变量及函数命名相同的规则。类方法第一个参数需使用self,其它方法不允许使用self作为参数,如代码1-8:

代码1-8 函数和方法的参数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352