Python已经迅速成为最受欢迎的编程语言之一,这是因为它的简单性、多功能性和对学习该语言的人提供的丰富资源。它通常是初级程序员学习的第一种语言,它也被广泛用于从网络开发到数据分析的行业中。
Python社区非常庞大,根据GitHub的数据,Python一直在增长,截至2022年,增长了22.5%。它也是2023年使用量第三大的编程语言。这也是我们能接触到各种框架的主要原因,其中大部分是开源的。
在这篇文章中,我们将剖析2023年最流行、最有用的Python框架,你应该了解一下。
Python框架是Python模块的集合,它提供了一套通用的功能,可以作为构建任何类型的应用程序的结构。
框架的设计是为了简化开发过程,它提供了一个关于我们应该如何构建软件的一般准则,并抽象出一些更复杂或重复的任务。这使你能够专注于为你的应用程序编写独特和定制的逻辑,而不是重新发明车轮。
重复性任务的一个例子是处理HTTP请求。因为大多数网络应用需要处理这种类型的请求,开发者使用现有的框架来促进这种功能,而不是从头开始编写一切,或在不同项目中重复使用相同的代码。
现在我们已经明确了框架的概念,让我们来探讨一些Python框架的类型。
Python有各种各样的框架可用于不同类型的开发。让我们来看看其中的几个。
全栈Python框架是一组工具,它提供了开发者从头到尾构建一个完整的Web应用所需的一切。
这包括创建前端的方法–例如,模板系统和向用户显示信息的方法–和后端,包括创建数据库记录、处理HTTP请求和控制应用程序的安全性等常用功能。
微框架是一个简约的框架,只提供构建某种应用所需的基本组件。
它被设计成轻量级且易于扩展,使其成为小型项目或希望对其代码进行更多控制的开发者的良好选择。
一个异步框架被设计用来处理并发性和并行性,允许开发者构建可以同时执行多个任务的应用程序。
Python包管理器(pip)
pip是一个用于Python软件包的包管理器。如果你已经安装了Python,你可以访问pip的命令行界面,它允许你安装Python包。
一个包是一个孤立的、可重复使用的代码集合,它提供特定的功能来解决一个共同的任务(网络开发、认证、GUI)。我们接下来要看到的所有框架都是Python标准库的一部分,这意味着它们可以作为pip包使用。
你可以用以下命令安装Python Package Index(PyPI)上的任何包:
pip install package-name
你也可以用下面的命令从文本文件中安装包——例如,一个项目的需求文件。
pip install -r requirements.txt
Python 库是一个函数和方法的集合,可以用来执行特定的任务,例如解析数据或生成随机数。一个库的范围通常比较有限,是作为一个更大的应用程序中的工具来使用的。
另一方面,Python框架提供了一套完整的工具和功能,可以用来构建整个应用程序。它通常定义了软件开发人员在创建一个项目时遵循的工作流程。
这并不意味着你不能用其他软件包来扩展框架的功能,这些软件包通常被称为插件。
在开发应用程序时,使用Python框架有几个好处。让我们回顾一下其中的一些:
现在你有了足够的理论背景,让我们来看看2023年的25大Python框架。
这里有25个最受欢迎的Python框架,按功能分为几个部分。
以下是轻量级的微框架,当你想快速创建一个简单的应用程序或在你的服务器上有很少的内存消耗时,是很有用的。
Flask
Flask生成的页面
Flask是一个轻量级的微型框架,用于快速构建简单的Web应用程序。它包括对Jinja模板(一种重用HTML代码的方法)、请求处理和应用信号的支持。
启动一个Flask应用程序真正需要的代码不到六行:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "Hello Kinsta"
特点:
你还可以使用一些扩展包,如Flask-RESTful,它增加了对构建强大的REST API的支持,以及Flask-SQLAlchemy,这是一种在flask应用中使用SQLAlchemy的便捷方式。
Bottle
Bottle logo
想创建没有其他依赖性的、轻得令人发指的Web应用程序吗?Bottle是一个轻量级的Python微框架,旨在轻松构建小型或中型的Web应用程序。除了Python标准库之外,它不包括任何外部依赖性、
Bottle是建立在WSGI(网络服务器网关接口)标准之上的,与大多数网络服务器和Python版本兼容。
特点:
CherryPy
CherryPy网络框架
CherryPy是一个用于Python的简约的Web应用开发框架。它是一个面向对象的框架(OOP),允许你以与Python中任何其他OOP相同的方式构建Web应用程序。
它从2002年开始出现,并在生产环境中被广泛采用,涉及不同的网站,从功能简单的网站到要求高度复杂的网站。例如,巨型软件服务Netflix和Hulu都使用CherryPy作为其基础设施的一部分。
CherryPy的主要任务是处理HTTP请求,并将其与开发人员编写的适当逻辑相匹配。这意味着在默认情况下,CherryPy不提供数据库访问或HTML模板,将应用程序的所有逻辑留给你。
特点:
以下是完整的web框架,包括用于常见web开发任务的组件,如数据库访问、表单处理和安全。与微型框架不同,Python网络框架提供了你所需要的一切,开箱即用。
在构建一个web应用时,你真的应该考虑你的需求。有时,仅仅使用WordPress是远远不够的。
Django
Django的起始页
Django是Python生态系统中最流行和最广泛使用的Web框架之一。它是一个坚如磐石的全栈框架,包含了你构建一个完整的Web应用所需要的一切。
它在2005年首次被引入,作为建立通讯网站的Pythonic方式。如今,它是网络开发中使用最多的Python库之一,每月有近800万次下载。一些有史以来最大的网站最初都是用Django创建的,如Instagram、Discus、Pinterest、Bitbucket和Chess.com。
Django遵循模型-视图-模板(MVT)架构,包括内置功能,如模板、数据库管理、管理面板、信号和视图(用于管理后台的逻辑)。要掌握Django,建议你有很强的Python面向对象编程的基础,以及函数式编程。
在你的下一个网络项目中选择Django是不会错的。它是一个强大的网络框架,提供了你建立快速和可靠的网站所需的一切。如果你需要任何额外的功能–比如说,能够创建一个REST API,与React或Angular等现代前端框架一起使用–你可以使用Django REST框架等扩展。
特点:
FastAPI
FastAPI在localhost的自动文档
FastAPI是一个现代的网络框架,它做了一件了不起的事情:构建API。
自2018年发布以来,由于其出色的性能和简单性,它已经迅速获得了普及。事实上,根据PyPi Stats,FastAPI的月下载量超过900万,甚至超过了Django等全栈框架。
FastAPI的月下载量超过了Django
请记住,FastAPI的唯一目的是构建后端API。这意味着你必须有一个前端框架(如Vue.js)来向用户展示你的网站。
特点:
Pyramid
Pyramid文档页…
Pyramid是一个灵活的、可扩展的网络框架,非常适合于小型和大型应用程序。它是介于Flask这样的微框架和Django这样的全栈框架之间的甜蜜点。
Pyramid包含了你在开发Python网络应用程序时需要的最常见的功能,但它让你只关注你的项目所需要的组件。
特点:
Tornado
Tornado网络框架
Tornado是一个开源的异步网络框架和网络库,用于使用Python构建网络应用。它最初是在FriendFeed开发的,这是一个社交媒体聚合器,后来被Facebook收购。它现在被广泛用于各种应用,包括网络服务、实时分析和其他高并发应用。
Tornado为处理大量的同时连接进行了优化,使其适用于需要与每个用户建立长期连接的应用(例如,聊天应用程序、机器人和网络爬虫)。
特点:
以下Python图形用户界面(GUI)框架为创建桌面应用程序提供了广泛的工具和功能,包括对事件驱动编程、部件和图形的支持。
PyQt
PyQt框架
PyQt是Qt跨平台应用程序框架的最流行的Python绑定集之一。这个框架完美地结合了Python作为一种通用语言的简单性和用C++构建的强大的Qt应用框架。
Binding是两种编程语言之间的一个API(可以把它看作是一座桥梁)。在这种情况下,Qt的Python绑定意味着你可以在Python代码中使用最初用C++编写的Qt工具。
请记住,PyQt有两个许可选项:
特点:
Tkinter
Tkinter 计算器
Tkinter 是一个内置的 Python GUI 框架。它是标准库的一部分,所以你不需要安装任何额外的依赖项。
与PyQt(使用Qt)类似,Tkinter使用一个叫做Tk的图形用户界面工具箱。它还提供了一套用于创建各种部件的工具,如按钮、标签、文本框和菜单。
总的来说,Tkinter是一个快速创建小型GUI程序的好方法,但由于其过时的外观和感觉,你最好为大型项目选择一个更强大的框架。
特点:
Kivy
Kivy网站
Kivy是一个开源框架,用于用Python创建跨平台的移动和桌面应用程序。它非常适用于创建交互式和视觉上有吸引力的应用程序,如游戏和多点触摸应用程序,其主要卖点是每个主要平台(Windows、Linux、macOS、iOS和Android)的单一代码库。
与PyQt不同的是,Kivy是免费和开源的,它不是一个围绕外部UI库的包装,而且是在MIT许可下授权的,这意味着你可以出货并使你的Kivy应用盈利。
特点:
PySide
PySide GUI框架
Pyside是一个用于创建多平台应用程序的开源工具箱。它基于Qt库(类似于PyQt),并提供对广泛功能的访问。
Pyside还支持多种输入方法和事件驱动的编程,并包括对图形和多媒体的内置支持。
因为它是在LGPL下授权的,所以你可以更容易地创建专有软件。它得到了Qt公司的支持,支持Linux、macOS和Windows。
特点:
PySimpleGUI
PySimpleGUI
PySimpleGUI因其简单易用的API在Python社区越来越受欢迎。
它是在Python中创建简单易用的图形用户界面的一个很好的选择,并且允许你非常容易地在你已经工作的脚本中添加图形用户界面。PySimpleGUI包装了4个不同的GUI库,PySide、Tkinter、wxPython和Remi的力量。
特点:
以下是提供预建功能和工具的Python软件库,以帮助开发者构建和部署机器学习模型,支持数据预处理、模型训练和评估等常见任务,以及将模型部署到生产的工具。
scikit-learn
scikit-learn框架
scikit-learn是最流行的机器学习库,在科技行业和学术界都被使用。
它为常见的ML任务提供了有效的工具,并且它建立在其他科学库如Numpy和SciPy之上。
特点:
TensorFlow
TensorFlow
TensorFlow是一个用于构建和部署机器学习模型的开源平台。它由谷歌大脑团队在2015年开发,是一个强大的深度学习库,拥有广泛的工具来构建和训练神经网络。
TensorFlow可用于各种任务,如图像和语言处理、语音识别和预测分析。
特点:
PyTorch
PyTorch logo
与TensorFlow一样,PyTorch(由Facebook的人工智能研究小组开发)是构建深度学习模型的最常用工具之一。它可以用于各种任务,如计算机视觉、自然语言处理和生成模型。
特点:
Keras
Keras深度学习框架
Keras是一个高级别深度学习框架,能够在TensorFlow、Theano和CNTK之上运行。它是由François Chollet在2015年开发的,旨在为构建和训练深度学习模型提供一个简单和用户友好的界面。
Keras提供了快速建立机器学习模型的构建模块。这就是为什么它被广泛用于像Kaggle的数据科学竞赛。
特点:
这些框架帮助学生、科学家和研究人员完成他们的任务,而不必关注计算的低级细节。
科学计算框架通常包括线性代数、优化、插值、积分和其他科学计算中常见任务的功能。
NumPy
Numpy logo
NumPy是一个科学计算库,旨在处理数字数据的多维数组和矩阵。它还提供了广泛的数学函数来对这些数组进行操作。
NumPy是许多其他用于数据科学的Python库和框架的基础模块,包括SciPy、Pandas、scikit-learn和Tensorflow。
特点:
SciPy
Scipy logo
SciPy提供了一个建立在NumPy之上的算法和函数集合。它有助于执行常见的科学和工程任务,如优化、信号处理、积分、线性代数等。
特点:
Pandas
Pandas logo
Pandas是一个强大而灵活的开源库,用于在Python中进行数据分析。它提供了高性能的数据结构(即著名的DataFrame)和数据分析工具,使结构化数据的处理变得简单。
特点:
Matplotlib
Matplotlib logo
Matplotlib是一个广泛使用的Python中的数据可视化工具。它提供了一个面向对象的API,用于将绘图嵌入到应用程序中。
它的设计是高度可定制的,它为创建绘图、图表和可视化提供了广泛的选项。由于这些原因,Matplotib经常被用于数据科学、机器学习和科学计算项目中。
特点:
这些框架都是为了帮助你完成测试代码的繁琐过程。
如果你正在使用测试驱动开发(TDD),以下框架是你工作流程中的必备工具。
Pytest
Pytest logo
Pytest是一个被广泛采用的测试框架,被设计为易于使用和扩展。它可以帮助你在小型和复杂的Python代码库中编写优雅的测试。
特点:
Unittest
Unittest测试框架
Unittest是一个内置的Python测试框架,它是基于xUnit测试惯例的。它提供了一种Pythonic和面向对象的方式来创建自动测试案例和测试套件。
特点:
nose2
nose测试框架
nose2是nose测试框架的继承者,主要区别是nose2支持现代Python版本。
nose2扩展了内置的unittest库,并提供了一种更强大和灵活的方式来编写和运行测试。它是一个可扩展的工具,所以你可以使用多个内置和第三方插件来发挥你的优势。
特点:
这些类型的Python框架提供了一套工具和库,使开发者能够以更易于管理和高效的方式编写异步代码。
编写异步代码允许并行执行某些任务,而不妨碍其他任务的执行。
asyncio
asyncio
asyncio是许多其他异步框架的核心。它允许开发者使用async/await语法编写并发代码,而且它被设计用来处理成千上万的并发连接。
asyncio为多种传输协议,如TCP、UDP、SSL/TLS和子进程通信,提供了一个单一的API。
特点:
Aiohttp
Aiohttp
Aiohttp 是一个建立在 asyncio 包之上的异步 HTTP 客户/服务器框架。它为处理HTTP请求和响应提供了一个简单而直观的界面,并支持中间件、会话和其他Web开发工具。
特点:
Python框架可以帮助促进代码组织,提高生产力,并使软件开发过程更容易、更高效。
作为一个Python开发者,你的工作并不是要成为我们上面介绍的所有25个Python框架的专家,而是要仔细选择你最感兴趣的框架,用它们构建真正让你兴奋的项目,并完全掌握这一两个框架。