每定义一个变量,Python虚拟机就会在内存中创建一个对应类型的对象,而变量本身则是引用到被创建的对象。
听起来可能有些拗口,比如有如下代码:
x, y , message = 100, 3.1415926, "tianmaying"
变量与对象之间的关系如图所示:

变量可以修改,引用到其它对象,变量的类型也可以发生变化。例如:如果进行了如下操作:
x = 123.5
y = x
则变量与对象之间的关系变为:

其中,x
此时引用到一个浮点数,而不再是整数;而y
此时和x
引用到同一个对象。你可能会问原来y
变量引用的对象到哪去了呢? 你可以不用管,如果一个对象没有变量对它进行应用,则Python虚拟机会将其视为内存中的垃圾,进行垃圾回收工作。
python使用is用于判断两个变量是否引用同一个对象。
列表list
- 定义list
alist = ['this','is','a','list'] - 打印list
alist
打印一个元素
alist[0]
打印最后一个元素
alist[-1] - 追加list
alist.append('apend') - 删除list元素
alist.pop()
弹出alist中最后一个元素
alist.pop(3)
弹出list第四个元素 - 更改list中的元素
alist[2] = 'the'
初始化元组
元组(tuple)和列表基本相同,都是有序的序列,但是元组内的元素一旦定义,就不能够再进行修改。
所以在元组没有append
、insert
、pop
这些方法,只能通过下标对元组内部的元素进行访问
元组使用
()
进行初始化
-
初始化元组的陷阱
当定义只包含一个元素的元组时有一个Python语法导致的陷阱
>>> oneTuple = (1)
>>> oneTuple
1
>>> oneTuple[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not subscriptable
可以看到oneTuple没有被定义为一个元组,而是定义成了整数1,这是因为()
也可以被表示成数学公式中的括号,而且数学公式中的括号的解释优先级大于定义元素的括号,因此(1)
被解释成了1
正确定义只包含一个元素的元组为
>>> oneElementTuple = (1,)
>>> oneElementTuple
(1,)
>>> oneElementTuple[0]
1
通过一个额外的,
来告诉解释器定义的变量为元组
网友评论