第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赋值没有作用 python赋值语句的作用_打印

增强赋值语句
变量命名规则
Python的废弃协议

表达式语句

表达式语句和在原处的修改

(读者:

>>> L = L.append(4)
>>> print(L)
None

列表调用append、sort或reverse这类原处修改的运算,一定是对列表做原处的修改,但这些方法在列表修改后不会列表返回。事实上,它们返回的是None对象。

python赋值没有作用 python赋值语句的作用_python赋值没有作用_02

打印操作

Python 3.0的print函数
Python 2.6 print语句
打印流重定向
版本独立的打印
为什么要注意print和stdout