你好,我是尹会生。
在前面几节课里,我们着重讲了 Python 中最基础也最常用的功能——变量赋值,并为你介绍了两种基础数据类型字符串和整数,你会发现将这两种数据类型赋值给变量之后,Python 支持了非常多的内置函数,让你操作起这两种类型来更得心应手。
在掌握了操作技巧之后,我们将深入原理,理解程序的行为,加深你的记忆。变量赋值的概念和你在学习 C、Java 等其他编程语言时,是略有差异的,这就会导致你在编写程序的时候容易产生 Bug,所以我想在这一章的总结部分,再为你详细剖析一下变量赋值的内部运行原理,让你更好地理解 Python 的运作模式。
首先,Python 的变量名是为变量贴标签,而不是装着变量的盒子。
我用一个例子带你来理解一下变量名是标签这句话。
var1 = 123 var2 = 456 var1 = var2 var2 = 789 print(var1)
以上程序,我实现了对 var1 和 var2 变量的多次赋值,你能在没有运行程序之前,就猜到它的执行结果吗?
当你拿着这段程序在 Python 解释器运行之后,如果发现和你猜想的结果不同,也不要太灰心,我现在就带你来分析一下 Python 解释器在背后到底做了什么。
相信你在学习 C 语言时,为了更形象地记住变量这个抽象的概念,老师会和你说变量是个盒子,为变量赋值意味着在盒子里放入值。
作者回复: 我提供一个学习方法, 你可以尝试先做个标记,然后继续后面的内容,看看回过头来,是否能针对这一节不懂的地方,提出更具体的问题。 欢迎留言给我
作者回复: 给箱子贴标签是一种比喻,更严谨的说法是: python这种机制被称为"引用赋值",Python中的变量名只是对象的引用,而不是对象本身。 当你执行 var1 = 12345 时,Python会在内存中为整数 12345 创建一个对象,然后让变量名 var1 指向(引用)这个对象。 当你执行 var2 = var1 时,Python不会创建一个新的对象,而是让变量名 var2 指向与 var1 相同的那个整数对象 12345。这意味着 var1 和 var2 现在都指向同一个对象。 原来 var1 所指向的对象并没有被覆盖或删除,它仍然存在于内存中,只是现在有两个变量名 var1 和 var2 都指向同一个对象而已。
作者回复: 可以具体贴一下代码,我来帮你看一下。 因为目前留言在总结这一节下面,我没办法对应到具体的代码
作者回复: 虽然小整数缓存(即 -5 到 256 的范围)是 Python 的一个特性,但实际的缓存范围和特定的实现或平台设置可能有关。大多数常规的 CPython 实现都遵循这个缓存范围,但在某些情况下,其他数字可能也会被缓存,尤其是如果你的 Python 版本、实现或平台有所不同。 可以提供一下你的平台和版本
作者回复: 没错,如果不在Python交互环境,默认为变量赋值,执行函数等,不会进行输出。 python交互环境也是为了方便调试,才对变量直接输出的
编辑回复: sunny同学你好,按正常更新节奏(每周三更新一章,共15章)2月中旬可以更新完