学径 LearnPath

CAICP-E · Python 编程基础 / Wiki

数据类型

值是哪一种。种类不同,能做的事也不同。

它是什么

数据类型 说明值是哪一种。 电脑对每种类型能做的事不一样。

人看见「3」和「三」,都知道在说三。 电脑很较真。 3 能加减。 "3" 是文字,相加是拼接。

类型像贴在盒子上的说明书。 说明书决定你能对它做什么。

名字从哪来

类型的英文是 type 或 data type。 data 是数据,type 是种类。

数学里早就把对象分成整数、小数、几何图形。 编程把这个习惯写进语言:每种值属于一个类,有自己能做和不能做的事。

Python 里,你不必先宣布「这个盒子只装整数」。 你放进去什么,它就是什么类型。 换内容时,类型也可以跟着换。

有的语言更严格:盒子一旦说好只装整数,就不能再装文字。 Python 走的是另一条路:先用,再按值来认。

布尔类型的名字来自英国数学家乔治·布尔,详见 逻辑运算

它怎么工作

常见基本类型:

类型例子含义
int3整数
float3.14小数,也叫浮点数
str"hi"字符串
boolTrue / False真假
list[1, 2]列表

33.0 看起来像。 一个是整数,一个是小数。

"3" 更不同。 它是文字,不能直接拿去乘。

python
print(3 + 1)
print("3" + "1")

第一行是 4。 第二行是 31。 文字相加是拼接。

type(x) 可以问:这个值是哪种类型。

python
print(type(3))
print(type("3"))
print(type(True))

input 拿到的永远是字符串。 要做数学,先 类型转换

  • int() 转整数
  • float() 转小数
  • str() 转文字
  • bool() 转真假

TrueFalse 首字母必须大写。 不要加引号。 加了引号,就变成普通文字了。

数字能加减。 文字能拼接、切割。 真假能拿去当 分支 的条件。 列表能按下标取东西。

搞清类型,很多报错会自己变明白。 尤其是 TypeError,常常在说:你让两种合不来的东西在一起干活。

生活里在哪里

  • 超市条码和价格:一个是编号文字,一个是金额数字,不能拿条码去乘 2。
  • 身份证号:看起来全是数字,却是文字编号。加 1 没有意义。
  • 温度计上的 36.5:这是小数,不是「三十六点五」这几个字。
  • 灯的开关:开或关,很像真或假。
  • 书包:里面可以并排放好几样东西,有点像列表。

生活里我们凭经验换用法。 电脑必须先看类型,再决定能不能做。

和相近概念的差别

类型说的是「它是什么种类」。 变量 说的是「它叫什么名字」。

同一个名字,今天可以装整数,明天可以装文字。 类型跟着值走,不跟着名字走。

类型转换是「把一种变成另一种」。 它不是比较。 3 == 3.0 可以是真,但 intfloat 仍是两种类型。

字符串int列表 都是类型中的成员。 本页讲的是「分类」这件事本身。

常见误会

误会 1:看见 3 就当整数。

先看有没有引号。 "3" 是文字。

误会 2:True 写成 true

布尔值要大写。 小写会变成一个还没定义的名字。

误会 3:33.0 完全是同一个东西。

比较时它们可以相等。 类型仍不同。 有的运算更在意类型。

误会 4:"3" + 1 电脑会自动懂。

一边是文字,一边是数字。 要先转换,再算。

误会 5:类型只是一串要背的名词。

它是说明书。 说明书错了,加减、拼接、循环都会走错路。

想知道更多

  • 书:潘洪波《小学生 Python 趣味编程》(用生活情境分开「数字」和「文字」)。
  • 书:埃里克·马瑟斯《Python 编程:从入门到实践》(变量一章就会碰到类型,可以和家长一起对照例子)。

未登录时不会保存学习进度