机器学习和人工智能的 Python 基础






4.43/5 (5投票s)
本文为有经验的程序员提供了一些快速掌握 Python 基础知识的技巧。
引言
当开发人员开始使用人工智能 (AI) 和机器学习 (ML) 软件时,他们目前最有可能遇到的编程语言是 Python 和 C/C++。大多数情况下,C/C++ 用于专业应用,例如嵌入式物联网 (IoT) 以及高度优化的、特定硬件的神经网络库。
Python 是大多数 AI 和 ML 应用开发中最常用的语言——甚至用于原型设计和优化那些物联网和硬件加速应用的模型。
对于从 C#、Java 甚至 JavaScript 等其他语言转向 Python 的开发人员,本文将介绍 Python 独特语法中的关键元素,例如循环,以及它们与您已知的概念有何不同。
本系列的后续文章将探讨如何使用众多可用于 AI 和 ML 开发人员的 Python 库,例如 OpenCV、自然语言工具包 (NLTK)、Keras 和 TensorFlow。
本文将向您介绍重要的 Python 基础知识,包括:
- 获取 Python 的途径
- Python 2 和 Python 3 的区别
- 类似语法和变量等熟悉的概念在 Python 中是如何工作的
在哪里获取 Python
开发人员通常会问的第一个问题是:Python 在哪里可以获取?
答案是:这取决于您的系统和编程环境。Python 在 Mac OS 和某些 Linux 发行版中默认安装。对于没有安装 Python 的系统,您可以从以下途径获取安装程序:
- Python 下载页面
- Microsoft 商店
- 包管理系统,包括 apt-get、rpm、homebrew 等
另一个选择是 Jupyter Notebooks 和 JupyterLabs 交互式开发工具。
第三个选择——也是我们推荐的,并将用于这些 Python AI/ML 文章的——是 Anaconda,一个专为统计、数据科学和 AI/ML 项目设计的综合软件平台。
Anaconda 包含 JupyterLab(前面提到的基于 Web 的 IDE),以及您在学习 AI 时可能需要的许多其他工具、库和示例数据源。一旦我们开始接触机器学习库、数据集和可视化,您就会发现它们非常有用。
哪个版本:Python 2 还是 Python 3?
对于刚接触 Python 的人来说,是否使用 Python 2 还是 Python 3 是一个常见的困惑源。
Python 2 是一个较旧的版本,目前仍在广泛使用,并且在某些当前操作系统中仍作为默认的 Python 版本安装。Python 2 的官方支持将于 2020 年初结束。
如果您刚开始学习 Python,应该使用 Python 3。
Python 3 的持续支持和开发仍在进行中。这也适用于您可能想要使用的库:有些可能仍然同时支持两个版本,但许多已经完全迁移到 Python 3 或很可能会这样做。
如何知道您的系统上安装的是哪个版本?
在 Linux 系统和 Mac OS 上,`python` 命令默认指向 Python 2,而您使用 `python3` 命令来指向 Python 3。
要确定您的系统上安装的是哪个版本,请打开终端窗口或命令提示符并运行以下命令:
python --version
如果 Python 已安装,它将返回 `python` 命令使用的 Python 版本。
Python 2.7.16
`python3 --version` 命令对 Python 3 执行相同的操作。
Python 3.7.4
识别代码示例中的 Python 版本
在线教程并不总是明确提及它们使用的是 Python 2 还是 Python 3。幸运的是,有几种启发式方法可以帮助您确定教程使用了哪个版本。
一种是标准输出中文本打印方式的差异。在 Python 3 中,只有一种有效的方法可以做到这一点:
# Python 2 and Python 3
# This is a comment, by the way
print("Hello, world!")
该语法在 Python 2 中也有效,但 Python 2 的示例更常使用这种替代语法:
# This only works in Python 2
print "Hello, world!"
而在 Python 3 中无效。因此,一个没有括号的 `print` 语句清楚地表明代码是用 Python 2 编写的。
另一个常见的迹象是如何从 stdin 获取输入。
在 Python 3 中,使用 `input` 函数读取原始输入。
在 Python 2 中,`input` 函数也存在,但它会将输入评估为 Python 代码并返回结果。
对于原始输入,Python 2 使用 `raw_input`。此函数在 Python 3 中不存在。
如果代码片段不与标准输出/输入交互,您可以查看标准库中使用的功能。Python 3 中已更改功能的列表在这里会过于冗长,但您可以查阅 The Conservative Python 3 Porting Guide 以获取更完整的列表。
总而言之,许多用 Python 2 编写的代码在 Python 3 中也能正常工作。如果您不确定一段代码,可以尝试在 Python 3 中运行它。如果因为它与 Python 版本不兼容而无法工作,在网上搜索错误消息会很快找到答案。
Python 语言基础:类型和变量
Python 是动态类型语言。类型与变量名无关,只与变量值相关。这与 C# 和 Java 等静态类型语言不同,在这些语言中,如果您定义了 `int i = 0;`,就不能稍后写 `i = "test";`。在 Python 中,您可以这样做。
Python 是强类型语言(与 JavaScript 等弱类型语言相反)。在强类型语言中,不同类型值之间的操作有更严格的约束。在 JavaScript 中,您可以执行 `"abc" + 1` 并得到字符串 `"abc1"`,但如果您在 Python 中尝试相同操作,您会收到一个错误,表明您不能将字符串与整数连接。
在 Python 中赋值变量可以这样做:
name = "value"
请注意,行末没有分号。
定义和调用函数如下所示:
def say_hello(who):
print("Hello ", who)
name = input("Your name: ")
say_hello(name)
在 Jupyter Notebook 中是这样的:
与 C# 等语言不同,Python 不使用括号来指定哪些代码行属于某个函数。相反,Python 使用缩进。具有相同缩进级别的连续行构成一个代码块。建议的代码缩进方式是每个缩进级别使用四个空格。但是,您也可以使用制表符或其他数量的空格。缩进只需在块内保持一致即可。
您可以使用 `return` 关键字从函数返回一个值:
def sum(a, b):
return a + b
如果函数没有 `return` 语句,它将返回 `None`(Python 的 `null`)。
Python 支持高阶函数(返回函数或以函数为参数的函数)。例如,`operation` 函数返回两个函数中的一个:
def sum(a, b):
return a + b
def difference(a, b):
return a - b
def operation(calculate_sum):
if calculate_sum:
return sum
else:
return difference
然后可以这样使用:
operation(True)(5, 4)
结论
我们讨论了 Python 2 和 Python 3 之间的区别,并看到了如何识别代码片段中使用的版本。然后我们看了一些 Python 的基础知识:类型、变量和函数。
在 下一篇文章中,我们将讨论列表、元组和循环!
历史
- 2020年6月12日:初始版本