AI-story-resized.jpg
Python中的赋值语句就是把对象赋值给变量,基本形式是在等号左侧写赋值语句的目标,要赋值的对象则位于等号右侧;等号左侧是对象或对象组件,等号右侧可以是任何通过计算能得到对象的表达式;赋值语句总是创建对象的引用,而不是复制对象;
Python3中赋值语句有如下形式:
赋值语句形式:
image.png
1:基础形式
>>> s='ixusy88'
>>> s
'ixusy88'
>>>
2:元组赋值
>>> (s1,s2) = ('123','abc')
>>> s1,s2
('123', 'abc')
>>>
#也可以不需要括号()
>>> s1,s2 = '111','cccc'
>>> s1,s2
('111', 'cccc')
>>>
# 左边与右边的元素个要一致,不然会报错,如下:
>>> s1,s2 = '111','222','333'
Traceback (most recent call last):
File "", line 1, in
s1,s2 = '111','222','333'
ValueError: too many values to unpack (expected 2)
>>>
3:列表赋值
>>> [a,b] = ['123','abc']
>>> a,b
('123', 'abc')
>>>
#
>>> a,b = ['123','abc']
>>> a,b
('123', 'abc')
>>>
# 等号右边可以是元组
>>> [a,b] = '123','abc'
>>> a,b
('123', 'abc')
# 等号 两边元素需要一致
>>> [a,b,c] = ['123','abc']
Traceback (most recent call last):
File "", line 1, in
[a,b,c] = ['123','abc']
ValueError: not enough values to unpack (expected 3, got 2)
>>> [a,b] = ['123','abc','444']
Traceback (most recent call last):
File "", line 1, in
[a,b] = ['123','abc','444']
ValueError: too many values to unpack (expected 2)
>>>
4:序列赋值
>>> a,b,c,d = '1234'
>>> a,b,c,d
('1', '2', '3', '4')
>>>
# 等号两边元素要一致
>>> a,b,c,d = '123'
Traceback (most recent call last):
File "", line 1, in
a,b,c,d = '123'
ValueError: not enough values to unpack (expected 4, got 3)
>>> a,b,c = '1234'
Traceback (most recent call last):
File "", line 1, in
a,b,c = '1234'
ValueError: too many values to unpack (expected 3)
>>>
5:序列解包
# 带星号的名称,会被赋值一个列表,该列表收集了序列中剩下的没被赋值给其他名称的所有项
>>> a,*b = 'ixusy88'
>>> a,b
('i', ['x', 'u', 's', 'y', '8', '8'])
>>> a,*b,c = 'ixusy88'
>>> a,b,c
('i', ['x', 'u', 's', 'y', '8'], '8')
>>>
>>> a,*b = [1,2,3,4]
>>> a,b
(1, [2, 3, 4])
>>> a,*b,c = [1,2,3,4,5]
>>> a,b,c
(1, [2, 3, 4], 5)
>>>
>>> a,*b,c = range(5)
>>> a,b,c
(0, [1, 2, 3], 4)
>>> a,*b,c = [1,2,3]
>>> a,b,c
(1, [2], 3)
>>>
6:多目标赋值
# 三个变量指向了同一个对象
>>> a=b=c = 'ixusy88'
>>> a,id(a)
('ixusy88', 2197246939464)
>>> b,id(b)
('ixusy88', 2197246939464)
>>> c,id(c)
('ixusy88', 2197246939464)
>>>
7:增量赋值
增量赋值语句有:
x += y x &= y x -= y x |= y
x *= y x ^= y x /= y x >>= y
x %= y x<<= y x **= y x //= y
# "+=" 对列表而言是在原位置修改:
a = [1,2,3]
b = [3,4,5]
print('1----',id(a),a)
print('2----',id(b),b)
a+=b
print('3----',id(a),a)
print('*'*10)
# "+" 是拼接,会产生新的对象:
x = [10,20,30]
y = [30,40,50]
print('4----',id(x),x)
print('5----',id(y),y)
x = x + y
print('6----',id(x),x)