为什么Python编程语言在数据科学,机器学习,系统自动化,Web和API开发等方面大放异彩
从1991年开始,Python编程语言就被认为是一种填补空白的语言,它是一种编写脚本的方式,可以“自动化那些无聊的东西”,也可以用来快速原型化那些将用其他语言实现的应用程序。
然而,在过去几年中,Python已经成为现代软件开发、基础设施管理和数据分析领域的一流公民。它不再是一种幕后的实用语言,而是web应用程序创建和系统管理的主要力量,也是大数据分析和机器智能爆炸的关键驱动因素。
Python的主要优势
Python的成功取决于它为初学者和专家提供的多项优势。
Python易于学习和使用
语言本身的功能数量很少,只需很少的时间或精力即可制作出你的第一个程序。Python语法被设计为可读性和直接性。这种简单性使Python成为理想的教学语言,并且它使新来的人可以快速使用它。因此,开发人员可以将更多的时间花在想解决的问题上,而不用花更多的时间在思考语言的复杂性或破译别人留下的代码。
Python被广泛采用和支持
Python既流行又被广泛使用,因为在Tiobe Index等调查中排名很高,而大量使用Python的GitHub项目证明了这一点。 Python可在所有主要操作系统和平台上运行,大多数次要操作系统也可运行。许多主要的库和基于API的服务都具有Python绑定或包装器,从而使Python与这些服务自由接口或直接使用这些库。
Python不是“玩具”语言
即使脚本编写和自动化涵盖了Python用例的很大一部分(稍后会详细介绍),Python也可用于构建专业质量的软件,既可以作为独立的应用程序,也可以作为Web服务。 Python可能不是最快的语言,但是它缺乏速度,却弥补了通用性。
Python不断前进
Python语言的每个修订版都添加了有用的新功能,以与现代软件开发实践保持同步。例如,异步操作和协程现在已成为该语言的标准部分,从而使编写执行并发处理的Python应用程序变得更加容易。
Python用于什么
Python的最基本用例是作为脚本和自动化语言。 Python不仅仅是Shell脚本或批处理文件的替代品;它还可用于自动与Web浏览器或应用程序GUI进行交互,或在诸如Ansible和Salt的工具中进行系统配置和配置。但是脚本和自动化只是Python的冰山一角。
使用Python进行常规应用程序编程
可以使用Python创建命令行和跨平台GUI应用程序,并将它们部署为独立的可执行文件。 Python不具备从脚本生成独立二进制文件的本机功能,但是可以使用cx_Freeze和PyInstaller之类的第三方程序包来完成此任务。
使用Python进行数据科学和机器学习
复杂的数据分析已成为IT领域发展最快的领域之一,也是Python的明星案例之一。用于数据科学或机器学习的绝大多数库都具有Python接口,这使得该语言成为机器学习库和其他数值算法最流行的高级命令接口。
Python中的Web服务和RESTful API
Python的本机库和第三方Web框架提供了快速便捷的方法来创建一切,从几行代码中的简单REST API到成熟的,数据驱动的网站。Python的最新版本对异步操作提供了强大的支持,使网站可以使用正确的库每秒处理数万个请求。
Python中的元编程和代码生成
在Python中,语言中的所有内容都是一个对象,包括Python模块和库本身。这使Python可以用作高效的代码生成器,从而可以编写可操纵其自身功能并具有某种扩展性的应用程序,而这些扩展性在其他语言中很难或不可能实现。
Python还可以用于驱动代码生成系统(例如LLVM),以高效地创建其他语言的代码。
Python中的“胶水代码”
Python通常被描述为一种“胶水语言”,这意味着它可以使不同的代码(通常是具有C语言接口的库)进行互操作。就此而言,它在数据科学和机器学习中的使用,但这只是一般概念的一种体现。如果您有想要连接的应用程序或程序域,但无法直接相互通信,则可以使用Python进行连接。
Python不足之处
同样值得注意的是Python不适合执行的任务。
Python是一种高级语言,因此不适合系统级编程,因为设备驱动程序或OS内核已无法使用。
对于需要跨平台独立二进制文件的情况,它也不是理想的选择。您可以为Windows,MacOS和Linux构建一个独立的Python应用程序,但并不优雅或简单。
最后,当速度是应用程序各个方面的绝对优先事项时,Python并不是最佳选择。为此,最好使用C / C ++或同等水平的其他语言。
Python如何使编程变得简单
Python的语法旨在可读性强,简洁明了。 Python 3.x中的标准“ hello world”不过是:
print(“Hello world!”)
Python提供了许多语法元素来简洁地表达许多常见的程序流。考虑一个示例程序,该程序用于将文本文件中的行读取到列表对象中,并在此过程中剥离其终止换行符的每一行:
with open(‘myfile.txt’) as my_file:
file_lines = [x.rstrip(‘n’) for x in my_file]
with/as结构是上下文管理器,它提供了一种有效的方法来实例化代码块的对象,然后将其处理到该代码块之外。在这种情况下,对象是my_file,使用open()函数实例化。这代替了几行样板程序来打开文件,从文件中读取各行,然后将其关闭。
[my_file中x的x ……]构造是另一个Python特性,即列表理解。它允许迭代包含其他项的项(在此为my_file及其包含的行),并允许处理每个迭代的元素(即每个x)并将其自动附加到列表中。
可以像使用另一种语言一样用Python编写形式化的for…循环。关键在于,Python可以经济地表达诸如循环访问多个对象并在循环中的每个元素上执行简单操作的循环之类的事情,或者与需要显式实例化和处理的事物一起工作。
这样的构造使Python开发人员可以平衡简洁性和可读性。
Python的其他语言功能旨在补充常见的用例。大多数现代对象类型(例如Unicode字符串)直接内置于该语言中。数据结构(例如列表,字典(即哈希图或键值存储),元组(用于存储对象的不可变集合)和集合(用于存储唯一对象的集合)都可以作为标准问题项使用。
Python 2和Python 3
Python有两个版本,它们的差异足以吸引许多新用户。较老的“旧版”分支Python 2.x将在2020年之前继续受到支持(即,接受官方更新),并且此后可能会非正式地持续存在。 Python 3.x是该语言的当前和将来的化身,它具有Python 2.x所没有的许多有用和重要的功能,例如新的语法功能(例如“ walrus运算符”),更好的并发控件等等。高效的口译员。
由于相对缺乏第三方库支持,Python 3的采用速度在最长的时间内减慢了。许多Python库仅支持Python 2,因此很难切换。但是在过去的两年中,仅支持Python 2的库数量有所减少。现在,所有最受欢迎的库都与Python 2和Python 3兼容。如今,Python 3是新项目的最佳选择。除非您别无选择,否则没有理由选择Python 2。如果您坚持使用Python 2,则可以使用各种策略。
Python库
Python的成功取决于丰富的第一方和第三方软件生态系统。 Python得益于强大的标准库以及从第三方开发人员那里获得的大量易于获得和使用的库。数十年来的扩展和贡献丰富了Python。
Python的标准库提供了用于常见编程任务的模块-数学,字符串处理,文件和目录访问,联网,异步操作,线程,多进程管理等。但它也包含管理现代应用程序所需的常见,高级编程任务的模块:读取和写入JSON和XML之类的结构化文件格式,处理压缩文件,使用Internet协议和数据格式(网页,URL,电子邮件)。暴露任何与C兼容的外部函数接口的所有外部代码,都可以使用Python的ctypes模块进行访问。
默认的Python发行版还通过Tkinter提供了一个基本但有用的跨平台GUI库,以及SQLite 3数据库的嵌入式副本。
可通过Python软件包索引(PyPI)获得的成千上万个第三方库构成了Python受欢迎程度和多功能性的最强展示。
例如:
-
BeautifulSoup库提供了一个多合一的工具箱,用于抓取HTML(甚至是棘手的破碎HTML)并从中提取数据。
-
请求使处理HTTP请求变得轻而易举。
-
Flask和Django等框架允许快速开发包含简单和高级用例的Web服务。
-
可以使用Apache Libcloud通过Python的对象模型来管理多种云服务。
-
NumPy,Pandas和Matplotlib加速了数学和统计运算,并使创建数据可视化变得容易。
Python的妥协
像C#,Java和Go一样,Python具有垃圾回收的内存管理功能,这意味着程序员不必实施代码来跟踪和释放对象。通常,垃圾回收会在后台自动进行,但是,如果这会带来性能问题,则可以手动触发它或将其完全禁用,或者声明整个对象区域都不受垃圾回收的影响,以提高性能。
Python的一个重要方面是它的动态性。语言中的所有内容(包括功能和模块本身)都作为对象处理。这是以牺牲速度为代价的(稍后会详细介绍),但是使编写高级代码变得容易得多。开发人员仅需执行几条指令即可执行复杂的对象操作,甚至可以将应用程序的某些部分视为可以根据需要更改的抽象。
Python使用大量空白是Python的最佳和最差属性之一。下面第二行的缩进不只是为了便于阅读;它是Python语法的一部分。 Python解释器将拒绝未使用适当缩进来指示控制流的程序。
with open(‘myfile.txt’) as my_file:
file_lines = [x.rstrip(‘n’) for x in my_file]
语法空白可能会导致鼻子皱纹,因此某些人确实拒绝使用Python。但是即使在使用最少的代码编辑器的情况下,严格的缩进规则在实践中也远不如理论上看起来那么笨拙,其结果是使代码更清晰,更具可读性。
为什么这么慢?这不仅仅是因为大多数Python运行时都是解释器,而不是编译器。这也是由于以下事实:即使Python进行了编译,Python内在的内在动力和对象的可延展性也使得难以优化语言的速度。也就是说,Python的速度可能并没有看起来那么重要,并且有许多方法可以缓解它。
Python性能优化
缓慢的Python程序永远不会总是那么慢。许多Python程序运行缓慢,因为它们未正确使用Python或其标准库中的功能。新手Python程序员经常像使用C或Java一样编写Python,并把性能留在桌面上。使用NumPy和Pandas之类的库可以大大加快数学和统计运算的速度。
软件开发的常言是,程序的90%的活动倾向于包含在代码的10%中,因此进行优化以使10%的活动可以带来重大改进。使用Python,您可以使用Cython或Numba等项目将这10%选择性地转换为C甚至是汇编。结果通常是程序在完全用C编写的对等程序的惊人距离内运行,而不会因C的内存微管理细节而混乱。
最后,替代的Python运行时具有CPython运行时缺少的速度优化。例如,PyPy是即时(JIT)Python编译器,可将Python即时转换为本机代码。 PyPy可以为许多常见操作提供数量级的加速。
开发人员时间通常比机器时间重要
或者换一种说法:对于许多任务,开发速度胜过执行速度。
一个给定的Python程序执行可能需要六秒钟,而另一种语言则只需一秒钟。但是,对于开发人员而言,将该Python程序放在一起仅需十分钟,而另一种语言的开发时间则需要一个小时或更长的时间。执行Python程序所浪费的时间要比开发过程中节省的时间多得多。
显然,当您编写具有高吞吐量,高并发要求的软件(例如交易应用程序或数据库)时,情况并非如此。但是对于许多实际应用程序而言,从系统管理到机器学习等领域,Python将证明足够快。
另外,Python支持的灵活性和开发速度可能会允许创新,而使用其他语言实现创新将更加困难且耗时。
当开发速度和程序员的舒适度比节省几秒钟的时间更重要时,Python可能是完成这项工作的最佳工具。
原文链接:
https://www.infoworld.com/article/3204016/what-is-python-powerful-intuitive-programming.html?
了解新钛云服
新钛云服出品的部分精品技术干货
原文始发于微信公众号(新钛云服):