第11章 赋值、表达式和打印
写在开头的读者笔记
值得一读的小节
1.赋值语句
- 赋值语句建立对象引用值。Python**赋值语句会把对象引用值存储在变量名或数据结构的元素内。赋值语句总是建立对象的引用值,而不是复制对象**。
1.1.赋值语句 - 多目标赋值语句 - 多目标赋值以及共享引用
>>> a = b = []
>>> b = b + 1
>>> a, b
(0, 1)
修改b只会对b发生修改,因为数字不支持在原处的修改。只要赋值的对象是不可变的,即使有一个以上的变量名使用该对象也无所谓。
把变量初始值设为空的可变对象时(诸如列表或字典),就得小心一点:
>>> a = b = []
>>> b.append(42)
>>> a, b
([42], [42])
为了避免这个问题,要在单独的语句中初始化可变对象,以便分别执行独立的常量表达式来创建独立的空对象:
>>> a = []
>>> b = []
>>> b.append(42)
>>> a, b
([], [42])
2.表达式语句
2.1.表达式语句 - 表达式语句和在原处的修改
>>> L = L.append(4)
>>> print(L)
None
对列表调用append、sort或reverse这类原处的修改的运算,一定是对列表做原处的修改,但这些方法在列表修改后并不会把列表返回。事实上,它们返回的是None对象。
赋值语句
(读者:
- 赋值语句建立对象引用值。Python**赋值语句会把对象引用值存储在变量名或数据结构的元素内。赋值语句总是建立对象的引用值,而不是复制对象**。
)
赋值语句的形式
序列赋值
Python3.0中的扩展序列解包
多目标赋值语句
多目标赋值语句以及共享引用
(读者:
>>> a = b = []
>>> b = b + 1
>>> a, b
(0, 1)
修改b只会对b发生修改,因为数字不支持在原处的修改。只要赋值的对象是不可变的,即使有一个以上的变量名使用该对象也无所谓。
把变量初始值设为空的可变对象时(诸如列表或字典),就得小心一点:
>>> a = b = []
>>> b.append(42)
>>> a, b
([42], [42])
为了避免这个问题,要在单独的语句中初始化可变对象,以便分别执行独立的常量表达式来创建独立的空对象:
>>> a = []
>>> b = []
>>> b.append(42)
>>> a, b
([], [42])
)
增强赋值语句
变量命名规则
Python的废弃协议
表达式语句
表达式语句和在原处的修改
(读者:
>>> L = L.append(4)
>>> print(L)
None
对列表调用append、sort或reverse这类原处的修改的运算,一定是对列表做原处的修改,但这些方法在列表修改后并不会把列表返回。事实上,它们返回的是None对象。
)
打印操作
Python 3.0的print函数
Python 2.6 print语句
打印流重定向
版本独立的打印
为什么要注意print和stdout