[笔记] Python 核心编程 第三章

2018-03-05  本文已影响10人  四明羽客

语句与语法

变量赋值

Python语言中,等号(=)是主要的赋值操作符(其他的是增量赋值操作符)
注意,赋值并不是直接将一个值赋给一个变量。在Python语言中,对象是通过引用传递的。在赋值时,是将该对象的引用(并不是值)赋值给变量

与C语言不同,赋值语句不是一个表达式,不会返回值,所以下面的语句在python中是非法的

In [1]: x = 1

In [2]: y = (x = x + 1) # 赋值语句不是合法的表达式
  File "<ipython-input-2-e5f0ec7f4848>", line 1
    y = (x=x+1)
          ^
SyntaxError: invalid syntax

增量赋值
+=、 -=、 *=、 /=、 %=、 **=、 <<=、 >>=、 &=、 ^=、 |=

注意:对于不可变对象,增量赋值和普通赋值两者一致;但是对于可变对象(列表,字典),增量赋值和普通赋值存在差异,要特别注意。

对于不可变对象,A = A + B 和 A += B 两种赋值都会将A指向一个新的对象,即id(A)在赋值前后会改变;对于可变对象,如List,A = [1]; A += [2, 3] A的值变为[1,2,3] 但A指向的List对象不变,即赋值前后id(A)不变;A = [1]; A = A + [2, 3] A的值也变为了[1,2,3],但A指向的List对象变了,即赋值前后id(A)的值变了

多重赋值
x = y = z = 1

多元赋值

In [3]: x, y, z = 1, 2.0, 'a string'

In [4]: x
Out[4]: 1

In [5]: y
Out[5]: 2.0

In [6]: z
Out[6]: 'a string'

多元赋值可以用于变量值互换

In [7]: x, y = 1, 2

In [8]: x
Out[8]: 1

In [9]: y
Out[9]: 2

In [10]: x, y = y, x

In [11]: x
Out[11]: 2

In [12]: y
Out[12]: 1

内存管理

为了追踪内存中的对象,Python使用了引用计数这项技术。Python内部记录着所有使用中的对象各有多少个引用。一个内部跟踪变量,称为一个引用计数器。每个对象各有多少个引用,简称引用计数。

当对象被创建时,就创建了一个引用计数,当这个对象不再需要时,也就是说,这个对象的引用计数变成0时,它被垃圾回收(严格来说这不是100%正确,不过现阶段你可以这么理解)

增加引用计数
当对象被创建并(将其引用)赋值给变量时,该对象的引用计数就被设置为1.
下面这些情况对象的引用计数会增加

减少引用计数
当对象的引用被销毁时,会减少引用计数。
下面这些情况对象的引用计数会减少

上一篇 下一篇

猜你喜欢

热点阅读