428 lines
44 KiB
Markdown
428 lines
44 KiB
Markdown
# 用 Python 可以做什么?
|
||
|
||
> 原文:<https://realpython.com/what-can-i-do-with-python/>
|
||
|
||
你已经完成了一门课程,或者终于看完了一本[书](https://realpython.com/products/python-basics-book/),这本书教你用 Python 编程的[基础知识。你已经学习了](https://realpython.com/learning-paths/python3-introduction/)[变量](https://realpython.com/python-variables/)、[列表、元组](https://realpython.com/python-lists-tuples/)、[字典](https://realpython.com/python-dicts/)、 [`for`](https://realpython.com/python-for-loop/) 和 [`while`](https://realpython.com/python-while-loop/) 循环、[条件语句](https://realpython.com/python-conditional-statements/)、[面向对象概念](https://realpython.com/python3-object-oriented-programming/)等等。那么,下一步是什么?现在你能用 Python 做什么?
|
||
|
||
Python 是一种通用的编程语言,在各种不同的领域有许多用例。如果你已经掌握了 Python 的基础知识,并且渴望用这种语言构建一些东西,那么是时候考虑下一步该怎么做了。
|
||
|
||
**在本文中,您将看到如何使用 Python 来:**
|
||
|
||
* 做一般的**软件开发**
|
||
* 钻研**数据科学和数学**
|
||
* 加速和自动化您的**工作流程**
|
||
* 构建**嵌入式系统**和**机器人**
|
||
|
||
您还将找到实用项目、资源和教程的想法,您可以使用它们立即开始用 Python 构建东西。
|
||
|
||
**免费奖励:** [从 Python 基础:Python 3 实用入门](https://realpython.com/bonus/python-basics-sample-free-chapter/)中获取一个示例章节,看看如何通过完整的课程(最新的 Python 3.9)从 Python 初学者过渡到中级。
|
||
|
||
## 真实世界中的 python
|
||
|
||
Python 是一种高级通用编程语言。正如这个定义所暗示的,你可以将 Python 用于几个目的,从 [web 开发](https://realpython.com/tutorials/web-dev/)到[数据科学](https://realpython.com/tutorials/data-science/)、[机器学习](https://realpython.com/tutorials/machine-learning/)和[机器人](https://talkpython.fm/episodes/show/232/become-a-robot-developer-with-python)。Python 的真实用例是无限的。
|
||
|
||
你可能想知道哪些人用 Python 成功地构建了。如果你快速浏览一下使用这种语言的公司,你会发现[世界级的公司](https://realpython.com/world-class-companies-using-python/),比如谷歌、YouTube、脸书、Instagram、Spotify、网飞等等。
|
||
|
||
谷歌从一开始就使用 Python,它已经成为科技巨头的主要服务器端语言之一。[Python 的创造者吉多·范·罗苏姆](https://twitter.com/gvanrossum),在那里工作了几年,监督语言的发展。
|
||
|
||
[Instagram 喜欢 Python](https://pyfound.blogspot.com/2021/05/the-2021-python-language-summit-cpython.html) 简单。服务[因](https://instagram-engineering.com/web-service-efficiency-at-instagram-with-python-4976d078e366)运行“完全用 Python 编写的世界上最大的 Django web 框架部署”而闻名
|
||
|
||
Spotify 使用这种语言进行数据分析和后端服务。据其团队称,Python 的易用性导致了闪电般快速的开发流程。Spotify 执行大量的分析来给用户提供建议,所以它需要一个有效的工具。巨蟒来救援了!
|
||
|
||
你还会发现 Python 对于科学和太空探索至关重要,在 T2 机器人和硬件控制方面有很多令人兴奋的用例。
|
||
|
||
在本文中,您将看到如何在广泛的领域中使用 Python 技能。
|
||
|
||
[*Remove ads*](/account/join/)
|
||
|
||
## 开发酷软件
|
||
|
||
Python 的生态系统提供了一套丰富的[框架](https://en.wikipedia.org/wiki/Software_framework)、工具和库,允许你编写几乎任何种类的应用程序。你可以使用 Python 为[网络](https://en.wikipedia.org/wiki/World_Wide_Web)以及[桌面](https://en.wikipedia.org/wiki/Desktop_metaphor)和[移动](https://en.wikipedia.org/wiki/Mobile_computing)平台构建应用程序。你甚至可以用 Python 来[创作视频游戏](https://realpython.com/top-python-game-engines/)。
|
||
|
||
### 网络开发
|
||
|
||
用 Python 开发 web 应用程序是最受欢迎的技能之一,有很多机会等着你。在这个领域,您会发现一些有用的 Python 框架、库和工具,用于开发很酷的 web 应用程序、API 等等。以下是一些最流行的 Python web 框架:
|
||
|
||
| 结构 | 描述 |
|
||
| --- | --- |
|
||
| 姜戈 | Django 是一个高级框架,它鼓励使用简洁实用的设计来快速开发 web 应用程序。它可以让你专注于编写你的应用程序,而不必重新发明轮子。 |
|
||
| [FastAPI](https://fastapi.tiangolo.com/) | FastAPI 是一个用于构建 web APIs 的快速且高性能的 web 框架。它建立在现代 Python 类型提示特性之上,支持[异步](https://realpython.com/async-io-python/)编程。 |
|
||
| [烧瓶](https://palletsprojects.com/p/flask/) | Flask 是一个用于创建 web 应用程序的轻量级框架。它允许您快速开始,并在需要时扩展到复杂的应用程序。 |
|
||
| [龙卷风](https://www.tornadoweb.org/en/stable/) | Tornado 是一个 web 框架和异步网络库。它使用非阻塞网络 [I/O](https://en.wikipedia.org/wiki/Input/output) ,因此您可以编写可以扩展到数万个开放连接的应用程序。 |
|
||
|
||
要开始 web 开发,请查看:
|
||
|
||
* [Python Web 开发教程](https://realpython.com/tutorials/web-dev/)
|
||
* [Django 教程](https://realpython.com/tutorials/django/)
|
||
* [烧瓶教程](https://realpython.com/tutorials/flask/)
|
||
* [FastAPI Tutorial](https://realpython.com/fastapi-python-web-apis/)
|
||
|
||
如果你想要一些实用的项目想法来立即应用你的 web 开发技能,那么你可以用 Django 构建一个 [portfolio web 应用程序。有这么多的工作和职业机会,现在拥有一个个人投资组合是一个很好的主意,所以去尝试一下吧。您不需要了解任何关于 Django 的知识,就可以开始学习这个循序渐进的教程。如果你想尝试用 Python 进行 web 开发,这是再好不过的了。](https://realpython.com/get-started-with-django-1/)
|
||
|
||
### CLI 开发
|
||
|
||
Python 另一个大放异彩的领域是[命令行界面(CLI)](https://en.wikipedia.org/wiki/Command-line_interface) 应用程序开发。CLI 应用程序无处不在,它允许您通过为命令行创建大大小小的工具来自动化日常工作中重复而枯燥的任务。
|
||
|
||
在 Python 中,您有一套令人印象深刻的 CLI 库和框架,可以让您的生活更加愉快,并帮助您快速构建命令行工具:
|
||
|
||
| 图书馆 | 描述 |
|
||
| --- | --- |
|
||
| [T2`argparse`](https://docs.python.org/3/library/argparse.html#module-argparse) | `argprse`是一个[标准库](https://docs.python.org/3/library/index.html)模块,允许你编写用户友好的命令行界面。您可以在命令行定义想要的参数,并很好地解析它们。它会自动生成帮助和使用信息,并在用户输入无效时发出错误信息。 |
|
||
| [点击](https://palletsprojects.com/p/click/) | Click 是一个 Python 包,可以用最少的代码创建漂亮的命令行界面。它是高度可配置的,并带有现成的合理默认值。它的目标包括使编写命令行工具的过程变得快速而有趣。 |
|
||
| [类型](https://typer.tiangolo.com/) | Typer 是一个用于构建 CLI 应用程序的库,用户会喜欢使用它,开发人员也会喜欢创建它。它为所有的[外壳](https://en.wikipedia.org/wiki/Shell_(computing))提供自动帮助消息和自动完成。它最大限度地减少了代码重复,并方便了调试。 |
|
||
|
||
要开始 CLI 开发,请查看:
|
||
|
||
* [如何用 argparse 在 Python 中构建命令行界面](https://realpython.com/command-line-interfaces-python-argparse/)
|
||
* [比较 Python 命令行解析库——arg parse、Docopt 和 Click](https://realpython.com/comparing-python-command-line-parsing-libraries-argparse-docopt-click/)
|
||
|
||
此外,如果您想开始构建 CLI 应用程序项目,那么您可以从为您的命令行创建一个[目录树生成器工具](https://realpython.com/directory-tree-generator-python/)开始。在这个循序渐进的项目中,您将构建一个命令行工具来生成 ASCII 图,显示文件系统中的[目录](https://en.wikipedia.org/wiki/Directory_(computing))或文件夹的内容。
|
||
|
||
对于任何 Python 开发人员来说,创建具有用户友好且直观的命令行界面的应用程序都是一项有价值的技能。
|
||
|
||
### 图形用户界面开发
|
||
|
||
为[桌面环境](https://en.wikipedia.org/wiki/Desktop_environment)创建传统的[图形用户界面(GUI)](https://en.wikipedia.org/wiki/Graphical_user_interface) 应用程序也是 Python 中一个有吸引力的选项。如果您对构建这种应用程序感兴趣,那么 Python 为您提供了广泛的 GUI 库、框架和工具包供您选择:
|
||
|
||
| 图书馆 | 描述 |
|
||
| --- | --- |
|
||
| [Kivy](https://kivy.org/#home) | Kivy 是一个用于快速开发具有创新用户界面的应用程序的库,例如[多点触摸](https://en.wikipedia.org/wiki/Multi-touch)应用程序。它可以在 Linux、Windows、macOS、Android、iOS 和[树莓派](https://realpython.com/python-raspberry-pi/)上运行。 |
|
||
| [PyQt](https://www.riverbankcomputing.com/static/Docs/PyQt6/) | PyQt 是一组用于 [Qt](https://wiki.qt.io/About_Qt) 应用程序框架的 Python 绑定。它包括构建 GUI 应用程序的类。它还提供了网络类、[线程](https://realpython.com/python-pyqt-qthread/)、 [SQL 数据库](https://realpython.com/python-pyqt-database/)等等。它支持 Windows、Linux 和 macOS 平台。 |
|
||
| [PySimpleGUI](https://pysimplegui.readthedocs.io/en/latest/) | PySimpleGUI 是一个库,旨在将 tkinter、Qt、wxPython 和 [Remi](https://github.com/dddomodossola/remi) GUI 框架转换成一个更简单的界面。它使用 Python 核心数据类型来定义窗口和简化事件处理。 |
|
||
| [Qt for Python ( `PySide6` )](https://www.qt.io/qt-for-python) | Qt for Python 是一个为 Qt 框架提供官方 Python 绑定集(`PySide6`)的项目。 |
|
||
| [tkinter](https://docs.python.org/3/library/tkinter.html#module-tkinter) | tkinter 是对 [Tk GUI 工具包](https://en.wikipedia.org/wiki/Tk_(software))的标准 Python 接口。它允许您构建 GUI 应用程序,而不需要依赖第三方。它可以在大多数 Unix 平台和 Windows 系统上使用。 |
|
||
| [wxPython](https://www.wxpython.org/) | wxPython 是针对 [wxWidgets](https://www.wxwidgets.org/) [C++](https://en.wikipedia.org/wiki/C%2B%2B) 库的 Python 绑定。它允许你用一个代码库为 Windows、macOS 和 Linux 创建应用程序。它给了应用一个本地的外观和感觉,因为它使用了平台的本地 [API](https://en.wikipedia.org/wiki/API) 。 |
|
||
|
||
开始构建 GUI 应用程序的一个快速方法是使用 [`tkinter`](https://realpython.com/python-gui-tkinter/) 。这个模块来自 Python 标准库。练习使用`tkinter`并观察你的视觉在屏幕上实现。一旦你熟悉了,你就可以开始使用其他 Python GUI 工具包了。
|
||
|
||
要开始 GUI 编程,请查看:
|
||
|
||
* [Python GUI 编程教程](https://realpython.com/tutorials/gui/)
|
||
* [Python GUI 编程学习路径](https://realpython.com/learning-paths/python-gui-programming/)
|
||
* [使用 PyQt 学习路径的 GUI 编程](https://realpython.com/learning-paths/pyqt-gui-programming/)
|
||
|
||
构建后端服务是开发的重要组成部分。但是,你也需要一个前端。创建用户可以有效交互的应用程序至关重要。
|
||
|
||
如果您想开始创建真实世界的 GUI 应用程序,那么您可以使用 PyQt 构建一个计算器。完成这个计算器项目将帮助你掌握这个全功能 GUI 框架的基本原理,这样你就可以立即开始为你的桌面构建漂亮的东西。
|
||
|
||
您还可以找到一些其他实用的项目来帮助您完成 GUI 编程之旅。请查看以下资源:
|
||
|
||
* [用 Python 和 PyQt 构建批量文件重命名工具](https://realpython.com/bulk-file-rename-tool-python/)
|
||
* [用 Python、PyQt 和 SQLite 建立联系簿](https://realpython.com/python-contact-book/)
|
||
|
||
这些项目将引导您完成用 PyQt 和 Python 构建 GUI 应用程序的过程。他们还将帮助您整合各种技能,以创建功能齐全的真实世界的应用程序。
|
||
|
||
[*Remove ads*](/account/join/)
|
||
|
||
### 游戏开发
|
||
|
||
创建电脑游戏不仅是学习如何用 Python 编程的好方法,也是学习如何用其他语言编程的好方法。开发游戏,你需要使用[变量](https://realpython.com/python-variables/)、[循环](https://realpython.com/python-for-loop/)、[条件语句](https://realpython.com/python-conditional-statements/)、[函数](https://realpython.com/defining-your-own-python-function/)、[面向对象编程](https://realpython.com/courses/intro-object-oriented-programming-oop-python/)等等。游戏开发是整合多种技能的绝佳选择。
|
||
|
||
电脑游戏在编程中发挥了重要作用。许多人进入编程领域是因为他们热爱游戏,想要重新创作自己喜欢的游戏或者构建自己的游戏。开发电脑游戏可以是一种有趣且有益的冒险,在其中你可以体验玩你刚刚创建的游戏的美妙体验。
|
||
|
||
您会发现在 Python 生态系统中有几种快速创建游戏的工具、库和框架。这是其中的一个小例子:
|
||
|
||
| 图书馆 | 描述 |
|
||
| --- | --- |
|
||
| [街机](https://arcade.academy/index.html) | Arcade 是一个用于创建 2D 视频游戏的 Python 库。它非常适合学习编程的人,因为他们不需要学习复杂的游戏框架来开始创建自己的游戏。 |
|
||
| [PyGame](https://www.pygame.org/wiki/about) | PyGame 是一组 Python 模块,设计用于编写视频游戏。它在 [SDL](http://www.libsdl.org/) 库的基础上增加了功能。它允许你创建全功能的游戏和多媒体程序。这个库是高度可移植的,可以在多种平台和操作系统上运行。 |
|
||
| [pyglet](http://pyglet.org/) | pyglet 是一个强大的 Python 库,用于在 Windows、macOS 和 Linux 上创建游戏和其他视觉丰富的应用程序。它支持窗口、用户界面事件处理、 [OpenGL](https://en.wikipedia.org/wiki/OpenGL) 图形、加载图像以及播放视频和音乐。 |
|
||
|
||
要开始游戏编程,请查看:
|
||
|
||
* [Python 游戏开发教程](https://realpython.com/tutorials/gamedev/)
|
||
* py Game:Python 游戏编程入门
|
||
|
||
你可以使用 Python 来创建[街机游戏](https://realpython.com/arcade-python-game-framework/)、冒险游戏和益智游戏,你可以在几个小时内部署这些游戏。你还可以用你新学到的编程技巧编写经典游戏,比如 hangman、[井字游戏](https://realpython.com/tic-tac-toe-python/)、[石头剪刀布](https://realpython.com/python-rock-paper-scissors/)等等。
|
||
|
||
如果你想开始构建你的第一个游戏,那么你可以从用 Python 和 PyGame 构建一个小行星游戏开始。如果你想更进一步,构建你的第一个平台游戏,那么看看[用街机](https://realpython.com/platformer-python-arcade/)用 Python 构建一个平台游戏。
|
||
|
||
## 深入研究数据科学和数学
|
||
|
||
[数据科学](https://en.wikipedia.org/wiki/Data_science)是一个涉及清理、准备和分析数据以从中提取知识的领域。数据科学结合了[统计学](https://en.wikipedia.org/wiki/Statistic)、[数学](https://en.wikipedia.org/wiki/Mathematics)、[编程](https://en.wikipedia.org/wiki/Computer_programming),以及解题技巧,从数据中提取有用的信息。
|
||
|
||
Python 在数据科学和数学领域扮演着重要角色。这种语言因其可读性、生产率、灵活性和可移植性而在科学家中流行起来。围绕科学的 Python 生态系统已经有了巨大的发展。你会发现在数学和科学的几乎每个主要领域都有成熟的 Python 解决方案。
|
||
|
||
Python 包括[机器学习(ML)](https://en.wikipedia.org/wiki/Machine_learning) 、[人工智能(AI)](https://en.wikipedia.org/wiki/Artificial_intelligence) 、[科学计算](https://en.wikipedia.org/wiki/Computational_science)、[数据分析](https://en.wikipedia.org/wiki/Data_analysis)、[数据可视化](https://en.wikipedia.org/wiki/Data_visualization)的工具。这种语言还提供了收集、[挖掘和操作数据的有效工具。](https://en.wikipedia.org/wiki/Data_mining)
|
||
|
||
### 机器学习
|
||
|
||
对于对人工智能感兴趣的人来说,机器学习可能是第一步。机器学习研究通过经验学习的算法。这些算法基于[训练数据](https://en.wikipedia.org/wiki/Training_data)的样本建立模型,进行预测和决策。
|
||
|
||
机器学习可能是一个令人生畏的领域,因为这个领域是快速和不断变化的。这里总结了一些最流行的使用 Python 进行机器学习的工具:
|
||
|
||
| 图书馆 | 描述 |
|
||
| --- | --- |
|
||
| [Keras](https://keras.io/) | Keras 是一个工业强度的深度学习框架,具有为人类设计的 API。它允许你运行新的实验,快速尝试更多的想法。它遵循减少认知负荷的最佳实践。 |
|
||
| [NLTK](https://www.nltk.org/) | NLTK 是一个平台,用于构建 Python 程序来处理人类语言数据。它提供了用于分类、标记化、词干提取、标记、解析和语义推理的库。 |
|
||
| [指针](https://pytorch.org/) | PyTorch 是一个开源的机器学习框架,它加速了从研究原型到生产部署的过程。 |
|
||
| [scikit-learn](http://scikit-learn.org/) | scikit-learn 是一个开源的机器学习库,支持[监督的](https://en.wikipedia.org/wiki/Supervised_learning)和[非监督的学习](https://en.wikipedia.org/wiki/Unsupervised_learning)。这是一个高效的预测数据分析工具,每个人都可以使用,并且可以在各种环境中重复使用。 |
|
||
| [TensorFlow](https://www.tensorflow.org/) | TensorFlow 是一个机器学习的端到端开源平台。它有一个全面、灵活的工具、库和社区资源生态系统,可以帮助您构建和部署 ML 驱动的应用程序。 |
|
||
|
||
要开始学习机器,请查看:
|
||
|
||
* [Python 机器学习教程](https://realpython.com/tutorials/machine-learning/)
|
||
* [用 Python 学习路径进行机器学习](https://realpython.com/learning-paths/machine-learning-python/)
|
||
|
||
### 科学计算
|
||
|
||
Python 发挥重要作用的另一个领域是科学计算。科学家们通过[超级计算机](https://en.wikipedia.org/wiki/Supercomputer)、[计算机集群](https://en.wikipedia.org/wiki/Computer_cluster),甚至台式机和笔记本电脑,使用先进的[计算](https://en.wikipedia.org/wiki/Computing)能力来理解和解决复杂的问题。
|
||
|
||
以下是目前在 Python 中可以用于科学计算的一些库和工具:
|
||
|
||
| 图书馆 | 描述 |
|
||
| --- | --- |
|
||
| [NumPy](https://numpy.org/) | NumPy 是使用 Python 进行科学计算的基础包。它提供了全面的数学函数,随机数生成器,线性代数例程,傅立叶变换,等等。它提供了一种高级语法,使其易于访问且高效。 |
|
||
| [轨道](https://www.scipy.org/)轨道 | SciPy 是一个基于 Python 的数学、科学和工程开源软件集合。 |
|
||
| 简单的 | SimPy 是一个基于 Python 的基于流程的离散事件仿真框架。它可以帮助您模拟真实世界的系统,如机场、客户服务、高速公路等。 |
|
||
|
||
要开始科学计算,请查看:
|
||
|
||
* [数据科学的数学学习路径](https://realpython.com/learning-paths/math-data-science/)
|
||
* [NumPy、SciPy 和 Pandas:与 Python 的相关性](https://realpython.com/numpy-scipy-pandas-correlation-python/)
|
||
* [SimPy:用 Python 模拟真实世界的流程](https://realpython.com/simpy-simulating-with-python/)
|
||
|
||
本节中的库和工具是 Python 中数据科学领域的基础部分。其中一些是用于机器学习、数据分析等的高级库的核心组件。
|
||
|
||
[*Remove ads*](/account/join/)
|
||
|
||
### 数据分析和可视化
|
||
|
||
[数据分析](https://en.wikipedia.org/wiki/Data_analysis)是收集、检查、[清洗](https://en.wikipedia.org/wiki/Data_cleansing)、[转换](https://en.wikipedia.org/wiki/Data_transformation)、[建模](https://en.wikipedia.org/wiki/Data_modeling)数据,以发现有用信息、做出预测、得出结论、支持决策过程等的过程。数据分析与[数据可视化](https://en.wikipedia.org/wiki/Data_visualization)密切相关,后者处理数据的图形表示。
|
||
|
||
在 Python 中,您还会发现用于数据分析和数据可视化的成熟和完善的库。以下是其中的一些:
|
||
|
||
| 图书馆 | 描述 |
|
||
| --- | --- |
|
||
| [散景](https://bokeh.org/) | Bokeh 是一个用于 web 浏览器的交互式数据可视化库。它提供了构建优雅和通用图形的工具。它可以帮助您快速制作交互式绘图、仪表盘和数据应用程序。 |
|
||
| [破折号](https://plotly.com/dash/) | Dash 是一个 Python 框架,用于快速构建 web 分析应用程序。它非常适合于构建在浏览器中呈现自定义用户界面的数据可视化应用程序。 |
|
||
| [Matplotlib](https://matplotlib.org/) | Matplotlib 是一个用于在 Python 中创建静态、动画和交互式数据可视化的库。 |
|
||
| 熊猫 | pandas 是一个用于分析和操作数据的强大而灵活的开源工具。它提供了快速、灵活和富有表现力的数据结构来处理关系数据或标签数据。 |
|
||
| [Seaborn](https://seaborn.pydata.org/) | Seaborn 是一个基于 Matplotlib 的 Python 数据可视化库。它提供了一个高级界面,用于绘制吸引人的信息丰富的统计图形,使您能够探索和理解您的数据。它与 pandas 数据结构紧密集成。 |
|
||
|
||
要开始数据分析和可视化,请查看:
|
||
|
||
* [数据收集&存储学习路径](https://realpython.com/learning-paths/data-collection-storage/)
|
||
* [使用 Python 学习路径进行数据可视化](https://realpython.com/learning-paths/data-visualization-python/)
|
||
* [数据科学与 Python 核心技能学习路径](https://realpython.com/learning-paths/data-science-python-core-skills/)
|
||
* [熊猫数据科学学习路径学习路径](https://realpython.com/learning-paths/pandas-data-science/)
|
||
* [用 Dash 开发 Python 中的数据可视化接口](https://realpython.com/python-dash/)
|
||
|
||
如果你想通过建立一个实际的项目来提高你的数据分析技能,那么你可以[用 Python 和熊猫](https://realpython.com/pandas-project-gradebook/)创建一本成绩册。这个循序渐进的项目将引导您完成创建 Python 脚本的过程,该脚本加载成绩数据并计算一组学生的字母成绩。该项目包括从一个[逗号分隔值(CSV)文件](https://realpython.com/python-csv/)加载数据,探索数据,并使用 pandas 计算和绘制分数。
|
||
|
||
### 网页抓取
|
||
|
||
做数据科学最重要的信息来源之一是[网络](https://en.wikipedia.org/wiki/World_Wide_Web)。使用自动化工具([爬虫](https://en.wikipedia.org/wiki/Web_crawler))从网络上收集和解析原始数据的过程被称为[网络抓取](https://en.wikipedia.org/wiki/Web_scraping)。
|
||
|
||
Python 有一套很好的工具和库,可以从 Web 上抓取数据。以下是其中的一些:
|
||
|
||
| 图书馆 | 描述 |
|
||
| --- | --- |
|
||
| [美汤](https://www.crummy.com/software/BeautifulSoup/bs4/doc/) | Beautiful Soup 是一个 Python 库,用于将 HTML 和 XML 文件中的数据提取到解析树中。该库提供了导航、搜索、修改和从解析树中提取信息的方法和 Pythonic 习惯用法。 |
|
||
| [T2`requests`](https://requests.readthedocs.io/en/latest/) | `requests`是一个优雅而强大的[HTTP](https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol)Python 库。它提供了一个为人类设计的直观简洁的 API。 |
|
||
| [刺儿头](https://docs.scrapy.org/en/latest/) | Scrapy 是一个快速、高级的 web 爬行和 web 抓取框架。它允许你抓取网站并从网页中提取结构化数据。 |
|
||
| [T2`urllib.request`](https://realpython.com/urllib-request/) | `urllib.request`是一个标准的库模块,它定义了函数和类来帮助你打开 URL。它还允许您使用基本和[摘要认证](https://en.wikipedia.org/wiki/Digest_access_authentication)、重定向、cookies 等等。 |
|
||
|
||
要从网上搜集数据,请查看:
|
||
|
||
* [Python 网页抓取教程](https://realpython.com/tutorials/web-scraping/)
|
||
* [Python 网页抓取学习路径](https://realpython.com/learning-paths/python-web-scraping/)
|
||
|
||
一旦你了解了网页抓取的基础知识,你就可以投入到一个实际的项目中,用 Python 和 Beautiful Soup 构建你自己的[网页抓取器。完成这个实践项目后,你将能够把同样的过程和工具应用到其他静态网站上。这些技能允许你提取相关信息,并在你的应用程序中使用。来吧,试一试!](https://realpython.com/beautiful-soup-web-scraper-python/)
|
||
|
||
**注意:**在使用你的 Python 技能进行网页抓取之前,你应该检查你的目标网站的使用政策,以确保使用自动化工具抓取网页不违反其使用条款。
|
||
|
||
你可以马上建立的第二个项目是比特币价格通知服务。自 2021 年 1 月以略高于 4 万美元的价格达到顶峰以来,这种加密货币已经成为数百万人的心头之患。它的价格继续波动,但许多人会认为这是一个值得的投资。
|
||
|
||
如果你想从虚拟淘金热中获利,并且只需要知道何时出手,那么你需要掌握比特币的价格。这个项目的基础是创建 [IFTTT](https://ifttt.com/) (如果这个那么那个)小程序。您将学习如何使用 [`requests`](https://realpython.com/python-requests/) 发送 HTTP 请求,以及如何使用 [webhook](https://en.wikipedia.org/wiki/Webhook) 将您的应用程序连接到外部服务。
|
||
|
||
对于对加密感兴趣的初学者来说,这种比特币价格通知服务是一个完美的起步项目。然后,您可以扩展您将在本教程中构建的服务,以监控其他货币。
|
||
|
||
多亏了互联网——以及越来越多的物联网——你现在可以访问多年前无法获得的海量数据。
|
||
|
||
分析是任何与数据打交道的领域的重要组成部分。人们在谈论什么?你能在他们的行为中看到什么样的模式?Twitter 是一个获得这些问题答案的好地方。如果你对数据分析感兴趣,那么一个 [Twitter 情绪分析项目](https://realpython.com/twitter-sentiment-python-docker-elasticsearch-kibana/)是一个利用你的 Python 技能来回答关于你周围世界的问题的好方法。
|
||
|
||
在这个项目中,你将学习如何在一个 [Docker](https://realpython.com/python-versions-docker/) 环境中挖掘 Twitter 数据并分析用户情绪。您将学习如何向 Twitter 注册一个应用程序,为了访问他们的流 API,您需要这样做。您将看到如何使用 [Tweepy](http://www.tweepy.org/) 来过滤您想要提取的推文, [TextBlob](http://textblob.readthedocs.io/en/dev/) 来计算这些推文的情感, [Elasticsearch](http://www.elasticsearch.org/) 来分析它们的内容,以及 [Kibana](http://www.elasticsearch.org/overview/kibana/) 来可视化结果。
|
||
|
||
[*Remove ads*](/account/join/)
|
||
|
||
## 加速并自动化您的工作流程
|
||
|
||
计算机非常擅长执行重复和枯燥的任务。他们可以长时间做同样的事情而不出错。这是一个有价值的功能,可以帮助你让日常工作更加愉快和富有成效。
|
||
|
||
使用 Python,您可以自动化工作流程中的许多任务。您可以自动化和管理您的 [DevOps](https://en.wikipedia.org/wiki/DevOps) 操作,构建有效的 [Python 开发环境](https://realpython.com/effective-python-environment/),在您的开发周期中处理打包和[部署](https://en.wikipedia.org/wiki/Software_deployment)过程,测试您的软件,管理您的数据库系统,等等。
|
||
|
||
### DevOps
|
||
|
||
DevOps 包括软件开发和一般 [IT 运营](https://en.wikipedia.org/wiki/IT_operations)。DevOps 允许您处理应用程序和软件产品的整个生命周期。它包括开发、测试、打包和部署以及其他相关操作。
|
||
|
||
Python 是人们用于 DevOps 的主要技术之一。它的灵活性和可访问性使 Python 非常适合这项工作,使开发团队能够改进他们的工作流程,并变得更加高效和多产。
|
||
|
||
在 Python 生态系统中,你会发现一些流行的 DevOps 工具都是用 Python 写的。您还会发现,您可以使用 Python 来控制大多数工具。以下是其中的几个例子:
|
||
|
||
| 图书馆 | 描述 |
|
||
| --- | --- |
|
||
| [可回答的](https://www.ansible.com/) | Ansible 是一个用于软件[供应](https://en.wikipedia.org/wiki/Provisioning)、配置管理和[应用部署](https://en.wikipedia.org/wiki/Application_deployment)的工具。它启用代码为的[基础设施。](https://en.wikipedia.org/wiki/Infrastructure_as_code) |
|
||
| [坞站组成](https://docs.docker.com/compose/) | Docker Compose 是一个定义和运行多容器 Docker 应用程序的工具。你可以用一个 [YAML](https://yaml.org/) 文件来配置你的应用服务。然后,只需一个命令,您就可以从您的配置文件中创建并启动所有服务。它致力于生产、试运行、开发、测试等等。 |
|
||
|
||
要开始使用 DevOps,请查看:
|
||
|
||
* [Python DevOps 教程](https://realpython.com/tutorials/devops/)
|
||
* [DevOps 与 Python 的学习路径](https://realpython.com/learning-paths/python-devops/)
|
||
|
||
有了这些资源,您将掌握各种技能并学会使用任何使用 Python 的 DevOps 工程师都应该知道的工具和技术。
|
||
|
||
### 开发环境
|
||
|
||
为你和你的队友构建一个高效的环境是软件开发的基础部分。为此,Python 有一套很棒的工具,允许您在每个项目的虚拟环境中隔离您的包、库和 Python 版本。
|
||
|
||
以下是一些最受欢迎的工具:
|
||
|
||
| 工具 | 描述 |
|
||
| --- | --- |
|
||
| [T2`conda`](https://docs.conda.io/en/latest/) | `conda`是一个开源的包和环境管理系统。它允许您快速安装、运行和更新软件包及其依赖项。它帮助您找到并安装软件包。 |
|
||
| [T2`pip`](https://pip.pypa.io/en/stable/) | `pip`是 Python 的[包管理工具。它允许你安装来自](https://packaging.python.org/guides/tool-recommendations/) [PyPI](https://pypi.org/) 和其他索引的包。 |
|
||
| [Pipenv](https://pipenv.pypa.io/en/latest/) | Pipenv 是一个工具,旨在将所有打包领域的精华引入 Python 世界。它允许您为项目创建和管理虚拟环境。它提供了一种通过统一接口将`pip`和 [`virtualenv`](https://virtualenv.pypa.io/en/latest/) 一起使用的方式。 |
|
||
| [pix](https://pipxproject.github.io/pipx/) | pipx 是一个帮助您在隔离环境中安装和运行用 Python 编写的最终用户应用程序的工具。它为每个应用程序及其相关包创建了一个隔离的环境。它使应用程序在命令行或 shell 中可用。 |
|
||
| [pyenv](https://github.com/pyenv/pyenv) | pyenv 是一个用于安装和管理多个 Python 版本的工具。它可以让你在它们之间快速切换。它还允许您定义每个项目的 Python 版本。 |
|
||
|
||
要构建有效的开发环境,请查看:
|
||
|
||
* [Python 开发工具教程](https://realpython.com/tutorials/tools/)
|
||
* [完善您的 Python 开发设置学习路径](https://realpython.com/learning-paths/perfect-your-python-development-setup/)
|
||
* [一个有效的 Python 环境:让自己宾至如归](https://realpython.com/effective-python-environment/)
|
||
|
||
学习如何为您的开发冒险构建一个有效的 Python 环境将会把您的生产力推向一个新的水平,所以花时间来完善这项技能是很重要的。
|
||
|
||
### 软件打包和部署
|
||
|
||
软件开发周期的另一个关键部分是将你的产品打包、分发和部署到你的最终用户或客户手中。在 Python 中,一种快速且流行的部署应用程序和库的方法是将它们发布到 PyPI。
|
||
|
||
以下是一些可用于此目的的工具:
|
||
|
||
| 工具 | 描述 |
|
||
| --- | --- |
|
||
| [掠过](https://flit.readthedocs.io/en/latest/index.html) | Flit 是一个工具,它提供了一种将 Python 包和模块放到 PyPI 上的快捷方式。它帮助您设置关于您的包的信息,因此您可以用最少的努力将它发布到 PyPI。 |
|
||
| [诗歌](https://python-poetry.org/) | 诗歌是创建、构建、安装和打包 Python 项目的工具。它还允许您将项目发布到 PyPI。它跟踪并解析项目的依赖关系。它使用您当前的虚拟环境或创建新的虚拟环境,将您的包与系统范围的 Python 安装隔离开来。 |
|
||
| [PyInstaller](https://www.pyinstaller.org/) | PyInstaller 是一个工具,它将 Python 应用程序冻结成可以在 Windows、GNU/Linux、macOS 等环境下运行的独立可执行文件。 |
|
||
| 安装工具 | setuptools 是对 Python [distutils](https://packaging.python.org/key_projects/#distutils) 的一系列增强,它允许您构建和分发 Python [发行版](https://packaging.python.org/glossary/#term-Distribution-Package),尤其是那些依赖于其他包的发行版。 |
|
||
| [麻绳](https://twine.readthedocs.io/en/latest/) | Twine 是一个在 PyPI 上发布 Python 包的工具。它允许您上传项目的源代码和二进制发行版。 |
|
||
|
||
要开始,请查看:
|
||
|
||
* [如何将开源 Python 包发布到 PyPI](https://realpython.com/pypi-publish-python-package/)
|
||
* [使用 PyInstaller 轻松发布 Python 应用](https://realpython.com/pyinstaller-python/)
|
||
|
||
有了这些资源,您就可以开始打包 Python 应用程序、库和包并将其部署到最终用户、客户和大学。另外, [Python 打包权威](https://packaging.python.org/)提供了很多有用的信息和教程,帮助你用现代工具分发 Python 包。
|
||
|
||
[*Remove ads*](/account/join/)
|
||
|
||
### 数据库系统
|
||
|
||
作为开发人员,您在职业生涯中构建的大多数应用程序都会以某种方式与数据进行交互。这种交互通常通过一个[数据库管理系统(DBMS)](https://en.wikipedia.org/wiki/Database#Database_management_system) 进行,它允许您定义、创建、维护和控制对数据库的访问。
|
||
|
||
要使用 Python 连接和操作数据库,您有几种选择,包括标准库包和第三方包和库。在 Python 中,您还可以选择 [SQL](https://en.wikipedia.org/wiki/SQL) 和 [NoSQL](https://en.wikipedia.org/wiki/NoSQL) 数据库。
|
||
|
||
[对象关系映射工具(ORMs)](https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping) 是另一种重要的工具,你可能会用它来处理 Python 中的数据库。这些工具允许你使用[面向对象编程](https://realpython.com/python3-object-oriented-programming/)来创建和操作你的数据库。
|
||
|
||
以下是一些可用于连接和操作数据库的 Python 库:
|
||
|
||
| 图书馆 | 数据库ˌ资料库 | 描述 |
|
||
| --- | --- | --- |
|
||
| [蒙戈金](http://docs.mongoengine.org/) | [MongoDB](https://realpython.com/introduction-to-mongodb-and-python/) | MongoEngine 是一个文档-对象映射器,用于使用 Python 中的面向对象编程来处理 MongoDB。 |
|
||
| [MySQL 连接器/Python](https://dev.mysql.com/doc/connector-python/en/) | [MySQL](https://dev.mysql.com/) 的实现 | MySQL 连接器是一个独立的 Python 驱动程序,用于与 MySQL 服务器通信。 |
|
||
| [心理战](https://www.psycopg.org/) | [PostgreSQL](https://www.postgresql.org/about/) | Psycopg 是 Python 编程语言的 PostgreSQL 数据库适配器。 |
|
||
| PyMongo | [MongoDB](https://docs.mongodb.com/) | PyMongo 是一个 Python 发行版,包含用于处理 MongoDB 数据库的工具。它为这种类型的数据库系统提供了一个本地 Python 驱动程序。 |
|
||
| [SQL 语法](https://www.sqlalchemy.org/) | [SQL](https://realpython.com/python-sql-libraries/) | SQLAlchemy 是用于 SQL 数据库的 Python SQL 工具包和对象关系映射器。 |
|
||
| [T2`sqlite3`](https://docs.python.org/3/library/sqlite3.html#module-sqlite3) | [SQLite](https://www.sqlite.org/about.html) | `sqlite3`是一个轻量级的基于磁盘的数据库,不需要单独的服务器进程。它允许您使用 SQL 的非标准变体来访问数据库。它是免费的,来自 Python 标准库。 |
|
||
|
||
要开始使用数据库,请查看:
|
||
|
||
* [Python 数据库教程](https://realpython.com/tutorials/databases/)
|
||
* [数据收集&存储学习路径](https://realpython.com/learning-paths/data-collection-storage/)
|
||
|
||
创建和使用数据库是在 Python 应用程序中管理数据的一种强大方式。数据库为您的程序增加了重要的功能和多样性,并允许您为您的用户和客户提供令人兴奋的特性。管理数据库是开发人员教育中的一项基本技能。
|
||
|
||
### 软件测试
|
||
|
||
当您开始使用 Python 或编程时,您可能会从创建小程序和脚本开始,您可以[运行](https://realpython.com/run-python-scripts/)并手动测试以确保它们如您所愿地工作。然而,当你的程序变得越来越复杂时,手工测试它们几乎是不可能的。这就是自动化测试出现的时候。
|
||
|
||
不幸的是,开发人员会犯错误,没有代码是完美的。因此,您需要一个测试过程来帮助您识别 bug 并避免将它们投入生产。测试还可以[驱动你的代码设计](https://en.wikipedia.org/wiki/Test-driven_development)并帮助你检查非功能特性,比如性能、安全性、可用性、法规遵从性等等。因此,测试是软件开发的一个重要组成部分。
|
||
|
||
谈到测试,Python 有一些最好的工具。您可以使用这些工具来编写一致的测试并自动运行它们。以下是这些工具的一个小例子:
|
||
|
||
| 工具 | 描述 |
|
||
| --- | --- |
|
||
| [doctest](https://docs.python.org/3/library/doctest.html#module-doctest) | doctest 是一个标准模块,它在你的[文档字符串](https://realpython.com/documenting-python-code/)中搜索看起来像[交互式 Python 会话](https://realpython.com/interacting-with-python/)的文本片段,并执行它们来验证它们是否正常工作。 |
|
||
| [pytest](https://docs.pytest.org/en/6.2.x/contents.html) | pytest 是一个健壮而成熟的测试框架,允许您编写和自动化测试。它可以从小单元测试扩展到应用程序和库的复杂功能测试。 |
|
||
| [毒性](https://tox.readthedocs.io/en/latest/) | tox 是一个通用的 [virtualenv](https://pypi.org/project/virtualenv) 管理和测试命令行工具。它允许您检查您的包是否在不同的 Python 版本和解释器中正确安装。它可以在每个已配置的环境中运行您的测试。 |
|
||
| [T2`unittest`](https://docs.python.org/3/library/unittest.html#module-unittest) | `unittest`是 Python 标准库中可用的单元测试框架。它支持测试自动化、测试的设置和拆卸、测试集合的聚合等等。 |
|
||
|
||
要开始测试,请查看:
|
||
|
||
* [Python 测试教程](https://realpython.com/tutorials/testing/)
|
||
* [测试您的 Python 应用学习路径](https://realpython.com/learning-paths/test-your-python-apps/)
|
||
|
||
作为一名开发人员,您需要编写可靠的、能够正常工作的代码。这意味着每次修改代码或添加新特性时,都需要测试代码。在这些情况下,自动化测试是可行的。
|
||
|
||
## 开发嵌入式系统和机器人
|
||
|
||
为 Web 或桌面编写自己的应用程序很酷,但编写控制硬件系统和机器人如何工作的代码会更酷!随着科技的进步,像[物联网](https://en.wikipedia.org/wiki/Internet_of_things)、[家庭自动化](https://en.wikipedia.org/wiki/Home_automation)、[无人驾驶汽车](https://en.wikipedia.org/wiki/Self-driving_car)和[机器人](https://en.wikipedia.org/wiki/Robotics)这样的领域变得越来越受欢迎。
|
||
|
||
Python 逐渐进入了传感器、电机、电路、微控制器和机器人的世界。今天,您可以找到几个朝着这个方向发展的 Python 项目。以下是其中的一些:
|
||
|
||
| 图书馆 | 描述 |
|
||
| --- | --- |
|
||
| [BBC 微:位](https://microbit.org/) | BBC micro:bit 是一款口袋大小的电脑,向你介绍软件和硬件是如何协同工作的。它可以用 Python 编程。 |
|
||
| [CircuitPython](https://circuitpython.org/) | CircuitPython 是一种编程语言,旨在简化在低成本微控制器板上进行编码的实验和学习。 |
|
||
| [MicroPython](https://micropython.org/) | MicroPython 是 Python 的一个精简高效的实现。它包括 Python 标准库的一小部分。它针对微控制器和受限环境下的运行进行了优化。 |
|
||
| [PythonRobotics](https://atsushisakai.github.io/PythonRobotics/) | PythonRobotics 是各种机器人算法与可视化的汇编。它专注于自主导航。它的目标是让你理解它提供的每个机器人算法背后的基本思想。 |
|
||
| [树莓派](https://www.raspberrypi.org/about/) | Raspberry Pi 是一种基于 Linux 的通用计算机。它有一个完整的操作系统,带有 GUI 界面,能够同时运行许多不同的程序。Python 内置于树莓派之上。 |
|
||
| [俄罗斯语](http://wiki.ros.org/rospy) | rospy 是 [ROS(机器人操作系统)](https://www.ros.org/)的客户端库。它的 API 使 Python 程序员能够快速与 ROS 交互,以创建复杂可靠的机器人行为。 |
|
||
|
||
要开始使用嵌入式 Python,请查看:
|
||
|
||
* [MicroPython:Python 硬件编程入门](https://realpython.com/micropython/)
|
||
* 第五集:探索电路 Python
|
||
* [嵌入式 Python:在 BBC 上构建游戏 micro:bit](https://realpython.com/embedded-python/)
|
||
|
||
如果你想开始用 Python 创建一个硬件相关的项目,那么看看如何在 Raspberry Pi 上用 Python 构建[物理项目。在这个项目中,您将学习如何设置一个 Raspberry Pi,在它上面运行 Python 代码,从它的传感器读取输入,向它的电子组件发送信号,等等。](https://realpython.com/python-raspberry-pi/)
|
||
|
||
[*Remove ads*](/account/join/)
|
||
|
||
## 你可能不应该用 Python 做什么
|
||
|
||
Python 是一种高度通用的语言,你可以用它做很多事情。然而,你不能什么都做。有些事情 Python 根本不太适合。
|
||
|
||
作为一种解释型语言,Python 很难与低级设备交互,比如设备驱动程序。如果你想用 Python 写一个操作系统,你会遇到一个问题。对于低级应用程序,你最好坚持使用 [C](https://realpython.com/c-for-python-programmers/) 或 [C++](https://realpython.com/python-vs-cpp/) 。
|
||
|
||
然而,即便如此,这种情况也不会持续太久。作为 Python 灵活性的一个证明,有人正在从事将 Python 的可用性扩展到低级交互的项目。MicroPython 和 CircuitPython 只是为 Python 设计底层功能的一些项目。
|
||
|
||
## 用 Python 还能做什么?
|
||
|
||
本教程中的想法列表并不详尽。使用 Python 可以处理无数其他领域。如果你正在寻找 Python 非常适合的实用[项目](https://www.youtube.com/watch?v=7BiLUehbOb8),那么看看[为中级 Python 开发者准备的 13 个项目创意](https://realpython.com/intermediate-python-project-ideas/)来寻找灵感。
|
||
|
||
你也可以做自己的研究,寻找你感兴趣的项目。如果你不确定从哪里开始,那么[在 Twitter](https://twitter.com/realpython) 上关注*真正的 Python* 。你会在那里找到来自社区的又酷又有趣的 Python 项目。也许你会发现一些你迫不及待想要贡献的东西!
|
||
|
||
## 结论
|
||
|
||
对 Python 能做什么有一个基本的了解是你不断提高 Python 技能的关键。您可以在从应用程序开发到机器人技术的各种不同领域使用 Python!
|
||
|
||
**在本文中,您看到了 Python 可以用于:**
|
||
|
||
* 通用**软件开发**
|
||
* **数据科学**和**数学**
|
||
* **工作流程**加速和自动化
|
||
* **嵌入式系统**和**机器人**
|
||
|
||
您还看到了几个实际项目的想法,您可以构建这些项目来将您的 Python 技能提升到一个新的水平。
|
||
|
||
## 接下来的步骤
|
||
|
||
所以你有它!一个广泛的主题和实践项目列表,帮助您从 Python 初学者成为精通 Python 的人。
|
||
|
||
无论您选择从哪里开始,您都将为提高您的编程技能开辟无数的途径。挑个东西开始吧!你有一个不在这里的实际项目的想法吗?在下面留下评论吧!你可以为你的程序员同事推荐一个完美的项目。
|
||
|
||
如果你被困住了,需要一个正确方向的推动,那么看看 [11 个学习 Python 编程的初学者技巧](https://realpython.com/python-beginner-tips/)来帮助你回到正轨。
|
||
|
||
另一个摆脱困境的好方法是说出来。编码不一定是一项孤独的活动。如果你需要一种方法来提问并从有知识的 Python 开发者那里快速得到答案,那么考虑加入[*真正的 Python* 成员的 Slack](https://realpython.com/community-slack-guide/) 社区。任何人都受欢迎,不管你有多少经验。你总是能帮助别人,也能得到别人的帮助。****** |