Python 现代开发学习笔记

(二)名称、类型与对象

1. 赋值与重新绑定

# minutes 先指向整数 30。
minutes = 30
# 读取原来的值,算出 40,再让 minutes 指向计算结果。
minutes = minutes + 10
print(minutes)

minutes = minutes + 10 中,先计算右边。它不是数学里要求左右相等的方程,而是一次状态更新。右边取到旧值 30,算出 40,最后更新左边的绑定。

# b 得到 a 当前代表的整数;之后 a 的重新绑定不改变 b。
a = 30
b = a
a = a + 10
print(a, b)

输出 40 30。整数对象本身不可变;加法产生计算结果,a 改为代表这个结果。后面学习列表时,会看到另一种情况:两个名称指向同一个列表,通过其中一个名称修改列表内容,另一个名称也能观察到变化。

2. 查看数据的类型

# type 返回对象所属的类型。
minutes = 30
print(type(minutes))
# 同一个名称可以重新绑定到另一种类型的对象。
minutes = "半小时"
print(type(minutes))

输出:

<class 'int'>
<class 'str'>

类型属于对象。Python 不需要先写 int minutes 这样的变量声明,名称可以重新绑定。实际写程序时,让同一名称持续表达同一含义会更好读,例如用 minutes 保存分钟数,用 description 保存文字说明。

类型 表达的数据 例子
int 整数 30、-5
float 浮点数 0.75、1e-3
complex 复数,包含实部与虚部 2 + 3j
bool 真或假 True、False
str 文本 "Python"
NoneType 空值对象的类型 None

True、False、None 的首字母大写。引号中的 "True" 是文本,去掉引号后的 True 才是布尔值。

None 用来表达“这里还没有一个实际结果”,例如尚未设置的目标。它与分钟数为 0 不同:前者没有设置,后者已经设置为零。

# 用 None 记录“目标尚未填写”。
target = None
print(target is None)
# 现在目标已经填写为 0,不再是空值。
target = 0
print(target is None)

输出 True 和 False。is 检查对象身份,判断空值时常写 value is None。比较两个数值或两段文本的内容,则使用 ==。

名称可以包含字母、数字和下划线,数字不放在开头。变量采用 reading_minutes 这样的下划线形式。print、list、str 也都是现成工具的名称,给它们赋值以后会遮住原来的工具;给阅读清单起名 titles,就能保留 list(...) 的原有含义。

笔记正文与全部题解 · Ctrl / ⌘ K