一、Python变量
在大多数语言中,为一个值起一个名字时,把这种行为称为“给变量赋值”或“把值存储在变量中”。不过,Python与许多其它计算机语言的有所不同,它并不是把值存储在变量中,而像是把名字“贴”在值的上边(专业一点说法是将名字绑定了对象)。所以,本文来源gaodaimacom搞#^代%!码网@有些Python程序员会说Python没有变量,只有名字,通过名字找到它代表的值。
Python中的变量,与其它开发语言(如C语言)的不同:
在C语言中,变量类似于一个“容器”,赋给它的值,装在容器中:
定义一个变量 int a = 1;
给变量a重新赋值 a = 2;
把变量a赋值给另外一个变量b ,int b = a;
会重新创建一个变量b(容器),将a中的内容复制粘贴至b中。
在python中,变量类似于名字标签“贴”在值上面,通过名字找到它代表的值。
定义一个变量 a = 1
给变量a重新赋值 a = 2
把变量a赋值给另外一个变量b, b = a
创建新的便利贴b,与a同时贴到值上
为了对python中变量的这种情况加深认识,下面适度展开介绍。
1.1 第一点
先说明第一点:变量的实现方式有:引用语义、值语义
python语言中变量的实现方式就是引用语义,在变量里面保存的是值(对象)的引用(值所在处内存空间的地址)。采用这种方式,变量所需的存储空间大小一致,因为其中只需要保存一个引用。而有些语言(例如c)采用的不是这种方式,它们把变量直接保存在变量的存储区里,这种方式就称为值语义。这样的话,一个整数类型的变量就需要保存一个整数所需要的空间(例如c语言中int类型占用4个字节大小)。
python中变量与对象的引用关系类似于c语言的指针变量与指向地址之间的关系。
在python的数据结构中,对象分为可变对象和不可变对象。基本数据类型如int、float,元祖tuple、str是不可变对象;list(列表)、dict(字典)、set(集合)是可变对象,可变对象存储的元素的引用其实是没有改变的,改变的是其引用指向的值。
采用引用语义存储的只是一个变量的值所在的内存地址,而不是这个变量的值本身。
1.2 第二点
现在说明第二点:Python中的变量、对象、引用三者之间的关系。
在Python里一切皆对象。Python中,对象具有三要素:标识(identity)、类型(type)、值(value)。
☆标识(identity):
用于唯一标识对象,通常对应对象在计算机内存中的地址。使用内置函数id(obj)返回对象唯一标识。
☆类型(type):