【1.0】Python入门
前言
Python
很容易使用,但它是一种真正的编程语言,提供了很多数据结构,也支持大型程序,远超 shell
脚本或批处理文件的功能。Python
还提供比 C
语言更多的错误检查,而且作为一种 “超高级语言”,它有高级的内置数据类型,比如灵活的数组和字典。
Python
是一种解释型语言,在程序开发阶段可以为你节省大量时间,因为不需要编译和链接。
注:本内容使用的
Python
版本为 3.8
Python解释器
调用解释器
如果你在安装Python
的时候选择了自动添加Python
环境变量,则可以在CMD
或者直接在桌面空白处右键选择在终端处打开(仅Win11
支持),在命令终端中直接输入python
即可调用Python
解释器。
如果你并没有配置环境变量,需要先配置对应的环境变量。
关于环境变量的说明,可以查看环境变量那些事
在调用解释器后,每次输入命令的样式变为如下:
1 | >> 这里是你的命令 |
在Windows
系统下,使用Ctrl + z 来退出调用解释器或者输入命令quit()
来退出调用。
解释器运行的时候有点像 Unix 命令行:在一个标准输入 tty1 设备上调用,它能交互式地读取和执行命令;调用时提供文件名参数,或者有个文件重定向到标准输入的话,它就会读取和执行文件中的 脚本。
当然,和C
语言编译器一样,也存在另一种启动解释器的方式是 python -c command [arg] ...
,其中 command
要换成想执行的指令,就像命令行的 -c
选项。由于 Python 代码中经常会包含对终端来说比较特殊的字符,通常情况下都建议用英文单引号把 command
括起来。
关于所有的命令行选项,请参考 命令行与环境。
交互模式
在命令终端输入并执行指令时,我们说解释器是运行在交互模式(interactive mode)。在这种模式中,它会显示 主提示符(primary prompt),提示输入下一条指令,通常用三个大于号(>>>
)表示;连续输入行的时候,它会显示 次要提示符,默认是三个点(...
)。进入解释器时,它会先显示欢迎信息、版本信息、版权声明,然后就会出现提示符:
多行指令需要在连续的多行中输入。比如,以 if
为例:
有关交互模式的更多内容,请见 交互模式。
源文件的字符编码
默认情况下,Python 源码文件以 UTF-8 编码方式处理。在这种编码方式中,世界上大多数语言的字符都可以同时用于字符串字面值、变量或函数名称以及注释中——尽管标准库中只用常规的 ASCII 字符作为变量或函数名,而且任何可移植的代码都应该遵守此约定。要正确显示这些字符,你的编辑器必须能识别 UTF-8 编码,而且必须使用能支持打开的文件中所有字符的字体。
如果不使用默认编码,要声明文件所使用的编码,文件的第一行要写成特殊的注释。语法如下所示:
1 | # -*- coding: encoding -*- |
其中 encoding
可以是 Python 支持的任意一种 codecs
。
比如,要声明使用 Windows-1252 编码,你的源码文件要写成:
1 | # -*- coding: cp1252 -*- |
Python的非正式介绍
Python中的注释以井号 #
开头,并且一直延伸到该文本行结束为止。注释可以出现在一行的开头或者是空白和代码的后边,但是不能出现在字符串中间。字符串中的井号就是井号。因为注释是用来阐明代码的,不会被 Python 解释。
作为计算器使用
现在来尝试一些简单的 Python 命令。启动解释器,等待界面中的提示符,>>>
数字
解释器就像一个简单的计算器一样:你可以在里面输入一个表达式然后它会写出答案。 表达式的语法很直接:运算符 +
、-
、*
、/
的用法和其他大部分语言一样(比如 Pascal 或者 C 语言);括号 (()
) 用来分组。比如:
**整数(比如 2
、4
、20
)的类型是 int
,有小数部分的(比如 5.0
、1.6
)的类型是 float
**。 在后面将会接触到更多的数字类型,此处不一一赘述。
除法运算 (/
) 永远返回浮点数类型。如果要做 floor division2 得到一个整数结果(忽略小数部分)你可以使用 //
运算符;**如果要计算余数,可以使用 %
**。
在Python中,可以使用 **
运算符来计算乘方,例如2**2
表示 $2^2$ 。
需要注意的是,
**
运算符具有较高的优先级,在例如1-2**2
的表达式,其运算式为 $\large 1-2^2$ 。如果希望其运算式为 $\large (1-2)^2$ 则需要将命令使用括号来表示,即(1-2)**2
等号 (=
) 用于给一个变量赋值。然后在下一个交互提示符之前不会有结果显示出来:
如果一个变量未定义(未赋值),试图使用它时会向你提示错误。
Python中提供浮点数的完整支持;包含多种混合类型运算数的运算会把整数转换为浮点数:
**在交互模式下,上一次打印出来的表达式被赋值给变量 _
**。这意味着当你把Python用作桌面计算器时,继续计算会相对简单,比如:
这个变量应该被使用者当作是只读类型。不要向它显式地赋值。
除了 int
和 float
,Python也支持其他类型的数字,例如 Decimal
3 或者 Fraction
4。Python 也内置对 复数 的支持,使用后缀 j
或者 J
就可以表示虚数部分(例如 3+5j
)。
字符串
除了数字,Python 也可以操作字符串。字符串有多种形式,可以使用单引号('...'
),双引号("..."
)都可以获得同样的结果。反斜杠 \
可以用来转义:
print()
函数会生成可读性更强的输出,即略去两边的引号,并且打印出经过转义的特殊字符:
使用print()
函数,如果你不希望前置了 \
的字符转义成特殊字符,可以使用 原始字符串 方式,在引号前添加 r
即可:
**字符串字面值可以包含多行。 一种实现方式是使用三重引号:"""..."""
或 '''...'''
**。 在使用三重引号表示多行字符串时,Python会自动在每行末尾添加行结束符 \n
,可以通过在换行的地方添加一个 \
来避免此情况。
字符串可以用 +
进行连接(粘到一起),也可以用 重复次数 *
进行重复。
相邻的两个或多个字符串字面值(引号引起来的字符)将会自动连接到一起:
注:只能对两个字面值这样操作,变量或表达式不行,如果你想连接变量,或者连接变量和字面值,可以用
+
号。
字符串是可以被 索引 (下标访问)的,第一个字符索引是 0。
索引也可以用负数,这种会从右边开始数:
注意 -0 和 0 是一样的,所以负数索引从 -1 开始
除了索引,字符串还支持切片。索引可以得到单个字符,而切片可以获取子字符串:
Python 中的字符串不能被修改,它们是 immutable5 的。因此,向字符串的某个索引位置赋值会产生一个错误。
注:可以重新赋值,但是不可以修改其中单个字符的内容
列表
Python 中可以通过组合一些值得到多种复合数据类型。其中最常用的列表,可以通过方括号括起、逗号分隔的一组值(元素)得到。一个列表可以包含不同类型的元素,但通常使用时各个元素类型相同。
和字符串一样,列表也支持索引和切片:
所有的切片操作都返回一个包含所请求元素的新列表。 这意味着以下切片操作会返回列表的一个浅拷贝:
浅拷贝只复制了对象的表面结构,子对象仍然是原对象和拷贝对象共享的;而深拷贝则复制了对象的所有结构,每个对象和对应的拷贝对象是彼此独立的。因此即使修改原对象中的子对象,深拷贝出的对象也不会受到影响。
列表同样支持拼接操作:
与 immutable 的字符串不同, 列表是一个 mutable 类型,就是说,它自己的内容可以改变,即可以改变对应位置的元素内容:
也可以嵌套列表 (创建包含其他列表的列表)或者也可以在列表末尾通过 append()
方法 来添加新元素。
走向编程的第一步
当然,我们可以将 Python 用于更复杂的任务,而不是仅仅两个和两个一起添加。 例如,我们可以编写斐波那契数列6的初始子序列,如下所示:
End
关于后续的代码编辑器的使用,你可以选择使用 PyCharm 来编写python
代码,你也可以使用 Visual Studio 来编写,当然你也可以使用 Visual Studio Code 链接解释器来使用。
需要注意的是使用上述编辑器,需要下载对应的社区版本是免费的,可以满足绝大部分的需要。