疯狂上涨的Python 开发者应从2.x还是3.x着手?

纵观各大编程语言在 2017 年的发展情况,我们会发现涌现出诸如 Go、Swift 这类后起之秀,而其中最为耀眼的当属 Python。之所以 Python 如此受捧,不仅仅是人工智能、数字科学领域的兴起,而且与其自身的特性必不可分,正应了“Life is short,you need Python!”。但与此同时,不少开发者开始纠结 Python 的入门究竟该从 2.x 还是 3.x 开始学起?

毕竟 Python 语言作者 Guido van Rossum 曾于 2014 年宣布 Python 2.7 支持时间延长到 2020 年。Python 2.7 是 2.x 系列的最后一个版本,它的继承者 Python 3.0 在 2008 年 12 月发布,但不兼容 2.x 系列。也就意味着 2020 年之前,对于 Python 2.x 会一直提供 bug 修正,但它却与 3.x 不兼容。 所以我们该如何抉择?又该如何快速着手呢?

Python 2.x vs Python 3.x

基于此,Semaphore 社区调查了 Python 在 Semaphore 的托管 CI 服务中构建应用程序的使用情况。据去年的调查结果显示,有 70% 以上的用户仍在使用 Python 2.7,Python 3 的使用率较低。而今年,Python 3 的使用出现了明显的上涨,涨幅约 8.2%。如下图所示:

相较而言,使用 Python 3 的开发者更愿意进行版本更新。去年,Python 3.5 的使用率达到 60%,Python 3.4 的使用率占 30%。今年的调查数据显示,3.5 版和 3.4 版的使用率分别只占 34% 和 20%,有 35% 的用户已经开始使用 Python 3.6。

根据 Python 2.7 和 Python 3 各版本的使用率对比图,我们可以看出 Python 3.x 版的用户群体正在迅速扩展:

针对大家始终纠结的 Python 2.x 或 Python 3.x,不少网友也给出了自己的建议:

nexcvon:Python 3 有很大改进,比 Python 2 更容易理解。 如果大家决定学 Python 2.x,建议当被 string bytes 搞晕时,了解一下 Python 3,再做决定。另外,Python 3 的库已经比较全了,不支持 Python 3 的,多数是不再维护的。

林灿斌:编程最重要的是编程思想,Python 3 和 Python 2 虽然不同,但是它的思想基本是共通的,只有少量的语法差异。而编程中,语法只是细枝末节的东西。当你学会了 Python 3,只要稍微花一点时间学习 Python 2 的语法,那么这两种语言也都学会了。而认识语法差距所花费的时间,一般也不会比大家在纠结学哪个版本所花的时间更多。

adv adj:Python 语言的最大优势并不是语言本身的特性,而是它拥有脚本语言中最丰富的第三方包(模块、库),这是其他任何语言都无法比拟的巨大优势。很多人学 Python 并不是因为 Python 适合开发什么软件或者工程,而是因为 Python 拥有某个非常适合他们工作相关领域的简单易用的工具包。所以,学 Python 2 还是 3 关键要考虑的是你所准备使用的模块是否支持 3.x。

黄欢:建议先学习 Python2.7, 随后再了解 Python 3.x 与 Python 2.7 的差异部分。

整体而言,基于以上数据,大多数开发者更倾向于 Python 3.x。

快速上手 Python

有了一定的方向,接下来的问题及时如何快速着手 Python 的学习?下文将推荐开发者必备的六个库,无论你是正在使用 Python 进行快速开发,还是在为 Python 桌面应用制作原生 UI ,或者是在优化现有的 Python 代码,以下这些 Python 项目都是应该使用的。

Python 凭借其易用的特点,已经被工业界和学术界广泛采用。另一方面,Python 丰富的第三方项目——库、附加组件,和辅助的开发成果——使得 Python 语言的应用范围被不断扩大。

其中一些项目,比如 PyInstaller 和 WxPython ,为那些制作桌面应用和终端应用的 Python 开发者提供了便利。其他的项目, 比如 PyPy , 则是用来给服务器端 Python 应用提供额外的动力。还有一些,像  PBR 、CFFI 和 MyPy , 适用于差不多所有五花八门的 Python 应用,无论在什么地方运行。

以下所有这些项目,在近几周都发布了新的主要版本。

Python 必备之 PyPy

PyPy 主要用于何处?

如果你需要更快的 Python 应用程序,最简单的实现的方法就是通过 PyPy ,Python 运行时与实时(JIT)编译器。与使用普通的 Python 对等程序相比,使用 PyPy 的 Python 应用程序的运行速度平均提升 7.5 倍。不幸的是,PyPy 与许多 Python 的明星框架并不是很好地兼容。PyPy 5.9 在解决这个问题上取得了重大进展。

PyPy 5.9 的功能

数据科学框架 NumPy 和 Pandas 现在运行在 PyPy 的 Python 2.7 兼容版本上。这些框架的大部分问题来源于 PyPy 与现有 C 代码的接口。为了解决这个问题,PyPy 5.9 对 CFFI 库(见下文)和 PyPy 的 Python  C API 兼容性层进行了改进。

此外,在 5.9 发布版本中,PyPy 的 JSON 解析器在处理多种 JSON 对象,尤其是那些重复使用的相同的词典键值时,明显更快。

何处下载 PyPy 5.9

PyPy 的网站二进制版本下载地址:https://pypy.org/download.html

官方二进制文件包括 Windows、Mac OS 和 Linux 的不同 CPU 架构。请注意,为了兼容 Python 2.7 和 Python 3.5 ,存在不同的二进制文件,因此请确保你正在获取与你将要运行的脚本所匹配的版本。

源码和 Bug 跟踪可以在 BitBucket(https://bitbucket.org/pypy/pypy) 上找到。

Python 必备之 CFFI

CFFI 主要用于何处?

C 外部函数接口库(CFFI)为 Python 应用程序与独立 C 库的交互提供了一种机制。虽然 Python 的 stock 版本,CPython,也拥有自己的库来完成此类功能,称为 Ctypes ,但对 Python 用户来说,比起 Ctypes ,CFFI 使得与 C 库的交互更容易、更简便。

CFFI 1.11 的功能

与 PyPy 一起更新的 CFFI v1.11 增加了很小但很有用的改动。现在可以在即将发布的 Python 3.7 上使用betas了,在 Windows 上更好地支持外部错误处理,并支持 C 语言中更多的现代标准类型,例如 float/double _Complex 和 char16_t和char_32t 类型。最后两个也是最重要的,在 C 库中默认使用 Unicode 编码。

何处下载 CFFI 1.11 ?

CFFI 下载地址:https://pypi.python.org/pypi/cffi,或通过 Python 的 pip 工具安装:pip install cffi 。源码和问题跟踪可以在 BitBucket(https://bitbucket.org/cffi/cffi) 上找到。

Python 必备之 PyInstaller

PyInstaller 主要用于何处?

关于 Python 的最常见的问题之一是“如何从 Python 脚本中生成独立的可执行文件?” PyInstaller 一直是对此最好的答案之一。

PyInstaller 3.3 的功能

PyInstaller 将 Python 应用程序打包到单目录或单文件的可执行文件中,捆绑任何所需的第三方库,并可与绝大多数常见的库和框架配合使用。

PyInstaller 3.3 中最大的改进是对 Python 3.6 的支持,因为鉴于 Python 3.6 已经发布这确实是必要的。

PyInstaller 3.3 还包括一个更广泛兼容的引导加载程序,适用于 Windows 可执行文件,并扩展了对捆绑常见库(如 QT、GTK +、NumPy 和 Django )的支持。

PyInstaller 在不久之后可能添加的一个功能是交叉打包,例如,在 Windows 上创建 Mac 兼容的应用程序。你需要在要部署的同一平台上运行该 PyInstaller ,无论是 Windows、Mac 还是 Linux 。

何处下载 PyInstaller 3.3 ?

PyInstaller 下载地址:https://pypi.python.org/pypi/PyInstaller/3.3,也可通过 Python 的 pip 工具安装:pip install pyinstaller 。对于那些需要自己编译引导加载程序的人,源码可以在 GitHub(https://github.com/pyinstaller/pyinstaller) 上找到,但对多数人而言是不需要这么做的。

Python 必备之 Python Build Reasonableness (PBR)

Python PBR 主要用于何处?

Setuptools 是用于打包 Python 项目的标准的 Python 问题子系统。管理特定项目的 Setuptools 可能会变得非常繁琐,特别是在自动生成需求、管理文档文件或编辑项目贡献者数据时。

Python PBR 的功能

PBR, Python Build Reasonableness 的缩写,是以一致的方式用于管理 Setuptools 包的库。它可以自动化许多 Setuptools 打包的设置,例如版本号、生成作者和 ChangeLog 文件,以及生成 Sphinx 风格的文档。PBR 最初是作为 OpenStack 项目的一部分开发的,但现在你所使用 PBR 中维护的内容与 OpenStack 已经没有任何联系了。

哪里可以下载 Python PBR ?

PBR 在 Python Package Index 上可以找到(https://pypi.python.org/pypi/pbr),并且可以和 pip 一起安装,只需要输入 pip install pbr 即可。 源码可在 GitHub(https://github.com/openstack-dev/pbr) 上下载。

Python 必备之 WxPython

WxPython 主要用于何处?

想要实现跨平台桌面应用程序的 Python 开发人员可以从多个工具包中进行选择。 WxPython,是 WxWidgets 库的一个封装,使用了其所支持主机平台的原生 UI 元素,包括 Windows、Mac、Linux 和其他类 Unix 操作系统。

WxPython 4.0 的功能

早期版本的 WxPython 被放弃了是由于其传统的设计决策,使其变得越来越慢,而且不太适合使用。为了解决这个问题,WxPython 的开发人员对 WxPython 的 4.0 分支做了重大改变。

目标是允许开发人员更快地上手 WxPython ,并且使通过它创建的框架和应用程序更加高性能和易维护。然而,为了使用 WxPython 4.0 ,任何现有的使用 WxPython 项目都需要修改。

何处可以下载 WxPython 4.0 ?

WxPython 4.0 官方版本依然是 beta 版。它可以在 Python Package Index(https://pypi.python.org/pypi/wxPython/4.0.0b2) 上找到,即通过 pip install wxpython 命令。在正式发布前它可能会更新数次,注意经常检查更新。

那些想直接破解的人可以查看 GitHub(https://github.com/wxWidgets/Phoenix) 上的代码库。请注意,WxPython 的 4.0 分支以 “Phoenix” 代号进行标记的,以使其与早期版本不同。

Python 必备之 Mypy

Mypy 主要用于何处?

Python 的动态性既是一种福音,也是一种烦恼,对于快速构建软件非常棒,但是当代码难以推理、测试和调试时,并不是很棒。Mypy 在编译时向 Python 添加静态类型检查,使 Python 程序更加一致和可维护,并且不会增加运行时开销。

Mypy 0.530 的功能

Mypy 0.530 添加了不同协议的支持,该协议是用于 Python 子类的目前实验性类型的功能。它还在仅用于包含特定类型的对象的字典中添加 “TypedDict” 类型,并且可以逐个对文件进行更严格的类型检查的选项。

哪里可以下载 Mypy 0.530 ?

Mypy 下载地址:https://pypi.python.org/pypi/mypy,并通过 pip install mypy 来安装。Mypy 可以通过 GitHub(https://github.com/python/mypy) 查看源码。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 编写同时兼容Python2.x与Python3.x版本的代码的几个示例

    编写兼容Python2.x与3.x代码 当我们正处于Python 2.x到Python 3.x的过渡期时,你可能想过是否可以在不修改任何代码的前提下能同时运行在Python 2和3中.这看起来还真是一个合理的诉求,但如何开始呢?哪些Python 2 代码在 3.x 解释器执行时容易出状况呢? print vs print() 如果你想的和我一样,你或许会说print语句,这是个很好的着手点,先简单展示一下,print在2.x中是一条语句,而在3.x中它是一个关键字或者是保留字.换句话说,因为这个

  • Python3.x和Python2.x的区别介绍

    1.性能Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可以取得很好的优化结果.Py3.1性能比Py2.5慢15%,还有很大的提升空间. 2.编码Py3.X源码文件默认使用utf-8编码,这就使得以下代码是合法的:    >>> 中国 = 'china'    >>>print(中国)    china 3. 语法1)去除了<>,全部改用!=2)去除``,全部改用re

  • Python2.x与Python3.x的区别

    Python的3​​.0版本,常被称为Python 3000,或简称Py3k.相对于Python的早期版本,这是一个较大的升级. 为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容. 许多针对早期Python版本设计的程式都无法在Python 3.0上正常执行. 为了照顾现有程式,Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数. 新的Python程式建议使用P

  • 把项目从Python2.x移植到Python3.x的经验总结

    经历移植jinja2到python3的痛苦之后,我把项目暂时放一放,因为我怕打破python3的兼容.我的做法是只用一个python2的代码库,然后在安装的时候用2to3工具翻译成python3.不幸的是哪怕一点点的改动都会打破迭代开发.如果你选对了python的版本,你可以专心做事,幸运的避免了这个问题. 来自MoinMoin项目的Thomas Waldmann通过我的python-modernize跑jinja2,并且统一了代码库,能同时跑python2,6,2,7和3.3.只需小小清理,我

  • 疯狂上涨的Python 开发者应从2.x还是3.x着手?

    纵观各大编程语言在 2017 年的发展情况,我们会发现涌现出诸如 Go.Swift 这类后起之秀,而其中最为耀眼的当属 Python.之所以 Python 如此受捧,不仅仅是人工智能.数字科学领域的兴起,而且与其自身的特性必不可分,正应了"Life is short,you need Python!".但与此同时,不少开发者开始纠结 Python 的入门究竟该从 2.x 还是 3.x 开始学起? 毕竟 Python 语言作者 Guido van Rossum 曾于 2014 年宣布 P

  • 分享一下Python 开发者节省时间的10个方法

    Python 是一个美丽的语言,可以激发用户对它的爱.所以如果你试图加入程序员行列,或者你有点厌倦C++,Perl,Java 和其他语言,我推荐你尝试Python. Python有很多吸引程序员的功能 ,它易学,面向对象,字节码编译,免费且开源.还有运行时检查.完整快速的支持,可以执行各种任务的扩展. 高效的Python 在这篇文章,我想强调一些 Python 可以节约时间并最大限度地提高生产力的方面.在做准备时,我咨询了几个 Pythonists,他们最节省时间的技巧是什么?答案在这里...

  • PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?

    也许是我有些落伍,或者也是因为 JetBrains 在 Python IDE 的市场上占有很大的份额,以至于直到最近我才发现,使用 VSCode 的 Python 开发者要比预想中的多很多. 近期,我将 PyCharm 和 Notebooks 放在一起用了一段时间,发现 Notebooks 方便浏览数据,并将数据实时可视化:PyCharm 则可以完成更多的任务.这两者的结合让我非常满意. 让我感到欣慰的另外一件事情就是 PyCharm(JetBrains)的制作商并不是美国的巨头公司(比如微软)

  • 2021年值得向Python开发者推荐的VS Code扩展插件

    Visual Studio Code(简称 VS Code)是一个由微软开发,同时支持 Windows. Linux 和 macOS 等操作系统的免费代码编辑器,它支持测试,并内置了 Git 版本控制功能,同时也具有开发环境功能,例如代码补全.代码片段和代码重构等.VS Code 是程序员常用的代码编辑器之一,是一个可在所有平台上使用的开源.可扩展和轻量级的编辑器.这些品质使微软的 VS Code 大受欢迎,并成为 Python 开发的绝佳平台. VS Code 还拥有大量扩展,可以帮助提高开发

  • 每个 Python 开发者都应该知道的7种好用工具(效率翻倍)

    Python 从一种小的开源语言开始,到现在,它已经成为开发者很受欢迎的编程语言之一. 今天我将给大家分享 7 种对所有 Python 开发人员都感觉很有趣.有用的工具,相信它们在你的工作中会经常出现,提升工作效率. 1.The F*ck 当我们忘记了某些软件包在这里或那里,The F*ck优雅地解决了这个问题.你所要做的只是键入"Fuck",然后它会告诉你出了什么问题. 它是该列表上很受欢迎的项目,并且将继续存在.安装方法如下: # mac brew install thefuck

  • 推荐10款最受Python开发者欢迎的Python IDE

    Python 非常易学,强大的编程语言.Python 包括高效高级的数据结构,提供简单且高效的面向对象编程. Python 的学习过程少不了 IDE 或者代码编辑器,或者集成的开发编辑器(IDE).这些 Python 开发工具帮助开发者加快使用 Python 开发的速度,提高效率.高效的代码编辑器或者 IDE 应该会提供插件,工具等能帮助开发者高效开发的特性. 1.  Vim Vim 可以说是 Python 最好的 IDE.Vim 是高级文本编辑器,旨在提供实际的 Unix 编辑器'Vi'功能,

  • 10个易被忽视但应掌握的Python基本用法

    我一辈子都在写代码,但从来没有掌握编码的精髓.大部分情况下使用Visual Basic,因为我用VB最舒服.同时还略微了解一点其他语言(R.C.JavaScript.Applescript.Hypertext和1979年学习的BASIC).几年前,我决定只用Python,以此来提高我的编码能力.在此过程中重复发明了许多轮子,但我并不介意,因为我享受解决问题的乐趣.同时有时能发现更有效.Python式的解决方案.时间长了以后,会有顿悟的时刻,意识到根本没必要用困难且冗长的方式处理问题.下面列出10

  • Python倒排索引之查找包含某主题或单词的文件

    什么是倒排索引? 倒排索引(英语:Inverted index),也常被称为反向索引.置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射.它是文档检索系统中最常用的数据结构.通过倒排索引,可以根据单词快速获取包含这个单词的文档列表.倒排索引主要由两个部分组成:"单词词典"和"倒排文件". 假设我们现在有文件: test1.txt中存有:我们爱自然语言处理 test2.txt中存有:我们爱计算机视觉 正向索引:

  • python中列表(list)和元组(tuple)的深入讲解

    前言 在我们实际开发中,经常需要将一组数据存储起来,以便使用.如果学习了其他的语言可能知道数组(Array)这个数据结构,它就可以将多个数据进行存储,访问数据可以通过数组下标的方式,的进行获取.如果你是python开发者,那么可以使用更加灵活的列表(list)和元组(tuple),来进行数据储存.下面我们先简单了解下列表和元组的基本使用. 列表 列表是动态的,长度可以改变,可以随意增加,修改或删除元素. 初始化列表 a = list() b = [] # 可以通过range快速创建list c

  • Python 有可能删除 GIL 吗?

    我们知道,在 CPython 中,有一个全局解释器锁,英文叫 global interpreter lock,简称 GIL,是一个互斥锁,用来保护 Python 世界里的对象,防止同一时刻多个线程执行 Python 的字节码,从而确保线程安全,这导致了 Python 的线程无法利用多核 CPU 的优势,因此有人说 Python 的多线程是伪多线程,性能不高,那么 Python 将来有可能去除 GIL 吗? 要回答这个问题,先从 GIL 的起源进行分析. GIL 的起源 Python 第一次发布是

随机推荐