Python使用标识符而不是变量(如果有的话)背后的原因是什么?

Python使用标识符而不是变量(如果有的话)背后的原因是什么?,python,Python,可能措辞不太清楚。我不想知道发生了什么,我想知道为什么语言本身使用这种哲学。这是一个任意的选择,还是在这个设计选择之间有一些有趣的历史 这个问题被标记为一个重复,简单地说Python做了这个,但是没有解释它背后有什么推理。 < P>如果你知道C和C++,你知道指针和引用是什么。在Java或Python中,有两种情况。一方面是本机数字类型(整数、字符和浮点),另一方面是从基本空类型对象派生的复杂类型 事实上,本机类型是可以放入CPU寄存器的类型,因此它们作为值进行处理。但是对象(子)类型通常需要一

可能措辞不太清楚。我不想知道发生了什么,我想知道为什么语言本身使用这种哲学。这是一个任意的选择,还是在这个设计选择之间有一些有趣的历史


这个问题被标记为一个重复,简单地说Python做了这个,但是没有解释它背后有什么推理。

< P>如果你知道C和C++,你知道指针和引用是什么。在Java或Python中,有两种情况。一方面是本机数字类型(整数、字符和浮点),另一方面是从基本空类型
对象
派生的复杂类型

事实上,本机类型是可以放入CPU寄存器的类型,因此它们作为值进行处理。但是对象(子)类型通常需要一个复杂的内存框架。由于这个原因,寄存器只能包含指向它们的指针,因此它们被作为引用处理。对提供垃圾回收器的语言的引用的优点在于,它们被处理为与C++ <代码> SydDyPosith< /C> >:系统保持引用计数,当引用计数达到0时,可以通过GC释放。 C对对象的概念非常有限(
struct
),在20世纪70年代的早期K&R版本中,您只能逐个元素或使用
memcopy
作为一个整体来处理它们,但既不能从函数返回,也不能赋值,也不能按值传递它们。在20世纪80年代,ANSIC中增加了按值传递结构的功能,以使语言更加友好。C++从一开始就允许一个对象语言,通过值传递对象,并且智能指针<代码> SyddyPt和 UnQuyGPPT/<代码>被添加到标准库中,以便容易地使用对象引用,因为复制大对象是一个昂贵的操作。
Python(像java一样)是一种后C++语言,从一开始就决定了对象将作为引用处理,并使用引用计数器,在引用计数达到0时由垃圾收集器删除。这样分配对象是一种廉价的操作,程序员永远不需要明确地删除任何内容。

“Python有名称,没有变量”似乎是一种误解。Python有变量,变量有名称。我想这不是任意的——做出选择是有原因的。通过深入研究旧的python usenet线程或邮件列表线程,您可能会更幸运地找到历史记录。