美文网首页
2018-03-01

2018-03-01

作者: 贵族_4e67 | 来源:发表于2018-03-01 10:27 被阅读0次

每定义一个变量,Python虚拟机就会在内存中创建一个对应类型的对象,而变量本身则是引用到被创建的对象。

听起来可能有些拗口,比如有如下代码:

x, y , message = 100, 3.1415926, "tianmaying"

变量与对象之间的关系如图所示:

image

变量可以修改,引用到其它对象,变量的类型也可以发生变化。例如:如果进行了如下操作:

x = 123.5
y = x

则变量与对象之间的关系变为:

image

其中,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)和列表基本相同,都是有序的序列,但是元组内的元素一旦定义,就不能够再进行修改。
 所以在元组没有appendinsertpop这些方法,只能通过下标对元组内部的元素进行访问

元组使用()进行初始化

  • 初始化元组的陷阱

当定义只包含一个元素的元组时有一个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

通过一个额外的,来告诉解释器定义的变量为元组

相关文章

网友评论

      本文标题:2018-03-01

      本文链接:https://www.haomeiwen.com/subject/sbfgxftx.html