只要是学爬虫的同学,相信无人不知的,无人不晓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的功劳大有裨益,还等什么,赶紧去围观吧.
尽管 Python 官方之前公布相应消息,会在 2020 年停止对 Python 2 的官方支持,但并未落实到具体日期。
最近 Python 之父 Guido van Rossum 在官方邮件组回复了对 Python 2.7 何时终结(EOL)的咨询。
Guido van Rossum 在回复表示:
Let’s not play games with semantics. The way I see the situation for 2.7 is that EOL is January 1st, 2020, and there will be no updates, not even source-only security patches, after that date. Support (from the core devs, the PSF, and python.org) stops completely on that date. If you want support for 2.7 beyond that day you will have to pay a commercial vendor. Of course it’s open source so people are also welcome to fork it. But the core devs have toiled long enough, and the 2020 EOL date (an extension from the originally annouced 2015 EOL!) was announced with sufficient lead time and fanfare that I don’t feel bad about stopping to support it at all.
(大意如下):
好了,咱们不玩文字语义游戏了。Python 2.7 的 EOL 日期是 2020 年 1 月 1 日,之后不会有任何更新,源码的安全补丁也不会有了。
2020 年元旦之后,来自 Python 核心开发团队、PSF(Python 软件基金会)、Python.org 的支持,统统都停掉。
如果以后你想要对 2.7 的支持,你得给商业供应商掏钱了。当然了,因为 Python 是开源的,所以也欢迎大家来 fork。
官方核心开发团队已经努力工作够长的时间了,离 2020 年的 EOL 日期还有很长,(之前曾说过在 2015 年就终结),所以停止支持 Python 2,我完全没觉得有啥糟糕的。
2017 年宣布不再支持 Python 2 的软件/库有:
就在2017年 11 月 16 日,Numpy 库官方宣布准备放弃支持 Python 2。
12 月 2 日,Python Web 开发框架 Django 官网发文宣布推送 Django 2.0 版。在 Django 2.0 的发布说明中,最大吸引注意的内容就是兼容性。
- Django 1.11.x 是支持 Python 2.7 的最后版本;
- Django 2.0 支持 Python 3.4、3.5 和 3.6;
- Django 2.0 对 Python 3.4 将于 2019 年 3 月结束支持,因此 Django 2.0 也将是最后一个支持 Python 3.4 的版本。
Django 2.0 的主要新特性包括:
简化 URL 路由语法
以前是这样写:
url(r’^articles/(?P<year>[0-9]{4})/$’,views.year_archive),
现在可以这样:
path(‘articles/<int:year>/’,views.year_archive),
移动友好的 contrib.admin
admin 将自适应主流移动设备。优雅性在老旧浏览器则可能会有打折咯。
新的 Window expressions
新 Window 表达式允许在查询集添加 OVER 从句。可以在表达式中使用 window 函数和 aggregate 函数。
Numpy 是 Python 的一个科学计算的库,提供了矩阵运算的功能,一般与 Scipy、matplotlib 一起使用。
今天 Numpy 的 GitHub 主页上发文称,Numpy 库准备从 2019 年 1 月 1 日起,放弃支持 Python 2。
「Python开发者」摘编如下:
Python 内核团队将于 2020 年停止支持 Python 2。NumPy 项目从 2010 年同时支持 Python 2 和 Python 3,我们发现自己有限资源无力再支持 Python 2 了。因此,我们也计划放弃支持 Python 2。
相应时间表如下:
- 2018 年 12 月 31 日之前,所有 NumPy 发布版均同时支持Python 2 和 Python 3。
- 从 2019 年 1 月 1 日起,NumPy 的新特性只支持 Python 3。
NumPy 的最后一个 Python 2 的版本,将被指定为一个长期支持版(LTS),意味着我们会长期持续合并 Bug 修复和制作 Bug 补丁。LTS 版将会支持到 2019 年 12 月 31 日。
从 2020 年 1 月 1 日起,NumPy 社区对 Python 2 的支持,就彻底说再见了。不过,PyPI 会继续支持 Python 2。如果有商业厂商希望在 2020 年 1 月 1 日后扩大 LTS 的支持,我们愿意让他们使用 NumPy 官方 repo 中的 LTS 分支。
Python大神,requests库的作者放大招了 | 点击链接查看 → http://t.zijieimg.com/432Gc/
转载请注明:徐自远的乱七八糟小站 » Python大神,requests库的作者放大招了