美文网首页
为什么说python中所有的东西都是对象?

为什么说python中所有的东西都是对象?

作者: 复苏森林 | 来源:发表于2019-04-28 14:31 被阅读0次

先来看看这段代码:

a = 'ABC'
b = a
a = 'XYZ'
print(b)

这段代码执行的结果是ABC呢还是XYZ呢?
答案是

ABC

这是为什么呢?
很多教程都会告诉你,'ABC'是一个对象,把这个对象指向a,当b=a时,是把对象指向b,这点对于学过面向对象的同学来说会非常难以理解。

在很多面向对象语言中,变量是可以指向另一个变量的地址的。变量在栈里,变量的值在堆里,一个变量所标记的存储空间,可以写成一个值,也可以写成一个内存空间的地址。这个特性确保了,引用对象可以在函数方法间传递。

比如Java,如果 double a = 5000.0 ,5000.0会被直接存放在a变量的空间里,当将a赋值给b时,b会拷贝一份数据到自己的空间里,此时修改a不会影响b,修改b不会影响a。但是,如果写的是Double a = 5000.0,Double b = a,此时修改a或b,都会对另一个产生影响,因为这两个变量此时在自身空间中存储已经是一个引用地址了。类似于python当前的情况,但也不完全是。

而python压根不支持这一点。在python当中,数据是数据,变量是变量,变量只能存放内存地址。任何一个数据出现时,都会自动放入数据区域,并给出一个内存地址,当你想要将这个数据赋给某个变量时,就会简单的将这块数据的内存地址存入变量,当你将一个变量赋值给另一个变量时,也就简单的拷贝变量中存储的地址即可。

上述变量中存储的地址都是指数据的地址,不是变量本身的地址。

我们来总结一下:
python语言的变量只能存放数据块的内存地址,其他语言的变量不光可以存放内存地址,也可以直接存放普通数据类型。

相关文章

  • 为什么说python中所有的东西都是对象?

    先来看看这段代码: 这段代码执行的结果是ABC呢还是XYZ呢?答案是 这是为什么呢?很多教程都会告诉你,'ABC'...

  • day20

      1.python中变量的赋值   python中所有的数据都是对象,所有的变量都是对象的引用  python对...

  • day20-python中的内存管理机制

    1、python中变量的赋值a、python中所有的数据都是对象,所有的变量都是对象的引用。b、python对数字...

  • 2018-09-14 day20-内存管理机制

    python中变量的赋值 python中所有的数据都是对象,所有的变量都是对象的引用 python对数字、字符串(...

  • 2018-09-14内存管理机制(day20)

    1.python中变量的赋值 python中所有的数据都是对象,所有的变量都是对象的引用 python对数字、布尔...

  • 内存管理机制

    1.python中变量的赋值 python中所有的数据都是对象,所有的变量都是对象的引用python对数字,字符串...

  • 2018-09-15 day20-内存管理

    1.python中变量的赋值 python中所有的数据都是对象,所有的变量都是对象的引用python对数字,字符串...

  • 2018-09-14-day20python内存管理机制

    1.python中变量的赋值 python中所有的数据都是对象,所有的变量都是对象对应的引用a = int()py...

  • python 数据模型

    数据模型(译) 1 对象(object)、类型(type)和值(value) python中所有的数据都是通过对象...

  • 继承(单继承,多继承)

    将共性的内容放在父类中,子类只需要关注自己特有的内容 python中所有的内容都是对象,所有的对象都直接或间接继承...

网友评论

      本文标题:为什么说python中所有的东西都是对象?

      本文链接:https://www.haomeiwen.com/subject/qtvdnqtx.html