美文网首页
python基础(六)----对象引用

python基础(六)----对象引用

作者: 躺在稻田里的小白菜 | 来源:发表于2018-03-07 08:26 被阅读0次

一.变量皆引用

1. python中变量名和对象是分离的

在python中,如果要使用一个变量,不需要提前进行声明,只需要在用的时候,给这个变量赋值即可 (这个和C语言等静态类型语言不同,和python为动态类型有关)。
举个栗子:(is运算符用于判断2个变量是否指向同一个对象)

a=1
b=1
print a is b

#结果为:True

这里面,Python首先在内存中开辟一个空间,存放数值1,然后将a,b分别指向了该内存区。也就是说,Python的变量,本质上都是引用。变量没有类型,只有对象才有类型。

2. 可变类型对象的引用

如果收到的是一个可变对象(比如字典或者列表)的引用,就可以通过这个引用来修改内存中的值。
吃一个栗子:

a=[1,2,3,4,5]
b=a
b[1]=256
print a    # [1,256,3,4,5]
print a is b  #True
3. 不可变类型对象的引用

如果收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能通过引用直接修改原始对象,只能读取。若非要改变值,只能在新的内存区新建一个对象,再指向它。

举个栗子:
a,b为不可变类型----字符串。改变b的值,并不会对a造成影响。

a='hello world!'
b=a
b='good'
print a,a is b

#结果为:hello world!  False

二.python的垃圾回收机制

为了简化内存管理,Python通过引用计数机制实现自动垃圾回收功能,Python中的每个对象都有一个引用计数,用来计数该对象在不同场所分别被引用了多少次。每当引用一次Python对象,相应的引用计数就增1,每当消毁一次Python对象,则相应的引用就减1,只有当引用计数为零时,Python才真正从内存中删除对象。

三.Python对象的删除

del语句只能删除变量,也就是将变量与对象解绑,使对象引用计数器减1,而不能删除对象,对象只能由Python的GC机制删除。

四.函数参数中的引用

下一节我们将介绍函数,这里只是简单总结一下。

  • 函数的参数是可变类型:
    (如 列表,字典)类似 c++ 的引用传递。由于可变类型可以通过引用修改数据,所以在函数内部修改后,外部也会受影响。

  • 函数的参数是不可变类型:
    (如整数、字符串、元组)类似 c++ 的值传递。不可变类型不能通过引用修改数据,只能重新引用其他对象。所以在函数内部修改参数的值,只会将形参指向其他对象,不会影响到函数外部。

相关文章

  • python基础(六)----对象引用

    一.变量皆引用 1. python中变量名和对象是分离的 在python中,如果要使用一个变量,不需要提前进行声明...

  • python学习一

    1 python 如何管理内存 对象引用计数机制,垃圾回收机制,内存池机制 一。对象引用机制 python内部引用...

  • python面试题之Python是如何进行内存管理的

    python内部使用引用计数,来保持追踪内存中的对象,Python内部记录了对象有多少个引用,即引用计数,当对象被...

  • 24.Python 是如何进行内存管理的?python 的程序会

    Python GC主要使用 引用计数 来跟踪和回收垃圾。在引用计数的基础上,通过“标记-清除”解决容器对象可能产生...

  • @proterty属性分类

    Strong 强引用,对象的引用计数器值+1 Assign 弱引用,对象的引用计数器值不变,用于基础类型(基础类型...

  • 零基础学习python数据分析——获取对象信息

    零基础学习python数据分析——获取对象信息,科多大数据带你来学习 当我们拿到一个对象的引用时,如何知道这个对象...

  • 垃圾回收机制

    Python的GC模块主要运用了引用计数来跟踪和回收垃圾。在引用计数的基础上,还可以通过“标记-清除”解决容器对象...

  • 深拷贝、浅拷贝

    一、python引用 python不允许程序员选择采用传值还是传引用。Python参数传递采用的肯定是“传对象引用...

  • 浅拷贝与深拷贝

    0.名词解释 1.赋值 python中的赋值是对象的引用,python并没有拷贝这个对象,只是指向了被引用对象的内...

  • 关于python 中的一切皆对象

    最近一直在补传智播客的Python就业班基础课程,Python 中的所有类型定义都是对象,如函数,方法的引用,加与...

网友评论

      本文标题:python基础(六)----对象引用

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