使用 Python 可以做什么?

Posted xinet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 Python 可以做什么?相关的知识,希望对你有一定的参考价值。

翻译自 《Python学习手册(第5版)》

Systems Programming

Python 对操作系统服务的内置接口使其非常适合编写可移植、可维护的系统管理工具和实用程序 utilities (有时称为 shell 工具)。Python 程序可以搜索文件和目录树、启动其他程序、使用进程和线程进行并行处理等等。

Python 的标准库带有 POSIX 绑定和对所有常用 OS 工具的支持: 环境变量、文件、套接字、管道、进程、多线程、正则表达式模式匹配、命令行参数、标准流接口、shell 命令发射器、文件名扩展、zip 文件实用程序、XML 和 JSON 分析器、CSV 文件处理程序等。此外, Python 的大部分系统接口设计为可移植; 例如, 复制目录树的脚本通常在所有主要 Python 平台上运行不变。EVE Online 采用 Stackless Python 的实现并提供了针对多处理需求的高级解决方案。

GUIs (用户图形接口)

Python 的简洁和快速周转也使它成为桌面上图形用户界面编程的好匹配。python 附带了一个标准面向对象的接口, 该 API 称为 tkinter (tkinter 2.X), 它允许 Python 程序实现具有本地外观和感觉的便携式 gui。Python/tkinter gui 在 Windows、X Windows ( Unix 和 Linux ) 和 Mac os (经典版和 OS x) 上运行不变。一个免费的扩展包, PMW, 添加高级小部件到 tkinter 工具包。此外, 基于 c++ 库的 wxPython GUI API 提供了一种在 Python 中构建便携式 gui 的替代工具包。

更高级别的工具包 (如达博) 建立在基本 api (如 wxPython 和 tkinter) 之上。使用适当的库, 您还可以在 Python 中的其他工具包中使用 GUI 支持, 例如 Qt 与 PyQt、具有 PyGTK 的 GTK、带有 PyWin32 的 MFC、. NET 和 IronPython, 以及使用 Jython (2 章中描述的 Java 版本的 Python) 或 JPype 进行摆动。对于在 web 浏览器中运行或具有简单接口要求的应用程序, Jython 和 Python web 框架和服务器端 CGI 脚本提供其他用户界面选项。

Internet Scripting

python 附带了标准的 Internet 模块, 允许 python 程序在客户端和服务器模式下执行各种网络任务。脚本可以通过套接字进行通信;提取发送到服务器端 CGI 脚本的表单信息;通过 FTP 传输文件;分析和生成 XML 和 JSON 文档;发送、接收、撰写和分析邮件; 按 URL 获取网页;解析获取的网页的 HTML;通过 XML (RPC、SOAP 和 Telnet) 进行通信等等。Python 的库使这些任务非常简单。

不仅如此, Web 上还提供了大量的第三方工具, 用于 Python 中的 Internet 编程。例如, HTMLGen 系统生成基于 Python 类的描述的 HTML 文件, mod_python 包在 Apache web 服务器中高效运行 Python, 并支持服务器端模板化及其 Python 服务器页面, 以及 Jython 系统提供无缝 Python/Java 集成, 并支持在客户端上运行的服务器端小程序的编码。

此外, 对于 python, 如 Django、TurboGears、web2py、塔架、Zope 和 WebWare, 完整的 web 开发框架包支持使用 python 快速构建全功能和生产质量的网站。其中许多功能包括对象关系映射器、模型/视图/控制器体系结构、服务器端脚本和模板以及 AJAX 支持, 以提供完整的企业级 web 开发解决方案。

最近, Python 已扩展到丰富的 Internet 应用程序 (RIAs), 其中包括 IronPython 中的 Silverlight 和 pyjs (也称为睡衣 ( pyjamas)) 及其 Python 到 JavaScript 编译器、AJAX 框架和小部件集。Python 还已迁移到云计算、应用引擎以及前面的数据库部分中描述的其他内容。在 Web 潜在客户的位置, Python 很快就会跟随。

Component Integration (组件集成)

Python 在 c 和 c++ 系统中扩展和嵌入的能力使其成为一种灵活的胶水语言, 用于编写其他系统和组件的行为脚本。例如, 将 C 库集成到 python 使 python 能够测试和启动库的组件, 并在产品中嵌入 Python, 无需重新编译整个产品 (或根本不发运其源代码) 即可对现场自定义进行编码。

诸如 SWIG 和 SIP 代码生成器之类的工具可以自动完成将编译的组件链接到 python 以便在脚本中使用所需的大部分工作, 而 Cython 系统允许程序员混合 python 和类似 C 的代码。更大的框架, 如 Python 在 Windows 上的 COM 支持、基于 Jython Java 的实现和 IronPython。基于 .NET 的实现提供了脚本组件的其他方法。例如, 在 Windows 上, Python 脚本可以使用框架来编写 Word 和 Excel 的脚本、访问 Silverlight 等。

Database Programming

对于传统的数据库需求, 对于所有常用的关系数据库系统 (Sybase、Oracle、Informix、ODBC、MySQL、PostgreSQL、SQLite 等) 都有 Python 接口。python 世界还定义了一个可移植数据库 API, 用于从 Python 脚本访问 SQL 数据库系统, 在各种基础数据库系统上看起来相同。例如, 由于供应商接口实现了便携式 API, 编写用于与免费 MySQL 系统一起工作的脚本在其他系统 (如 Oracle) 上的工作基本不变;您通常需要做的就是更换基础供应商界面。自2.5 以来, 进程内 SQLite 嵌入式 SQL 数据库引擎是 Python 本身的标准部分, 支持原型设计和基本程序存储需求。

在非 SQL 部分中, Python 的标准 pickle 模块提供了一个简单的对象持久化系统-它允许程序轻松地将整个 Python 对象保存和还原到文件和类似文件的对象。在 Web 上, 您还可以找到名为 ZODB 和 Durus 的第三方开源系统, 为 Python 脚本提供完整的面向对象的数据库系统;其他, 如 SQLObject 和 SQLAlchemy, 实现对象关系映射器 (ORMs), 将 Python 的类模型移植到关系表上;PyMongo 是 MongoDB 的一个接口, 它是一种高性能、非 SQL、开放源码的 JSON 样式文档数据库, 它将数据存储在结构非常类似于 python 自己的列表和字典中, 其文本可以使用 python 自己的标准库 json 模块进行分析和创建。

此外, 其他系统还提供了更专业的方法来存储数据, 包括在 Google App 引擎中使用数据存储, 通过 Python 类来建模和提供广泛的可扩展性, 以及其他新兴云存储选项, 如 Azure、PiCloud、OpenStack 和 Stackato。

Rapid Prototyping (快速原型)

对于 python 程序, 用 python 和 C 编写的组件看起来是一样的。因此, 最初可以在 Python 中原型系统, 然后将所选组件移动到编译语言 (如 c 或 c++) 以进行传递。与某些原型工具不同, Python 在原型凝固后不需要完全重写。不需要 C + + 等语言效率的系统部分可以保持在 Python 中编码, 便于维护和使用。

Numeric and Scientific Programming

python 在数字编程中也被大量使用, 这是一种传统上不被认为是脚本语言范围的领域, 但已经发展成为 python 最引人注目的用例之一。这里突出的是, 前面提到的 Python 的 NumPy 高性能数字编程扩展包括诸如数组对象的高级工具、标准数学库的接口等等。通过将 python 与以编译语言编码的数字例程集成为速度, NumPy 将 python 转换为复杂而易于使用的数字编程工具, 通常可以替换传统编译语言 (如 FORTRAN 或 C++) 编写的现有代码。

Python 支持动画、3D 可视化、并行处理等其他数字工具。例如, 流行的 SciPy 和 ScientificPython 扩展提供了更多的科学编程工具库, 并将 NumPy 作为核心组件使用。Python 的 PyPy 实现也在数字领域中得到了牵引, 部分原因是此域中常见的排序的大量算法代码可以在 PyPy 中快速运行, 通常速度快10X 到 100X。

Gaming, Images, Data Mining, Robots, Excel 等

Python 通常应用在更多的域中, 而不是可以在这里覆盖。例如, 您将找到允许您使用 Python 执行以下操作的工具:

  • 游戏编程和多媒体:pygame, cgkit, pyglet, PySoy, Panda3D, ...
  • 通过 PySerial 扩展, 在 Windows、Linux 和更多端口上进行串口通信
  • 使用 PyRo 工具包进行机器人控制编程
  • 使用 NLTK 包进行自然语言分析
  • 树莓派 (Raspberry Pi) 和 Arduino 板上的仪器仪表工具
  • 移动 (Mobile) 计算: Python 端口到谷歌 Android 和苹果 iOS 平台
  • Excel 电子表格功能和宏编程: PyXLL 或 DataNitro 加载项
  • 媒体文件内容和元数据标签处理 (Media file content and metadata tag processing): PyMedia, ID3, PIL/Pillow 等
  • 人工智能: PyBrain 神经网络库和 Milk 机器学习工具包
  • 专家系统: PyCLIPS, Pyke, Pyrolog, pyDatalog
  • 网络监视 (Network monitoring): zenoss, 使用 Python 进行编写和自定义
  • Python 脚本设计和建模: PythonCAD、PythonOCC、FreeCAD 和其他
  • 文件处理和生成 (Document processing and generation): ReportLab, Sphinx, Cheetah, PyPDF 等等
  • 使用 Mayavi、matplotlib、VTK、VPython 等进行数据可视化
  • xml 分析: xml 库包、xmlrpclib 模块和第三方扩展
  • JSON, CSV 文件处理: json and csv modules
  • 数据挖掘: 使用 Orange 框架、Pattern bundle、Scrapy 和自定义代码

以上是关于使用 Python 可以做什么?的主要内容,如果未能解决你的问题,请参考以下文章

常用python日期日志获取内容循环的代码片段

使用 Python 代码片段编写 LaTeX 文档

这个代码片段究竟做了啥?

python使用上下文对代码片段进行计时,非装饰器

13 个非常有用的 Python 代码片段

如何使用 Android 片段?