设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1773|回复: 0

[python] 细数10个隐藏在Python中的彩蛋

[复制链接]

122

主题

1万

金钱

1万

积分

资深用户

发表于 2018-3-21 13:22:04 | 显示全部楼层 |阅读模式
1、Python中的“八荣八耻”

import this 中隐藏了一首《Python之禅》的诗,它是Python中的『八荣八耻』,作者是 Tim Peters ,每个有追求的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 way not be obvious at first unless you’re Dutch.
虽然一开始这种方法并不是显而易见的,但谁叫你不是Python之父呢。

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!
命名空间是个绝妙的想法,让我们多多地使用它们吧!


2、enumerate函数用于遍历列表中的元素以及它们的下标


[img=513,196]http://ss.csdn.net/p?http://mmbiz.qpic.cn/mmbiz_png/d6CtJCxf1u2CGjMfNfrg2JyeVKeYAT1ndjTiaK8Uzawd882N8T8ibbELwP83T973pYiaGmMfDeldMiaiak1owib6oJEw/640?wx_fmt=png[/img]

3、对默认实参要多加小心


[img=337,219]http://ss.csdn.net/p?http://mmbiz.qpic.cn/mmbiz_png/d6CtJCxf1u2CGjMfNfrg2JyeVKeYAT1n3Qaic8R1w2w2WMR13zDzsKQZNFQa7rYgmsLLkupSfpfkVv9T8xNE9ug/640?wx_fmt=png[/img]

相反,你应该使用一个标记值表示“无定义”,来替换“[]”。


[img=322,203]http://ss.csdn.net/p?http://mmbiz.qpic.cn/mmbiz_png/d6CtJCxf1u2CGjMfNfrg2JyeVKeYAT1nnrNbcmAjBic3tvec6cvABfzJAn5iahupTKkcGfWkcTeRwDz0YdNKNrpw/640?wx_fmt=png[/img]

4、对于C系的那些更喜欢括号而不是缩进的开发者:

C++、Java编程中使用花括号表示代码块,而 Python 社区却给 C++ 一类程序员开了一个玩笑,braces 翻译过来是「花括号」的意思,导入 braces 就可以使用花括号,然而,Python 社区对此的真实态度是:没门儿!

>>> from __future__ import bracesSyntaxError: not a chance

5切片操作中的tricks

a = [1,2,3,4,5] >>> a[::2] [1,3,5]

特殊的例子是x[::-1],它可以将列表反转

>>> a[::-1] [5,4,3,2,1]

6、装饰器

装饰器实现了在一个函数中调用其它函数或方法来增加功能性,从而修改参数或结果等,在函数定义前加上装饰器,只需一个“@”符号。

以下示例显示了一个print_args装饰器的用法:


[img=432,275]http://ss.csdn.net/p?http://mmbiz.qpic.cn/mmbiz_png/d6CtJCxf1u2CGjMfNfrg2JyeVKeYAT1nhw7w90XicsFNeTjcdtYiajicNc61u0Wew04kXvI3sXb1o5cLc6U6m0D6w/640?wx_fmt=png[/img]

7、取参的trick

你可以用*或者**来取出列表或字典作为函数参数


[img=327,190]http://ss.csdn.net/p?http://mmbiz.qpic.cn/mmbiz_png/d6CtJCxf1u2CGjMfNfrg2JyeVKeYAT1n3rTKRe1LjE41sLbmkibYoGw0eB3d2IP8BqProLXCBuv8f1HVO8N0dBw/640?wx_fmt=png[/img]

8、Exception else语句


[img=415,178]http://ss.csdn.net/p?http://mmbiz.qpic.cn/mmbiz_png/d6CtJCxf1u2CGjMfNfrg2JyeVKeYAT1nWy0biaKeNyM9UiaJUM8ZSHw6yibHNfuThibBBiaptbfsuVj3IpuoyA0icYtg/640?wx_fmt=png[/img]

使用“else”比在“try”语句中添加多余的代码更好,因为它避免了意外获取不被try语句保护的异常…除了声明之外。

9、嵌套列表推导式和生成器表达式


[img=818,88]http://ss.csdn.net/p?http://mmbiz.qpic.cn/mmbiz_png/d6CtJCxf1u2CGjMfNfrg2JyeVKeYAT1nMvEicnOtnK4qibV7xJDgjcprE2r58ZNB1pxyWiamCRsrGUU0kwoDKAW8g/640?wx_fmt=png[/img]

这些语句可以取代大量的嵌套循环代码块

10、使用re.DEBUG查看正则表达式的匹配过程

正则表达式是Python的一大特色,但是调试起来会很痛苦,很容易得出一个bug。幸运的是,Python可以打印出正则表达式的解析树,通过re.debug来显示re.compile的完整过程。


[img=629,577]http://ss.csdn.net/p?http://mmbiz.qpic.cn/mmbiz_png/d6CtJCxf1u2CGjMfNfrg2JyeVKeYAT1nV6JiaAuZRdUjkFQ5ngAyMN78xfdf3ibcEwR2X0fPCjHQfUBXDqtzUc8A/640?wx_fmt=png[/img]

一旦你理解了语法,你就可以发现你的错误。在这里我们可以看到忘了去除[]


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表