机器学习入门:Python语言实现
上QQ阅读APP看书,第一时间看更新

1.2 Python编程基础

1.2.1 Python交互式解释器

打开shell并键入以下命令,从命令行启动Python交互式解释器:

012-03

你将看到以下提示(或类似内容):

012-04

现在,在提示符处键入表达式2+7

013-01

Python显示如下结果:

013-02

按<ctrl+d>键退出Python shell。

你可以在命令行前添加单词“python”来启动任何Python脚本。如果你有一个包含Python命令的Python脚本myscript.py,请按以下方式启动该脚本:

013-03

举一个简单的例子,假设Python脚本myscript.py包含以下Python代码:

013-04

启动上面的Python脚本时,你将看到以下输出:

013-05

1.2.2 Python基础语法

1. Python标识符

Python标识符是变量、函数、类、模块或其他Python对象的名称,有效的标识符应符合以下规则:

  • 以字母A到Z、a到z或者下划线(_)开头。
  • 零个或多个字母、下划线和数字(0到9)。

注意:Python标识符不能包含@、$和%之类的字符。

Python语言区分大小写,因此Python中的Abc和abc不同。

此外,Python具有以下命名惯例:

  • 类名以大写字母开头,所有其他标识符以小写字母开头。
  • 初始下划线用于私有标识符。
  • 两个初始下划线用于强私有标识符。

Python标识符中,若有两个初始下划线和两个末尾下划线字符,则表示语言定义的特殊名称。

2. 行、缩进和多行

与其他编程语言(如Java或Objective-C)不同,Python在代码块中使用缩进而不是大括号。缩进在代码块中必须保持一致,如下所示:

014-01

Python中的多行语句换行结尾时可以使用换行符或反斜杠(“\”)字符,如下所示:

014-02

显然这里可以将x1x2x3放在同一行上,并无必要将三行分开。但如果需要添加一组超过一行的变量,则可以使用换行功能。

你可以使用分号(“;”)分隔每条语句,从而在一行中定义多个语句,如下所示:

014-03

上述代码片段的输出如下所示:

014-04

注意:在Python中不鼓励使用分号和连续字符。

3. Python中的引用和注释

Python允许对字符串文字添加单引号(')、双引号(")和三引号('''或"""),只要它们在字符串的开头和结尾可以相互匹配上。对跨越多行的字符串可以使用三引号。以下示例都是合法的Python字符串:

014-05

以字母“r”(代表“raw”)开头的字符串文字将所有内容视为文字字符,并“转义”了元字符的含义,如下所示:

014-06

以上代码块的输出如下所示:

014-07

你可以将单引号嵌入一对双引号中(反之亦然),用来显示单引号或双引号。另一种方法是,在单引号或双引号前加上反斜杠(“\”)字符。以下代码块说明了这点:

015-01

以上代码块的输出如下所示:

015-02

不在字符串文字中的井号(#)是注释开始的标志。#后面直到该行结束的所有字符都是注释的一部分(会被Python解释器忽略)。考虑下列代码块:

015-03

结果如下所示:

015-04

注释可以和代码语句在同一行:

015-05

也可注释多行,如下所示:

015-06

Python中的空白行是仅包含空格或者注释(或两者兼有)的行。

1.2.3 以模块形式保存代码

前面介绍了如何从命令行启动Python解释器,然后输入Python命令。但在Python解释器中输入的所有内容仅对当前会话有效,如果退出解释器,再次启动时,之前的定义将不再有效。幸运的是,Python允许你将代码存储在文本文件中。

Python中的模块是一个包含Python语句的文本文件。前面介绍了Python解释器如何检验对当前会话有效的代码片段。如果要保留代码片段和定义,请将其存于文本文件中,以便在Python解释器之外执行该代码。

首次导入模块时,Python中最外面的语句从上到下执行,然后对变量和函数进行设置。

Python模块可以直接从命令行运行,如下所示:

015-07

举个例子,将下面两个语句放在一个名为First.py的文本文件中:

015-08

输入以下命令:

016-01

上述命令的输出为3,和前面从Python解释器执行的结果相同。

当直接运行Python模块时,特殊变量__name__会被设置为__main__。你会经常在Python模块中看到类似下面的代码:

016-02

上述代码片段用来让Python判断,是从命令行启动Python模块,还是将其导入另一个Python模块。

1.2.4 Python中的一些标准模块

Python标准库提供了许多可以简化Python脚本的模块。可以访问如下网址查看标准库模块的列表:

http://www.python.org/doc/

一些最重要的Python模块包括cgimathospicklerandomresocketsystimeurllib

本书中的代码示例使用模块mathosrandomresocketsystimeurllib。你需要导入这些模块才能在自己的代码中使用它们。例如,下面这个代码块说明了如何导入4个标准Python模块:

016-03

本书中的代码示例导入了一个或多个上述模块,以及其他的Python模块。

1.2.5 help()dir()函数

在网上搜索Python相关的主题会得到很多有用信息的链接,或者也可以查看Python官方文档:docs.python.org

此外,Python提供了可以从Python解释器访问的help()dir()函数。help()函数返回解释文档,dir()函数返回定义的符号。

例如,如果输入help(sys),则将看到sys模块的文档,而dir(sys)显示已定义符号的列表。

在Python解释器中输入以下命令,可以显示Python中与字符串相关的方法:

016-04

上述命令可得到如下输出:

017-01

请注意,虽然dir()没有列出内置函数和变量的名称,但是你可以从标准模块__builtin__获取这些信息,该模块会自动以__builtins__的名称导入:

017-02

下面这个命令说明如何获取某个函数的更多信息:

017-03

该命令的输出如下:

017-04

在需要有关特定函数或模块的其他信息时,请上网查阅文档,并尝试使用help()dir()

1.2.6 编译时和运行时的代码检查

Python支持一些编译时的代码检查,但大部分检查(如类型、名称等)都要推迟到代码执行的时候。因此,如果Python代码引用了一个不存在的用户自定义函数,该代码仍然会成功编译。事实上,当代码执行路径引用了不存在的函数时,该代码才会因异常而失败。

简单举例,请考虑下面的Python函数myFunc,该函数引用了一个不存在的函数DoesNotExist

018-01

仅当myFunc函数传递的值为3时,上述代码才会失败,之后引起Python报错。

在第2章中,你将学习如何定义和调用用户自定义的函数,并了解Python中局部变量和全局变量之间的区别。

现在你已经了解了一些基本概念(例如,如何使用Python解释器)以及如何启动自定义Python模块,1.3节将讨论Python中的基本数据类型。