Python3基本数据类型-Python入门到精通

本文最后更新于:2023年3月29日 下午

什么是数据类型?

数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。

通俗来讲,我们人类可以很容易的分清数字与字符的区别,但是计算机并不能,除非你明确的告诉它,1是数字,是文字,否则它是分不清1的区别的。因此,就需要对变量进行明确的划分。想让计算机进行数值运算,就传数字给它,想让他处理文字,就传字符串类型给他。

Python3 中有六个标准的数据类型,如下:

  • Number(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Set(集合)
  • Dictionary(字典)

其中:

  • 不可变数据类型(3 个)
    Number(数字)、String(字符串)、Tuple(元组)
  • 可变数据类型(3 个)
    List(列表)、Dictionary(字典)、Set(集合)

什么叫不可变数据类型?

变量所指向的内存地址处的值是不可以被改变的叫做不可变数据类型。理解起来有点费劲?请接着往下看。

在 Python 的世界里,一切皆为对象,任何变量都是对象的引用。所有的对象都是存储在内存中的,每一块儿内存都有一个唯一的“门牌号”,叫做地址

我们定义一个整数,如 22 ,在 Python 中用 id(22)来获取 22 在内存中的地址,如下:

1
2
3
4
5
6
7
8
9
>>> id(22)
4536155600
>>> x = 22
>>> id(x)
4536155600
>>> y=22
>>> id(y)
4536155600
>>>

如上代码所示,变量 22 的地址是 4536155600,将 22 赋值给变量 x,x 的地址也是 4536155600。同样,y 的地址也是一样的。说明,无论定义多少变量,只要值是 22,他们的地址就都一样。

那么,直接将 44 赋值给 x,x 的值不就改变了吗,不就变成 44 了吗?没错,我们接着看:

1
2
3
4
5
6
7
8
9
10
>>> x = 44
>>> id(x)
4536156304
>>> id(44)
4536156304
>>> id(22)
4536155600
>>> id(y)
4536155600
>>>

我们看到执行 x = 44 后变量 x 的地址变成 4536156304 了,而变量 y 和 22 的地址并没有改变。

由此可见,我们说变量 x 是不可变数据类型,是指变量 x 引用的地址处的值是不能改变的,这个值只能被创建或销毁。当我们执行 x = 44 这个赋值操作时原地址处的值 22 并没有改变,而是新创建一个对象,这个对象的值是 44,变量 x 重新引用这个新对象。当原对象无人引用时,Python 会在适当的时候自行回收这块内存。

什么叫可变数据类型?

变量所指向的内存地址处的值是可以被改变的叫做可变数据类型。有了上面的基础,接下来我们理解就会容易很多。以列表list为例:

1
2
3
4
5
6
7
8
9
>>> x = [1, 2, 3]
>>> id(x)
4539284688
>>> x.append(4)
>>> x
[1, 2, 3, 4]
>>> id(x)
4539284688
>>>

如上所示,改变变量 x 的值,但变量引用的地址依旧不变。因此可变数据类型是说对一个变量所指向的内存地址处的值是可以被变的,值的变化并不会引起新建对象,即地址是不会变的。


练习题

  • 习题 1:

    1
    2
    3
    x = y = 22
    x = 44
    猜猜x, y的值分别是什么?
  • 习题 2:

    1
    2
    3
    a = b = [1, 2, 3]
    a.append(4)
    猜猜a, b的值分别是什么?

更多编程教学请关注公众号:潘高陪你学编程

image



习题答案

  • 习题 1:
    x 的值为 44,y 的值为 22。
    数字是不可变数据类型。执行 x = y = 22 代码后,变量 x 和变量 y 都引用 22 这个值。当执行 x = 44 代码后,变量 x 引用值为 44 的新对象。变量 y 的引用值 22 不变。

  • 习题 2:
    a 的值为[1, 2, 3, 4],b 的值也为[1, 2, 3, 4]。
    列表 是可变数据类型。执行 a = b = [1, 2, 3] 代码后,变量 a 和变量 b 都引用[1, 2, 3]这个列表。当执行 a.append(4) 代码后,变量 a 引用的值修改为[1, 2, 3, 4]。这时,引用同一块地址的变量 b 的值也是[1, 2, 3, 4]。



如果这篇文章对你有帮助,或者想给我微小的工作一点点资瓷,请随意打赏。
潘高 微信支付

微信支付

潘高 支付宝

支付宝


Python3基本数据类型-Python入门到精通
https://blog.pangao.vip/Python3基本数据类型-Python入门到精通/
作者
潘高
发布于
2019年10月11日 晚上
更新于
2023年3月29日 下午
许可协议