这些年来,我读过很多文章,都是用“Python有名称,其他语言有变量”或“对象、标记和框”来解释Python变量

我一直不喜欢这种解释,因为它们需要新的心理意象,而且在我看来,它们试图重新定义常见的术语。(可以说Python也有变量,其他语言也有名称。)

因为我只使用Python进行过正确的编程,所以我只知道它的行为,所以这些讨论并没有真正影响到我。

尽管如此,在我与其他人讨论之前,我想知道我对这一主题的以下理解是否正确:

所有Python变量都是指针

在写这个问题的时候,我注意到之前有人问过similar question,而且这个线程中的每个人,包括OP,都得出结论,Python变量是而不是指针(相反,答案使用了上面的解释),因为

i = 5
j = i
j = 3
print(i)

结果是5。然而,对我来说,这个结果非常有意义。我的理解是

^{pr2}$

(准确地说,对于前面提到的问题,有一个答案或多或少地提供了这种解释,但得分为负数,对问题没有任何评论。)

据我所知,这个模型也完美地解释了Python中的参数,例如,它解释了为什么def foo(b):

b=2
a=1
foo(a)
print(a)

结果是1。在foo内,本地指针变量b被重定向到一个新的整数对象的地址。外部指针变量a仍然指向值为1的整数对象。

为了全面了解属性访问,以及为什么属性访问可以用于更改传递给函数的变量,我将添加以下声明:

Python中的“{>强”> ^ { < CD7>}的属性访问转换为^ } C++ < /强>

因为索引只是语法上的甜点,所以它也包含在这个规则中。

总之,我相信有两个简单的规则可以解释Python中关于变量的一切。这是一个大胆的声明,我很高兴地知道,如果和如何是错误的。