返回介绍

类型属于对象,而不是变量

发布于 2024-01-29 22:24:17 字数 902 浏览 0 评论 0 收藏 0

为了理解对象类型是如何使用的,请看当我们对一个变量进行多次赋值后的结果:

这不是典型的Python代码,但是它是可行的。a刚开始是一个整数,然后变成一个字符串,最后变成一个浮点数。这个例子对于C程序员来说,可能看起来特别奇怪,因为当我们说a='spam'时,a的类型似乎从整数变成了字符串。

事实并非如此。在Python中,情况很简单:变量名没有类型。就像前边所说的,类型属于对象,而不是变量名。就之前的例子而言,我们只是把a修改为对不同的对象的引用。因为变量没有类型,我们实际上并没有改变变量a的类型,只是让变量引用了不同类型的对象而已。实际上,Python的变量就是在特定的时间引用了一个特定的对象。

从另一方面讲,对象知道自己的类型。每个对象都包含了一个头部信息,其中标记了这个对象的类型。例如,整数对象3,包含了值3以及一个头部信息,告诉Python,这是一个整数对象[从严格意义上讲,一个指向int(整数类型的名称)的对象的指针)]。'spam'字符串的对象的标志符指向了一个字符串类型(叫做str)。因为对象记录了它们的类型,变量就没有必要了。

注意Python中的类型是与对象相关联的,而不是和变量关联。在典型的代码中,一个给定的变量往往只会引用一种类型的对象。尽管这样,因为这并不是必须的,你将会发现Python代码比你通常惯用的代码更加灵活:如果正确的使用Python,代码能够自动以多种类型进行工作。

本书提到的这个代码有两个头部信息,一个是类型标志符,另一个是引用计数器。为了了解后者,我们需要继续学习下面内容,并简要地介绍对象生命结束时发生了什么变化。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文