Python之禅----The Zen of Python

QQ截图20180511161942.png

1、Python之禅算法

在 Python shell 中输入 import this,就会展现 Tim Peters 的 The Zen of Pythonshell

The Zen of Python, by Tim Peters 
app


Beautiful is better than ugly. 
Explicit is better than implicit. 
Simple is better than complex. 
Complex is better than complicated. 
Flat is better than nested. 
Sparse is better than dense. 
Readability counts. 
Special cases aren't special enough to break the rules. 
Although practicality beats purity. 
Errors should never pass silently. 
Unless explicitly silenced. 
In the face of ambiguity, refuse the temptation to guess. 
There should be one-- and preferably only one --obvious way to do it. 
Although that way may not be obvious at first unless you're Dutch. 
Now is better than never. 
Although never is often better than *right* now. 
If the implementation is hard to explain, it's a bad idea. 
If the implementation is easy to explain, it may be a good idea. 
Namespaces are one honking great idea -- let's do more of those! less


翻译以下:ide

优美胜于丑陋(Python 以编写优美的代码为目标) 
明了胜于晦涩(优美的代码应当是明了的,命名规范,风格类似) 
简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现) 
复杂胜于凌乱(若是复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁) 
扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套) 
间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题) 
可读性很重要(优美的代码是可读的) 
即使假借特例的实用性之名,也不可违背这些规则(这些规则至高无上) 
不要包容全部错误,除非你肯定须要这样作(精准地捕获异常,不写 except:pass 风格的代码) 
当存在多种可能,不要尝试去猜想 
而是尽可能找一种,最好是惟一一种明显的解决方案(若是不肯定,就用穷举法) 
虽然这并不容易,由于你不是 Python 之父(这里的 Dutch 是指 Guido ) 
作也许好过不作,但不假思索就动手还不如不作(动手以前要细思量) 
若是你没法向人描述你的方案,那确定不是一个好方案;反之亦然(方案测评标准) 
命名空间是一种绝妙的理念,咱们应当多加利用(倡导与号召)
函数


2、编写Pythonic代码布局

避免劣化代码

  • 避免只用大小写来区分不一样的对象;ui

  • 避免使用容易引发混淆的名称,变量名应与所解决的问题域一致;this

  • 不要惧怕过长的变量名;idea

代码中添加适当注释

  • 行注释仅注释复杂的操做、算法,难理解的技巧,或不够一目了然的代码;

  • 注释和代码要隔开必定的距离,不管是行注释仍是块注释;

  • 给外部可访问的函数和方法(不管是否简单)添加文档注释,注释要清楚地描述方法的功能,并对参数,返回值,以及可能发生的异常进行说明,使得外部调用的人仅看docstring就能正确使用;

  • 推荐在文件头中包含copyright申明,模块描述等;

  • 注释应该是用来解释代码的功能,缘由,及想法的,不应对代码自己进行解释;

  • 对再也不须要的代码应该将其删除,而不是将其注释掉;

适当添加空行使代码布局更为优雅、合理

  • 在一组代码表达完一个完整的思路以后,应该用空白行进行间隔,推荐在函数定义或者类定义之间空两行,在类定义与第一个方法之间,或须要进行语义分隔的地方空一行,空行是在不隔断代码之间的内在联系的基础上插入的;

  • 尽可能保证上下文语义的易理解性,通常是调用者在上,被调用者在下;

  • 避免过长的代码行,每行最好不要超过80字符;

  • 不要为了保持水平对齐而使用多余的空格;

编写函数的几个原则

  • 函数设计要尽可能短小,嵌套层次不宜过深;

  • 函数申明应作到合理、简单、易于使用,函数名应能正确反映函数大致功能,参数设计应简洁明了,参数个数不宜过多;

  • 函数参数设计应考虑向下兼容;

  • 一个函数只作一件事,尽可能保证函数语句粒度的一致性;

将常量集中到一个文件

Python没有提供定义常量的直接方式,通常有两种方法来使用常量;

  • 经过命名风格来提醒使用者该变量表明的意义为常量,如常量名全部字母大写,用下划线链接各个单词,如MAX_NUMBER,TOTLE等;

  • 经过自定义的类实现常量功能,常量要求符合两点,一是命名必须所有为大写字母,二是值一旦绑定便不可再修改;

相关文章
相关标签/搜索