《Python核心编程(第2版)》读书笔记(2)之赋值(关键词:Python/赋值/引用/传递)
2017-09-08 16:30
232 查看
在Python中,对象是通过引用传递的。在赋值时,不管这个对象是新创建的,还是一个已经存在的,都是讲该对象的引用(并不是值)赋值给变量。
通过给数字对象(重新) 赋值,您可以“更新”一个数值对象。我们之所以给更新这两个字加上引号,是因为实际上并没有更新该对象的原始数值。这是因为数值对象是不可改变对象。Python的对象模型与常规对象模型有些不同。你所认为的更新实际上是生成了一个新的数值对象,并得到它的引用。
在学习编程的过程中,我们一直接受这样的教育:变量就像一个盒子,里面装着变量的值。在Python中,变量更像一个指针指向装变量值的盒子。对不可改变类型来说,你无法改变盒子的内容,但可以将指针指向一个新盒子。每次将另外的数字赋给变量的时候,实际上是创建了一个新的对象并把它赋给变量(不仅仅是数字,对于所有的不可变类型,都是如此)。
anInt +=1
aFloat = 2.718281828
参考文献:
1.《Python核心编程(第2版)》第3章3.2.1
2.《Python核心编程(第2版)》第5章5.1.2
通过给数字对象(重新) 赋值,您可以“更新”一个数值对象。我们之所以给更新这两个字加上引号,是因为实际上并没有更新该对象的原始数值。这是因为数值对象是不可改变对象。Python的对象模型与常规对象模型有些不同。你所认为的更新实际上是生成了一个新的数值对象,并得到它的引用。
在学习编程的过程中,我们一直接受这样的教育:变量就像一个盒子,里面装着变量的值。在Python中,变量更像一个指针指向装变量值的盒子。对不可改变类型来说,你无法改变盒子的内容,但可以将指针指向一个新盒子。每次将另外的数字赋给变量的时候,实际上是创建了一个新的对象并把它赋给变量(不仅仅是数字,对于所有的不可变类型,都是如此)。
anInt +=1
aFloat = 2.718281828
参考文献:
1.《Python核心编程(第2版)》第3章3.2.1
2.《Python核心编程(第2版)》第5章5.1.2
相关文章推荐
- 《Python核心编程(第2版)》读书笔记(3)之下划线标识符(关键词:Python/变量名/下划线/私有变量)
- 《Python核心编程(第2版)》读书笔记(7)之把列表用作队列(关键词:Python/列表/队列/queue.py)
- 《Python核心编程(第2版)》读书笔记(1)之__init__(关键词:Python/面向对象/__init__)
- 《Python核心编程(第2版)》读书笔记(8)之析构(关键词:Python/析构/析构函数)
- 《Python核心编程(第2版)》读书笔记(6)之用列表模拟堆栈(关键词:Python/列表/堆栈/stack.py)
- 《Python核心编程(第2版)》读书笔记(4)之浅拷贝、深拷贝(关键词:Python/浅拷贝/深拷贝)
- Python中变量赋值传递时的引用和拷贝
- 《计算机科学导论(第2版)》读书笔记(0)目录(关键词:计算机科学)
- 《计算机科学导论(第2版)》读书笔记(2)第2章数字系统(关键词:计算机科学/数字系统)
- Python引用传递、赋值规则以及深拷贝和浅拷贝
- 《计算机科学导论(第2版)》读书笔记(1)第一章绪论(关键词:计算机科学)
- Python中变量传递时的引用和赋值
- Python中实现变量赋值传递时的引用和拷贝方法
- python参数传递是值传递还是引用传递
- Python:函数参数传递:传值?引用?
- Python的函数参数传递:传值?引用?
- 《Python基础教程》读书笔记(1)之第6章抽象(关键词:Python/抽象/函数/参数/作用域)
- Python是值传递?引用传递?
- python函数的参数传递问题---传值还是传引用?
- Python的函数参数传递:传值?引用?