Python之禅

python之禅

凡是用过 Python的人,基本上都知道在交互式解释器中输入 import this 就会显示 Tim Peters 的 The Zen of Python,但它那偈语般的语句有点令人费解,所以我想分享一下我对它的体会,顺带给出我的翻译

>>> import this
The Zen of Python, by Tim Peters

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!

翻译和解释如下:

优美胜于丑陋(Python 以编写优美的代码为目标)
明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)
简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)
复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)
扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)
间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)
可读性很重要(优美的代码是可读的)
即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)

不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)

当存在多种可能,不要尝试去猜测
而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)
虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )

做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)

如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)

命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)

分析python之禅

咱们将python之禅的文本存储词频

word_dict = {}#存储词频 
# 这是的s是python之禅
for word in s.split():
    print(word)
    word_dict[word] = word_dict.get(word, 0) + 1
for k in word_dict:
    print('%s\t%s'%(k, word_dict[k]))

out:
The    1
Zen    1
of    3
Python,    1
by    1
Tim    1
Peters    1
Beautiful    1
is    10
better    8

排序转化成列表

sord_list = sorted(word_list,key = lambda x: x[1] ,reverse =True)
sord_list

[('is', 10),
 ('better', 8),
 ('than', 8),
 ('to', 5),
 ('the', 5),
 ('of', 3),
 ('Although', 3),
 ('be', 3),
 ('should', 2),
 ('never', 2),
 ('one', 2),

绘画词云图

import pyecharts as pe
name_list = [i[0] for i in word_list]
freq_list = [i[1] for i in word_list]
chart = pe.WordCloud('词云可视化')
chart.add("", name_list, freq_list, word_size_range=[30, 100], rotate_step=66)
chart.render('demo.html')
chart

保持简单、追求简单,我想这就是编码之中的禅,一种回归本真的境界。这种禅意在 Python 的设计哲学中体现的淋漓尽致

Python社区的理念都包含在Tim Peters撰写的“Python之禅”中。

真的是人生苦短,我用python

编写Python代码

避免劣化代码

  • 避免只用大小写来区分不同的对象;
  • 避免使用容易引起混淆的名称,变量名应与所解决的问题域一致;
  • 不要害怕过长的变量名;

代码中添加适当注释

  • 行注释仅注释复杂的操作、算法,难理解的技巧,或不够一目了然的代码;
  • 注释和代码要隔开一定的距离,无论是行注释还是块注释;
  • 给外部可访问的函数和方法(无论是否简单)添加文档注释,注释要清楚地描述方法的功能,并对参数,返回值,以及可能发生的异常进行说明,使得外部调用的人仅看docstring就能正确使用;
  • 推荐在文件头中包含copyright申明,模块描述等;
  • 注释应该是用来解释代码的功能,原因,及想法的,不该对代码本身进行解释;
  • 对不再需要的代码应该将其删除,而不是将其注释掉;

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

  • 在一组代码表达完一个完整的思路之后,应该用空白行进行间隔,推荐在函数定义或者类定义之间空两行,在类定义与第一个方法之间,或需要进行语义分隔的地方空一行,空行是在不隔断代码之间的内在联系的基础上插入的;
  • 尽量保证上下文语义的易理解性,一般是调用者在上,被调用者在下;
  • 避免过长的代码行,每行最好不要超过80字符;
  • 不要为了保持水平对齐而使用多余的空格;

编写函数的几个原则

  • 函数设计要尽量短小,嵌套层次不宜过深;
  • 函数申明应做到合理、简单、易于使用,函数名应能正确反映函数大体功能,参数设计应简洁明了,参数个数不宜过多;
  • 函数参数设计应考虑向下兼容;
  • 一个函数只做一件事,尽量保证函数语句粒度的一致性;

人生苦短,我用python

The life is short, I use python

本文分享自微信公众号 - 毛利学Python(sen13717378202)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python 3.8 即将到来,这是你需要关注的几大新特性

    Python 是一门广受好评的编程语言,每个版本的更新都会对开发社区带来一定影响。近日,Python 3.8 已进入 beta 2 版本的测试中,各项新特性已经...

    崔庆才
  • 程序员生涯,这15个障碍让我“苦不堪言”

    昨天必须得发布产品。用户争闹和咆哮某个缺失的功能。老板的老板说,我们最好迅速行动起来否则就炒我们的鱿鱼。感觉一切都有心无力。

    用户5997198
  • 只要十分钟,用Python实现自动化水军评论

    自己在写文章的时候,也有到处去逛一逛,渐渐发现了一些有意思的事,经常会有人用同样的评论到处刷,不知道是为了加没什么用的积分,还是纯粹为了表达楼主好人。那么问题来...

    一墨编程学习
  • Python爬虫要学多久 初学Python有哪些建议

    Python爬虫要学多久? 初学Python有哪些建议?个人学习能力不同,掌握的时间也不同。建议先熟悉python的基础语法,再深入练习。如果用python写爬...

    一墨编程学习
  • 世界已经无法阻挡Python入侵。

    很多人对学英语都感到崩溃,但最近山东的小学生又要学习一门“语言”—Python,除了山东在小学教材中加入Python外,今年浙江省高中信息技术教材改革项目中,也...

    用户5997198
  • 七夕礼物没送对?飞桨PaddlePaddle帮你读懂女朋友的小心思

    “女孩儿的心思男孩你别猜,你猜来猜去也猜不明白。不知道她为什么掉眼泪,也不知她为什么笑开怀……”

    量子位
  • 用Python从0开始实现一个中文拼音输入法

    众所周知,中文输入法是一个历史悠久的问题,但也实在是个繁琐的活,不知道这是不是网上很少有人分享中文拼音输入法的原因,接着这次NLP Project的机会,我觉得...

    一墨编程学习
  • 弄懂这56个Python使用技巧,秒变Python大神!

    你也许知道如何进行列表解析,但是可能不知道字典/集合解析。它们简单易用且高效。就像下面这个例子:

    一墨编程学习
  • Python爬虫小白入门必读,成为大牛必须经历的三个阶段

    学习任何一门技术,都应该带着目标去学习,目标就像一座灯塔,指引你前进,很多人学着学着就学放弃了,很大部分原因是没有明确目标,所以,一定要明确学习目的,在你准备学...

    一墨编程学习
  • 最好的Python开发编辑器都在这里

    Vim 可以说是 Python 最好的 IDE。Vim 是高级文本编辑器,旨在提供实际的 Unix 编辑器‘Vi’功能,支持更多更完善的特性集。Vim 不需要花...

    一墨编程学习

扫码关注云+社区

领取腾讯云代金券