Python之引用

作者: 五娃儿 | 来源:发表于2017-04-05 11:11 被阅读11次

从截图例子中会有如下疑问:

1、为何字符串赋值,改变值时,change的值未被改变?

答:因为将42赋值给test变量后,拷贝test中的值,将其赋值给变量change,所以即使test的值发生了变化,但是也不会影响change

2、为何列表在赋值,改变值时,test和change的列表值都发生了变化?

答:将列表复制给一个变量时,实际是将列表的“引用”赋值给了变量,简单来说就是test 和change两个列表实际指的是同一个列表

总结:在python中,对于不可改变的数据类型的值,如字符串整型、或者元祖,python变量保存的是值本身。

在python中,当党鞭必须保存可变量数据类型的值时,例如列表、字典,python变量使用的是引用


思考下为何如下例子的spam的值也被改变了?

 

将列表[1,2,3]赋值给变量spam 即spam = [1,2,3]

调用eggs函数,将spam的值复制给变元someParamerer(此处实际是将spam的引用传递给了变元somParamerer)

执行函数体,即列表增加hello元素,结果为 [1, 2, 3, 'Hello']

打印spam的值 [1, 2, 3, 'Hello']

原因就是,spam 和someParamerer指向的是同一个列表,所以spam的值也是[1, 2, 3, 'Hello']

友情提示:这一块一定要清楚什么时候是用的值,什么时候是引用,否则后面学习时很容易困惑。

如果不想改变列表或者字典的值要如何处理?

使用copy模块的copy 和deepcopy 即通过浅拷贝和深拷贝复制个副本,从而达到不互相影响的目的。

相关文章

  • Python精简学习(八)

    Python精简学习之函数引用-函数引用

  • Python之引用

    从截图例子中会有如下疑问: 1、为何字符串赋值,改变值时,change的值未被改变? 答:因为将42赋值给test...

  • python之引用实例

    非原创,如侵,请告知原文来自git : https://github.com/leisurelicht/wtfpy...

  • python-List

    python赋初值 python 全部清零 python赋值是引用赋值,无引用就回收python与Java一样,不...

  • 深拷贝、浅拷贝

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

  • python学习一

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

  • 无标题文章

    #背 **重要** > 引用 ```python

  • Python是如何进行内存管理的

    Python引入了一个机制:引用计数。 python内部使用引用计数,来保持追踪内存中的对象,Python内部记录...

  • python是如何进行内存管理的

    Python引入了一个机制:引用计数。 python内部使用引用计数,来保持追踪内存中的对象,Python内部记录...

  • python(Class7)

    内存管理之循环引用 在Python3.x中,内存管理问题基本上不会出现,类似与OC中的ARC机制在Python2....

网友评论

    本文标题:Python之引用

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