赋值语句

1. 赋值语句的重要特征

  • 赋值语句建立对象引用值,而不是复制对象
  • 变量名在首次使用时会被创建
  • 变量名在使用前必须先复制

2. 赋值语句的形式

  • 基本形式
spam = 'spam'
  • 序列赋值语句

任何变量名的序列都可以赋值给任何值的序列,而Python会按位置一次赋值一个元素。

# 元组和列表的分解赋值
# 同时建立了两个对象spam和ham
## 元组
spam, ham = 'yum', 'YUM'
## 列表
[spam, ham]  = ['yum', 'YUM']
# 元组、列表赋值语句可以通用
此时,等式两端元素和对象数目要相同
## 元组&列表
spam, ham = ['yum', 'YUM']
## 列表与元组
[spam, ham]  = 'yum', 'YUM'
## 元组与字符串 
a, b, c, d = 'spam' # a = 's'  b= 'p' c = 'a' d = 'm'
## 列表与字符串 
[a, b, c, d] = 'spam' # a = 's'  b= 'p' c = 'a' d = 'm'
# 赋值嵌套序列
(a, b), c = ('sp', 'am') # a = 's' b = 'p' c = 'am'
# 整数
a, b, c = range(3) 
  • 扩展序列解包
# 对字符串
a, *b = 'spam' # a = 's' b = ['p', 'a', 'm']
*a, b = 'spam' # a = ['s', 'p', 'a'] b = 'm'
# 对列表
L= [1, 2, 3, 4]
a, *b = L
# 需注意的细节
a, b, d, e, *c = [1, 2, 3, 4] # a = 1, b= 2, c = [], d = 3, e = 4 
a, b, *c, d, e = [1, 2, 3, 4] # a = 1, b= 2, c = [], d = 3, e = 4
*a, = [1, 2, 3, 4] # a = [1, 2, 3, 4]
# * a = [1, 2, 3, 4] 在python中是错误的
  • 多重目标赋值

这里只建立了一个对象。

a = b = 1
a +=1
a, b # a = 2, b = 1
# 数字不支持原地修改,修改b只会对b发生变化 
a = b = [1, 2, 3]
b.append(4)
a, b # a = [1, 2, 3, 4], b = [1, 2, 3, 4]
  • 增强赋值运算
a += 1 # a = a + 1
## 增强赋值运算对原对象进行修改,而没有产生新的对象
Previous     Next Xu Kuang /
Published under (CC) BY-NC-SA in categories 技术篇  tagged with python