赋值的特性
赋值语句建立对象引用
变量名在首次赋值时会被创建
变量名在引用前必须先赋值
赋值语句的形式
- 序列赋值
>>> A, B = 1, 2 >>> print (A, B) 1 2
在上面的例子中,写了两个元组,只是省略了它们的括号。python把赋值运算符右侧元组内的值和左侧元组内的变量相互匹配,然后每一次赋一个值
- 高级序列赋值
>>> a, b, c, d = 'spam' >>> print(a, b, c, d) s p a m >>> a, b, c = 'spam' Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: too many values to unpack (expected 3) >>>
通过上面的例子,右边元素的数目还要是要跟左边的变量数目相同,不然会产生错误
- 扩展解包赋值
>>> a, b = 'spam' Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: too many values to unpack (expected 2) >>> a, *b = 'spam' >>> print(a,b) s ['p', 'a', 'm'] >>> *a, b = 'spam' >>> print(a,b) ['s', 'p', 'a'] m >>> a, *b, c = 'spam' >>> print(a,b,c) s ['p', 'a'] m
一个带星号的变量名 ,收集了序列中没有赋值给其他名称的所有项
- 增强赋值语句

>>> x = 1 >>> x +=1 >>> print(x) 2
增强赋值语句有三个优点:减少输入;左侧只需要计算一次,在完整形式的x = x+1中,x出现两次,必须执行两次;优化技术会自动选择。