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