赋值的特性
赋值语句建立对象引用
变量名在首次赋值时会被创建
变量名在引用前必须先赋值
赋值语句的形式
序列赋值
>>> A, B = 1, 2
>>> print(A, B)1 2
View Code
在上面的例子中,写了两个元组,只是省略了它们的括号。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"", line 1, in ValueError: too many values to unpack (expected3)>>>
View Code
通过上面的例子,右边元素的数目还要是要跟左边的变量数目相同,不然会产生错误
扩展解包赋值
>>> a, b = 'spam'Traceback (most recent call last):
File"", line 1, in ValueError: too many values to unpack (expected2)>>> 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
View Code
一个带星号的变量名 ,收集了序列中没有赋值给其他名称的所有项
增强赋值语句
>>> x = 1
>>> x +=1
>>> print(x)2
View Code
增强赋值语句有三个优点:减少输入;左侧只需要计算一次,在完整形式的x = x+1中,x出现两次,必须执行两次;优化技术会自动选择。