65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.43/5 (5投票s)

2020年6月12日

CPOL

6分钟阅读

viewsIcon

16869

downloadIcon

266

本文为有经验的程序员提供了一些快速掌握 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 的系统,您可以从以下途径获取安装程序:

另一个选择是 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日:初始版本
© . All rights reserved.