pep

Python常用的22个包,你都学费了吗?

孤人 提交于 2020-04-28 19:55:09
全球各地的程序员都是怎样使用 Python? 我们从最常用的 Python 包入手,去解答上述这个问题。最初,我列出过去一年在 PyPI 上下载次数最多的 Python 包。接下来,深入研究其用途、它们之间的关系和它们备受欢迎的原因。 1、Urllib3 下载次数:8.93 亿 Urllib3 是一个 Python 的 HTTP 客户端,它拥有 Python 标准库中缺少的许多功能: 线程安全 连接池 客户端 SSL/TLS 验证 使用分段编码上传文件 用来重试请求和处理 HTTP 重定向的助手 支持 gzip 和 deflate 编码 HTTP 和 SOCKS 的代理支持 不要被名字所误导, Urllib3 并不是 urllib2 的后继者,而后者是 Python 核心的一部分。如果你想使用尽可能多的 Python 核心功能,或者你能安装什么东西是受限,那么请查看 urlllib.request。 对最终用户来说,我强烈建议使用 requests 包(参阅列表中的 #6)。这个包之所以会排名第一,是因为有差不多 1200 个包依赖 urllib3,其中许多包在这个列表中的排名也很高。 2、Six 下载次数:7.32 亿 six 是一个是 Python 2 和 3 的兼容性库。这个项目旨在支持可同时运行在 Python 2 和 3 上的代码库。 它提供了许多可简化 Python 2

Python 如何移除旧的版本特性,如何迎接新的特性?

∥☆過路亽.° 提交于 2020-04-26 18:35:13
2020 年 4 月 20 日,Python 2 的最后一个版本 2.7.18 发布了,这意味着 Python 2 是真正的 EOL(end of life)了,一个时代终于落幕了。 Python 2.0 版本是在 2000 年发布的,至今正好到 20 周年(差半年),一代版本竟然持续了这么长时间。其中,2.7 版本是在 Python 3 推出后才发布的,它在 2010 年发布,至今已是 10 年之久。 事实上,Python 诞生了 30 年,但版本演进过程一直很慢,目前最新发布的版本只到 3.8.2。 对比一下相差几岁的隔壁家选手,C++ 已经发展到了 20,JAVA 发展到了 14 ,PHP 到了 7.4,差距悬殊。 但是,版本发布太频繁,也不总是一件好事。就在 Python 程序员抱怨自己的 Python 2 项目还没升 3 版本时,有些 JAVA 程序员还在维护 6、7 版本的项目呢。版本迁移之苦,大家彼此彼此,五十步笑百步。 编程语言跨版本间出现不兼容的特性,几乎是常态。很多时候,并不是说过去的设计是 bug,只是因为编程语言也是某种“生命体”,它会学习其它语言,也会自我进化,所以就有新陈代谢。 摆脱旧的不兼容性版本或者某些落后的设计,有时候需要挺漫长的过渡期。为了方便程序员迁移,核心开发者们形成了一些有效的惯例。 以 Python 为例,我知道有以下的几种策略: 1

Python 如何移除旧的版本特性,如何迎接新的特性?

早过忘川 提交于 2020-04-26 18:23:37
2020 年 4 月 20 日,Python 2 的最后一个版本 2.7.18 发布了,这意味着 Python 2 是真正的 EOL(end of life)了,一个时代终于落幕了。 Python 2.0 版本是在 2000 年发布的,至今正好到 20 周年(差半年),一代版本竟然持续了这么长时间。其中,2.7 版本是在 Python 3 推出后才发布的,它在 2010 年发布,至今已是 10 年之久。 事实上,Python 诞生了 30 年,但版本演进过程一直很慢,目前最新发布的版本只到 3.8.2。 对比一下相差几岁的隔壁家选手,C++ 已经发展到了 20,JAVA 发展到了 14 ,PHP 到了 7.4,差距悬殊。 但是,版本发布太频繁,也不总是一件好事。就在 Python 程序员抱怨自己的 Python 2 项目还没升 3 版本时,有些 JAVA 程序员还在维护 6、7 版本的项目呢。版本迁移之苦,大家彼此彼此,五十步笑百步。 编程语言跨版本间出现不兼容的特性,几乎是常态。很多时候,并不是说过去的设计是 bug,只是因为编程语言也是某种“生命体”,它会学习其它语言,也会自我进化,所以就有新陈代谢。 摆脱旧的不兼容性版本或者某些落后的设计,有时候需要挺漫长的过渡期。为了方便程序员迁移,核心开发者们形成了一些有效的惯例。 以 Python 为例,我知道有以下的几种策略: 1

Python 库打包分发简易指南

随声附和 提交于 2020-04-25 15:12:14
Python 库打包分发(setup.py 编写)简易指南 Python 有非常丰富的第三方库可以使用,很多开发者会向 pypi 上提交自己的 Python 包。要想向 pypi 包仓库提交自己开发的包,首先要将自己的代码打包,才能上传分发。 distutils 简介 distutils 是标准库中负责建立 Python 第三方库的安装器,使用它能够进行 Python 模块的安装和发布。distutils 对于简单的分发很有用,但功能缺少。大部分Python用户会使用更先进的setuptools模块 setuptools 简介 setuptools 是 distutils 增强版,不包括在标准库中。其扩展了很多功能,能够帮助开发者更好的创建和分发 Python 包。大部分 Python 用户都会使用更先进的 setuptools 模块。 Setuptools 有一个 fork 分支是 distribute 。它们共享相同的命名空间,因此如果安装了 distribute, import setuptools 时实际上将导入使用 distribute 创建的包。Distribute 已经合并回 setuptools。 还有一个大包分发工具是 distutils2 ,其试图尝试充分利用distutils,detuptools 和 distribute 并成为 Python

Python 如何移除旧的版本特性,如何迎接新的特性?

 ̄綄美尐妖づ 提交于 2020-04-25 12:17:28
2020 年 4 月 20 日,Python 2 的最后一个版本 2.7.18 发布了,这意味着 Python 2 是真正的 EOL(end of life)了,一个时代终于落幕了。 Python 2.0 版本是在 2000 年发布的,至今正好到 20 周年(差半年),一代版本竟然持续了这么长时间。其中,2.7 版本是在 Python 3 推出后才发布的,它在 2010 年发布,至今已是 10 年之久。 事实上,Python 诞生了 30 年,但版本演进过程一直很慢,目前最新发布的版本只到 3.8.2。 对比一下相差几岁的隔壁家选手,C++ 已经发展到了 20,JAVA 发展到了 14 ,PHP 到了 7.4,差距悬殊。 但是,版本发布太频繁,也不总是一件好事。就在 Python 程序员抱怨自己的 Python 2 项目还没升 3 版本时,有些 JAVA 程序员还在维护 6、7 版本的项目呢。版本迁移之苦,大家彼此彼此,五十步笑百步。 编程语言跨版本间出现不兼容的特性,几乎是常态。很多时候,并不是说过去的设计是 bug,只是因为编程语言也是某种“生命体”,它会学习其它语言,也会自我进化,所以就有新陈代谢。 摆脱旧的不兼容性版本或者某些落后的设计,有时候需要挺漫长的过渡期。为了方便程序员迁移,核心开发者们形成了一些有效的惯例。 以 Python 为例,我知道有以下的几种策略: 1

每周分享五个 PyCharm 使用技巧(一)

不羁岁月 提交于 2020-04-24 08:28:19
文章首发于 微信公众号: Python编程时光 PyCharm 是大多数 Python 开发者的首选 IDE,每天我们都在上面敲着熟悉的代码,写出一个又一个奇妙的功能。 一个每天都在使用的工具,如果能掌握一些高效的使用技巧,肯定会给我们的开发效率带来质的提升。今天我就来写一写我在平时开发中一直在用的,可以明显改善开发效率的使用技巧,一旦学会,受用一生。 从今年3月24号开始一直到7月22号,将近四个月的时间。一共更新了6篇文章,每篇 5 个小技巧,总计 30 个。 这30个使用技巧,全部是我自己在使用 PyCharm 中认为比较有用的,抽取出来分享给大家,有一些虽然只是一个小小的配置,但是配置好了,在使用过程却能节省不少的时间。 这是本系列的第六篇文章,同时也是最后一篇文章。不知道正在看这篇文章的你,看了这个系列后,是否会有一点帮助?若有,那我花时间整理的这些就真的值了。 照例,如果你还未看过其他五篇,可以点此进行查看。 每周分享五个 PyCharm 使用技巧(一) 每周分享五个 PyCharm 使用技巧(二) 每周分享五个 PyCharm 使用技巧(三) 每周分享五个 PyCharm 使用技巧(四) 每周分享五个 PyCharm 使用技巧(五) 每周分享五个 PyCharm 使用技巧(六) 01. 代码排版,自动PEP8 pep8 是Python 语言的一个代码编写规范

[译]Python中的异步IO:一个完整的演练

痴心易碎 提交于 2020-04-22 08:28:05
原文: Async IO in Python: A Complete Walkthrough 原文作者: Brad Solomon 原文发布时间:2019年1月16日 翻译:Tacey Wong 翻译时间:2019年7月22日 翻译仅便于个人学习,熟悉英语的请阅读原文 目录 搭建自己的实验环境 异步IO鸟瞰图 哪些场景适合异步IO? 异步IO释义 异步IO使用起来不容易 asyncio 包和 async/await async/await 语法和原生协程 异步IO规则 异步IO设计模式 链式协程 使用队列 生成器中异步IO的Roots 其他特点: async for and Async Generators + Comprehensions 事件循环和 asyncio.run() 一个完整的程序:异步请求 上下文中的异步IO 何时以及为何异步IO是正确的选择? Async IO It Is, but Which One? 其他零碎 [其他顶级asyncio 函数](#其他顶级asyncio 函数) await的优先级 总结 附加资源 Python版本细节 相关文章 相关PEPs 使用async/await的库 Async IO是一种并发编程设计,Python中已经有了独立的支持,并且从Python3.4到Python3.7得到了快速发展。 你可能疑惑,“并发、并行、线程、多处理”

Python使用Zero-Copy和Buffer Protocol实现高性能编程

ε祈祈猫儿з 提交于 2020-04-22 05:06:33
无论你程序是做什么的,它经常都需要处理大量的数据。这些数据大部分表现形式为strings(字符串)。然而,当你对字符串大批量的拷贝,切片和修改操作时是相当低效的。为什么? 让我们假设一个读取二进制数据的大文件示例,然后将部分数据拷贝到另外一个文件。要展示该程序所使用的内存,我们使用 memory_profiler ,一个强大的Python包,让我们可以一行一行观察程序所使用的内存。 @profile def read_random(): with open("/dev/urandom", "rb") as source: content = source.read(1024 * 10000) content_to_write = content[1024:] print(f"content length: {len(content)}, content to write length {len(content_to_write)}") with open("/dev/null", "wb") as target: target.write(content_to_write) if __name__ == "__main__": read_random() 使用memory_profiler模块来执行以上程序,输出如下: $ python -m memory_profiler

Python3基础 tuple(list) 改变list元素的内容时,元组的id值不变

a 夏天 提交于 2020-04-21 03:26:14
       Python : 3.7.3        OS : Ubuntu 18.04.2 LTS        IDE : pycharm-community-2019.1.3       Conda : 4.7.5     typesetting : Markdown   code coder@ubuntu:~$ source activate py37 (py37) coder@ubuntu:~$ ipython Python 3.7.3 (default, Mar 27 2019, 22:11:17) Type 'copyright', 'credits' or 'license' for more information IPython 7.5.0 -- An enhanced Interactive Python. Type '?' for help. In [1]: a = (1, 2, [4, 5]) # index=2的元素是list类型 In [2]: type(a), id(a) Out[2]: (tuple, 140524432415480) In [3]: a[2].append(6) # 改变index=2的list类型的元素的值 In [4]: a Out[4]: (1, 2, [4, 5, 6]) In [5]: type(a), id(a)

python PEP8规范

孤者浪人 提交于 2020-04-15 15:33:33
【推荐阅读】微服务还能火多久?>>> 1、使用4个空格而不是tab键进行缩进。 2、每行长度不能超过79 3、使用空行来间隔函数和类,以及函数内部的大块代码 4、必要时候,在每一行下写注释 5、使用文档注释,写出函数注释 6、在操作符和逗号之后使用空格,但是不要在括号内部使用 7、命名类和函数的时候使用一致的方式,比如使用CamelCase来命名类, 使用lower_case_with_underscores来命名函数和方法 8、在类中总是使用self来作为默认 9、尽量不要使用魔法方法 10、默认使用UTF-8,甚至ASCII作为编码方式 11、换行可以使用反斜杠,最好使用圆括号。 12、不要在一句import中多个库, 空格的使用 各种右括号前不要加空格。 逗号、冒号、分号前不要加空格。 函数的左括号前不要加空格。如Func(1) 序列的左括号前不要加空格。如list[2] 操作符左右各加一个空格,不要为了对齐增加空格 函数默认参数使用的赋值符左右省略空格 不要将多句语句写在同一行,尽管使用‘;’允许 if/for/while语句中,即使执行语句只有一句,也必须另起一行 函数命名使用全部小写的方式,常量命名使用大写,类属性(方法和变量)使用小写 类的命名首字母大写 本文首发于 python黑洞网 ,博客园同步更新 来源: oschina 链接: https://my