本文内容摘录:https://github.com/kennethreitz/python-guide
题图from:https://www.kennethreitz.org/
只要是学爬虫的同学,相信无人不知的,无人不晓requests库!requests这个库号称为人类而写的http库("Python HTTP Requests for Humans"),非常好用,功能强大!
它的作者就是大名鼎鼎的Kenneth Reitz,这位大神非常牛逼,功力深厚还爱好摄影,对美学有自己的追求,能把这种美学的意境运用到代码上,非常厉害!
今天去逛他的github,发现他出了一本Python-guide书,赶紧去围观学习了一下受益匪浅!本书是号称Python best practices guidebook, written for Humans,目前有一万三千多的点赞量!
这本书内容非常丰富,从win/linux/os的开发环境的安装,到开发工具推荐和设置,到如何写成优雅的代码,再到Python应用场景的指南比如(网络应用,web开发,命令行的应用,GUI的应用),数据库,系统管理,持续集成和数据库等等,下面我摘录了某一章节里面的部分片段:
Writing Great Python Code
这部分指南关注编写Python代码的最佳实践。
-
结构化您的工程
-
仓库的结构
-
结构是一把钥匙
-
模块
-
包
-
面向对象编程
-
装饰器
-
上下文管理器
-
动态类型
-
可变和不可变类型
-
提供依赖关系
-
Runners
-
更多阅读
-
代码风格
-
一般概念
-
习语(Idiom)
-
Python之禅
-
PEP 8
-
约定
1.模块
Python模块是最主要的抽象层之一,并且很可能是最自然的一个,抽象层允许将代码分为 不同部分,每个部分包含相关的数据与功能:
-
可以使用import语句的特殊形式from modu import * 模拟更标准的行为。
-
但 import* 通常 被认为是不好的做法,但是使用 from modu import * 的代码较难阅读而且依赖独立性不足。
-
使用 from modu import func 能精确定位您想导入的方法并将其放到全局命名空间中。
-
比 from modu import * 要好些,因为它明确地指明往全局命名空间中导入了什么方法。
2.动态类型
Python是动态类型语言,这意味着变量并没有固定的类型。实际上,Python 中的变量和其他语言有很大的不同,特别是静态类型语言。
变量并不是计算机内存中被写入的某个值,它们只是指向内存的 ‘标签’ 或 ‘名称’ 。
因此可能存在这样的情况,变量 ‘a’ 先代表值1,然后变成字符串 ‘a string’ , 然后又变为指向一个函数:
3.明确的代码
在存在各种黑魔法的Python中,我们提倡最明确和直接的编码方式:
4.每行一个声明
复合语句(比如说列表推导)因其简洁和表达性受到推崇,但在同一行代码中写两条独立的语句是糟糕的:
5.返回值
当一个函数变得复杂,在函数体中使用多返回值的语句并不少见。然而,为了保持函数的明确意图以及一个可持续的可读水平,更建议在函数体中避免使用返回多个有意义的值。
尽管如此,当一个函数在其正常过程中有多个主要出口点时,它会变得难以调试和返回其 结果,所以保持单个出口点可能会更好。
这也将有助于提取某些代码路径,而且多个出口点 很有可能意味着这里需要重构。
上面只是一些书里的很少的部分,大神的内容非常丰富而且全面,非常成体系!值得细细推敲和咀嚼,对提高Python的功劳大有裨益,还等什么,赶紧去围观吧.
链接:http://docs.python-guide.org/en/latest/
推荐阅读:
太好玩了!用Python写个弹球游戏2.0
Python武功如何快速进阶
2017年度电影榜单出炉
双十二来了,我爬取了淘宝上所有的羽绒服
南京楼市火吗|16000套二手房数据分析
5分钟带你了解Python2和3的区别|从此不再纠结
本篇文章来源于: 菜鸟学Python
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python如何判断一个对象的类型09/04
- ♥ 说说Python 面向对象编程04/01
- ♥ python如何执行.py文件10/17
- ♥ python希尔排序的使用原理01/04
- ♥ python求和函数sum()详解08/14
- ♥ python3时间日历的常用函数有哪些?如何使用?01/07
内容反馈