前言

Python 很容易使用,但它是一种真正的编程语言,提供了很多数据结构,也支持大型程序,远超 shell 脚本或批处理文件的功能。Python 还提供比 C 语言更多的错误检查,而且作为一种 “超高级语言”,它有高级的内置数据类型,比如灵活的数组和字典。

Python 是一种解释型语言,在程序开发阶段可以为你节省大量时间,因为不需要编译和链接。

注:本内容使用的Python版本为 3.8

Python解释器

调用解释器

如果你在安装Python的时候选择了自动添加Python环境变量,则可以在CMD或者直接在桌面空白处右键选择在终端处打开(仅Win11支持),在命令终端中直接输入python即可调用Python解释器。

image-20230411203001381

如果你并没有配置环境变量,需要先配置对应的环境变量。

关于环境变量的说明,可以查看环境变量那些事

在调用解释器后,每次输入命令的样式变为如下:

1
>>> 这里是你的命令

Windows系统下,使用Ctrl + z 来退出调用解释器或者输入命令quit()来退出调用

解释器运行的时候有点像 Unix 命令行:在一个标准输入 tty1 设备上调用,它能交互式地读取和执行命令;调用时提供文件名参数,或者有个文件重定向到标准输入的话,它就会读取和执行文件中的 脚本

当然,和C语言编译器一样,也存在另一种启动解释器的方式是 python -c command [arg] ...,其中 command 要换成想执行的指令,就像命令行的 -c 选项。由于 Python 代码中经常会包含对终端来说比较特殊的字符,通常情况下都建议用英文单引号把 command 括起来。

关于所有的命令行选项,请参考 命令行与环境

交互模式

在命令终端输入并执行指令时,我们说解释器是运行在交互模式(interactive mode)。在这种模式中,它会显示 主提示符(primary prompt)提示输入下一条指令,通常用三个大于号(>>>)表示;连续输入行的时候,它会显示 次要提示符默认是三个点(...。进入解释器时,它会先显示欢迎信息、版本信息、版权声明,然后就会出现提示符:

image-20230411205148783

多行指令需要在连续的多行中输入。比如,以 if 为例:

image-20230411205631445

有关交互模式的更多内容,请见 交互模式

源文件的字符编码

默认情况下,Python 源码文件以 UTF-8 编码方式处理。在这种编码方式中,世界上大多数语言的字符都可以同时用于字符串字面值、变量或函数名称以及注释中——尽管标准库中只用常规的 ASCII 字符作为变量或函数名,而且任何可移植的代码都应该遵守此约定。要正确显示这些字符,你的编辑器必须能识别 UTF-8 编码,而且必须使用能支持打开的文件中所有字符的字体。

如果不使用默认编码,要声明文件所使用的编码,文件的第一行要写成特殊的注释。语法如下所示:

1
# -*- coding: encoding -*-

其中 encoding 可以是 Python 支持的任意一种 codecs

比如,要声明使用 Windows-1252 编码,你的源码文件要写成:

1
# -*- coding: cp1252 -*-

Python的非正式介绍

Python中的注释以井号 # 开头,并且一直延伸到该文本行结束为止。注释可以出现在一行的开头或者是空白和代码的后边,但是不能出现在字符串中间。字符串中的井号就是井号。因为注释是用来阐明代码的,不会被 Python 解释

作为计算器使用

现在来尝试一些简单的 Python 命令。启动解释器,等待界面中的提示符,>>>

数字

解释器就像一个简单的计算器一样:你可以在里面输入一个表达式然后它会写出答案。 表达式的语法很直接:运算符 +-*/ 的用法和其他大部分语言一样(比如 Pascal 或者 C 语言);括号 (()) 用来分组。比如:

image-20230411211912119

**整数(比如 2420 )的类型是 int,有小数部分的(比如 5.01.6 )的类型是 float**。 在后面将会接触到更多的数字类型,此处不一一赘述。

除法运算 (/) 永远返回浮点数类型。如果要做 floor division2 得到一个整数结果(忽略小数部分)你可以使用 // 运算符;**如果要计算余数,可以使用 %**。

image-20230411212312342

在Python中,可以使用 ** 运算符来计算乘方,例如2**2表示 $2^2$ 。

image-20230411212428322

需要注意的是,**运算符具有较高的优先级,在例如1-2**2的表达式,其运算式为 $\large 1-2^2$ 。如果希望其运算式为 $\large (1-2)^2$ 则需要将命令使用括号来表示,即 (1-2)**2

等号 (=) 用于给一个变量赋值。然后在下一个交互提示符之前不会有结果显示出来:

image-20230411212721442

如果一个变量未定义(未赋值),试图使用它时会向你提示错误。

Python中提供浮点数的完整支持;包含多种混合类型运算数的运算会把整数转换为浮点数

image-20230411214905907

**在交互模式下,上一次打印出来的表达式被赋值给变量 _**。这意味着当你把Python用作桌面计算器时,继续计算会相对简单,比如:

image-20230411215122982

这个变量应该被使用者当作是只读类型。不要向它显式地赋值

除了 intfloat,Python也支持其他类型的数字,例如 Decimal3 或者 Fraction4。Python 也内置对 复数 的支持,使用后缀 j 或者 J 就可以表示虚数部分(例如 3+5j )。

字符串

除了数字,Python 也可以操作字符串。字符串有多种形式,可以使用单引号('...'),双引号("...")都可以获得同样的结果。反斜杠 \ 可以用来转义

image-20230411220003073

print() 函数会生成可读性更强的输出,即略去两边的引号,并且打印出经过转义的特殊字符

image-20230411221654277

使用print()函数,如果你不希望前置了 \ 的字符转义成特殊字符,可以使用 原始字符串 方式,在引号前添加 r 即可

image-20230411222001484

**字符串字面值可以包含多行。 一种实现方式是使用三重引号:"""..."""'''...'''**。 在使用三重引号表示多行字符串时,Python会自动在每行末尾添加行结束符 \n,可以通过在换行的地方添加一个 \ 来避免此情况。

image-20230411222448929

字符串可以用 + 进行连接(粘到一起),也可以用 重复次数 * 进行重复

image-20230411224650356

相邻的两个或多个字符串字面值(引号引起来的字符)将会自动连接到一起

image-20230411224753630

注:只能对两个字面值这样操作,变量或表达式不行如果你想连接变量,或者连接变量和字面值,可以用 +

字符串是可以被 索引 (下标访问)的,第一个字符索引是 0

image-20230411224956585

索引也可以用负数,这种会从右边开始数:

image-20230411225027222

注意 -0 和 0 是一样的,所以负数索引从 -1 开始

除了索引,字符串还支持切片。索引可以得到单个字符,而切片可以获取子字符串

image-20230411225157262

Python 中的字符串不能被修改,它们是 immutable5 的。因此,向字符串的某个索引位置赋值会产生一个错误

注:可以重新赋值,但是不可以修改其中单个字符的内容

列表

Python 中可以通过组合一些值得到多种复合数据类型。其中最常用的列表可以通过方括号括起、逗号分隔的一组值(元素)得到。一个列表可以包含不同类型的元素,但通常使用时各个元素类型相同

image-20230411225750747

和字符串一样,列表也支持索引和切片

image-20230411225840351

所有的切片操作都返回一个包含所请求元素的新列表。 这意味着以下切片操作会返回列表的一个浅拷贝

image-20230411231203672

浅拷贝只复制了对象的表面结构,子对象仍然是原对象和拷贝对象共享的;而深拷贝则复制了对象的所有结构,每个对象和对应的拷贝对象是彼此独立的。因此即使修改原对象中的子对象,深拷贝出的对象也不会受到影响。

列表同样支持拼接操作:

image-20230411231349657

immutable 的字符串不同, 列表是一个 mutable 类型,就是说,它自己的内容可以改变,即可以改变对应位置的元素内容:

image-20230411231546087

也可以嵌套列表 (创建包含其他列表的列表)或者也可以在列表末尾通过 append() 方法 来添加新元素。

走向编程的第一步

当然,我们可以将 Python 用于更复杂的任务,而不是仅仅两个和两个一起添加。 例如,我们可以编写斐波那契数列6的初始子序列,如下所示:

image-20230411232258965

End

关于后续的代码编辑器的使用,你可以选择使用 PyCharm 来编写python代码,你也可以使用 Visual Studio 来编写,当然你也可以使用 Visual Studio Code 链接解释器来使用。

需要注意的是使用上述编辑器,需要下载对应的社区版本是免费的,可以满足绝大部分的需要。



  1. 1.TTY是由虚拟控制台,串口以及伪终端设备组成的终端设备。
  2. 2.向下取整除法,向下舍入到最接近的整数的数学除法 。
  3. 3.一种可以精确表示小数的数据类型,而不会受到浮点数精度问题的影响。例如,计算 $0.1+0.2$ 时,使用 float 可能会得到 $0.30000000000000004$ 这样不准确的结果,而使用 Decimal 则可以得到精确的 $0.3$。
  4. 4.分数
  5. 5.不可变对象:具有固定值的对象。不可变对象包括数字、字符串和元组。这样的对象不能被改变。
  6. 6.斐波那契数列即为从0和1开始的一个数列,每一项是前两项的和。