本文最后更新于:星期日, 五月 31日 2020, 2:37 下午

什么是数据类型?

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

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

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

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

其中:

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

什么叫不可变数据类型?

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

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

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

>>> 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了吗?没错,我们接着看:

>>> 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为例:

>>> x = [1, 2, 3]
>>> id(x)
4539284688
>>> x.append(4)
>>> x
[1, 2, 3, 4]
>>> id(x)
4539284688
>>>

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


练习题

  • 习题1:

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

    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入门到精通
文章作者:潘高
发布时间:2019年10月11日 - 21:47:22
最后更新:2020年05月31日 - 14:37:59
原始链接:https://blog.pangao.vip/Python3%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B-Python%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A/
许可协议:署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Python3解释器-Python入门到精通 上一篇
Python3基础概念-Python入门到精通 下一篇
如果这篇文章对你有帮助,或者想给我微小的工作一点点资瓷,请随意打赏。
潘高 微信支付

微信支付

潘高 支付宝

支付宝

 目录