Skip to content

Python 速览

Python 用作计算器

数字

解释器被作为一台简单的计算器:你可以键入一个表达式让它给出结果值。 表达式语法很直观:运算符 +, -, */ 可被用来执行算术运算;圆括号 (()) 可被用来进行分组。 例如:

image-20260116142559021

整数(如,2420 )的类型是 int,带小数(如,5.01.6 )的类型是 float

除法运算 (/) 总是返回浮点数。 如果要做 floor division 得到一个整数结果你可以使用 // 运算符;要计算余数你可以使用 %:

image-20260116143841851

等号(=)用于给变量赋值。赋值后,下一个交互提示符的位置不显示任何结果:

image-20260116144113544

如果变量未定义(即,未赋值),使用该变量会提示错误:

image-20260116144216294

Python 全面支持浮点数;混合类型运算数的运算会把整数转换为浮点数:

image-20260116144430008

交互模式下,上次输出的表达式会赋给变量 _。把 Python 当作计算器时,用该变量实现下一步计算更简单,例如:

image-20260116144632159

最好把该变量当作只读类型。不要为它显式赋值,否则会创建一个同名独立局部变量,该变量会用它的魔法行为屏蔽内置变量。

除了 intfloat,Python 还支持其他数字类型,例如 DecimalFraction。Python 还内置支持 复数,后缀 jJ 用于表示虚数(例如 3+5j )。

文本

除了数字 Python 还可以操作文本(由 str 类型表示,称为“字符串”)。 这包括字符 "!", 单词 "rabbit", 名称 "Paris", 句子 "Got your back." 等等. "Yay! :)"。 它们可以用成对的单引号 ('...') 或双引号 ("...") 来标示,结果完全相同。

image-20260116145035690

要标示引号本身,我们需要对它进行“转义”,即在前面加一个 \。 或者,我们也可以使用不同类型的引号:

image-20260116145409641

在 Python shell 中,字符串定义和输出字符串看起来可能不同。 print() 函数会略去标示用的引号,并打印经过转义的特殊字符,产生更为易读的输出:

image-20260116145634567

如果不希望前置 \ 的字符转义成特殊字符,可以使用 原始字符串,在引号前添加 r 即可:

image-20260116145920047

原始字符串还有一个微妙的限制:一个原始字符串不能以奇数个 \ 字符结束;请参阅 此 FAQ 条目 了解更多信息及绕过的办法。

字符串字面值可以跨越多行。 一种做法是使用三重引号: """..."""'''...'''。 行结束符会自动包括在字符串中,但可以通过在行尾添加 \ 来避免此行为。 在下面的例子中,开头的换行符将不会被包括:

image-20260116150502198

字符串可以用 + 合并(粘到一起),也可以用 * 重复:

image-20260116150617005

相邻的两个或多个 字符串字面值 (引号标注的字符)会自动合并:

image-20260116150726099

拼接分隔开的长字符串时,这个功能特别实用:

image-20260116151013250

这项功能只能用于两个字面值,不能用于变量或表达式;合并多个变量,或合并变量与字面值,要用 +

image-20260116151303896

字符串支持 索引 (下标访问),第一个字符的索引是 0。单字符没有专用的类型,就是长度为一的字符串:

image-20260116151440013

索引还支持负数,用负数索引时,从右边开始计数:

image-20260116151553878

注意,-0 和 0 一样,因此,负数索引从 -1 开始。

除了索引操作,还支持 切片。 索引用来获取单个字符,而 切片 允许你获取子字符串:

image-20260116151716460

切片索引的默认值很有用;省略开始索引时,默认值为 0,省略结束索引时,默认为到字符串的结尾:

image-20260116151854334

注意,输出结果包含切片开始,但不包含切片结束。因此,s[:i] + s[i:] 总是等于 s

image-20260116152129027

还可以这样理解切片,索引指向的是字符 之间 ,第一个字符的左侧标为 0,最后一个字符的右侧标为 nn 是字符串长度。

第一行数字是字符串中索引 0...6 的位置,第二行数字是对应的负数索引位置。ij 的切片由 ij 之间所有对应的字符组成。

对于使用非负索引的切片,如果两个索引都不越界,切片长度就是起止索引之差。例如, word[1:3] 的长度是 2。

索引越界会报错:

image-20260116152535408

但是,切片会自动处理越界索引:

image-20260116152631747

Python 字符串不能修改,是 immutable 的。因此,为字符串中某个索引位置赋值会报错:

image-20260116152744404

要生成不同的字符串,应新建一个字符串:

image-20260116152858853

内置函数 len() 返回字符串的长度:

image-20260116153032869

列表

Python 支持多种 复合 数据类型,可将不同值组合在一起。最常用的 列表 ,是用方括号标注,逗号分隔的一组值。列表 可以包含不同类型的元素,但一般情况下,各个元素的类型相同:

image-20260116153231376

和字符串(及其他内置 sequence 类型)一样,列表也支持索引和切片:

image-20260116153354780

列表还支持合并操作:

image-20260116153554824

immutable 字符串不同, 列表是 mutable 类型,其内容可以改变:

image-20260116153827723

你也可以通过使用 list.append() 方法,在列表末尾添加新条目:

image-20260116153943858

Python 中的简单赋值绝不会复制数据。 当你将一个列表赋值给一个变量时,该变量将引用 现有的列表。你通过一个变量对列表所做的任何更改都会被引用它的所有其他变量看到。:

image-20260116154156646

切片操作返回包含请求元素的新列表。以下切片操作会返回列表的 浅拷贝

image-20260116154437816

其实上述例子并不是很好说明浅拷贝,再举一个例子:

image-20260116155223410

为切片赋值可以改变列表大小,甚至清空整个列表:

image-20260116155451108

内置函数 len() 也支持列表:

image-20260116155555158

还可以嵌套列表(创建包含其他列表的列表),例如:

image-20260116155703047

走向编程的第一步

当然,我们还能用 Python 完成比二加二更复杂的任务。 例如,我们可以像下面这样写出 斐波那契数列 初始部分的子序列:

image-20260116155811062

Released under the MIT License.