# Python——赋值语句

3678人阅读 评论(0)

【1】.一行的结束就是终止该行语句（没有分号）。

【2】.嵌套语句是代码块并且与实际的缩进相关（没有大括号）

=======================================================================================

 运算 解释 spam='Spam' 基本形式 spam,ham = 'yum','YUM' 元组赋值运算（位置性） [spam,ham]=['yum','YUM'] 列表赋值运算（位置性） a,b,c,d='spam' 序列赋值运算，通用性 a,b,c = [1,2,3] a,*b = 'spam' 扩展的序列解包（Python3.0） spam = ham = 'lunch' 多目标赋值运算 spams += 42 增强赋值运算（相当于spams = spams + 42）
-------------------------------------------------------------------------------------------------------------------------------------------------------

>>> nudge = 1
>>> wink =2
>>> A,B = nudge,wink
>>> A,B
(1, 2)
>>> [C,D] = [nudge,wink]
>>> C,D
(1, 2)
>>> nudge = 1
>>> wink =2
>>> nudge,wink = wink,nudge
>>> nudge,wink
(2, 1)

>>> [a,b,c]=(1,2,3)
>>> a,c
(1, 3)
>>> (a,b,c)='ABC'
>>> a,c
('A', 'C')
-------------------------------------------------------------------------------------------------------------------------------------------------------

>>> string = 'SPAM'
>>> (a,b),c=string[:2],string[2:]
>>> a,b,c
('S', 'P', 'AM')

>>> red,green,blue = range(3)
>>> red,blue
(0, 2)

>>> L=[1,2,3,4]
>>> while L:
front,L = L[0],L[1:]
print(front,L)

1 [2, 3, 4]
2 [3, 4]
3 [4]
4 []
-------------------------------------------------------------------------------------------------------------------------------------------------------
Python3.0中的扩展序列解包

a匹配序列中的第一项，b匹配剩下的内容：

>>> seq = [1,2,3,4]
>>> a,*b = seq
>>> a
1
>>> b
[2, 3, 4]
b匹配序列的最后一项，a匹配最后一项之前的所有内容：
>>> *a,b=seq
>>> a
[1, 2, 3]
>>> b
4

>>> a,*b,c = seq
>>> a,
(1,)
>>> b
[2, 3]
>>> c
4

>>> a,b,*c = seq
>>> a
1
>>> b
2
>>> c
[3, 4]

>>> a,*b = 'spam'
>>> a,b
('s', ['p', 'a', 'm'])
>>> a,*b,c = 'spam'
>>> a,b,c
('s', ['p', 'a'], 'm')
Python3.0有了这一扩展，我们处理前面一个小节最后一个例子的列表变得容易得多了：
>>> L=[1,2,3,4]
>>> while L:
front,*L = L
print(front,L)

1 [2, 3, 4]
2 [3, 4]
3 [4]
4 []
-------------------------------------------------------------------------------------------------------------------------------------------------------

>>> seq
[1, 2, 3, 4]
>>> a,b,c,*d = seq
>>> print(a,b,c,d)
1 2 3 [4]

>>> a,b,c,d,*e = seq
>>> print(a,b,c,d,e)
1 2 3 4 []

-------------------------------------------------------------------------------------------------------------------------------------------------------

for(a,*b,c) in [(1,2,3,4),(5,6,7,8)]:
...

a,*b,c = (1,2,3,4)  # b gets [2,3]
=======================================================================================

>>> a = b = c = 'spam'
>>> a,b,c
('spam', 'spam', 'spam')
>>> a is b is c
True

>>> a = 'spam'
>>> b =a
>>> c = a
-------------------------------------------------------------------------------------------------------------------------------------------------------

>>> a = b = 0
>>> a += 1
>>> a,b
(1, 0)
>>> a = b = []
>>> a.append('test')
>>> a,b
(['test'], ['test'])

=======================================================================================

x+=y
x*=y
x%=y
x&=y
x^=y
x<<=y
x-=y
x/=y
x**=y
x|=y
x>>=y
x//=y

1.程序员输入减少
2.左侧只需计算一次。在完整形式x = x+y中，x出现两次，必须执行两次。因此，增强赋值语句通常执行得更快。
3.优化技术会自动选择。对于支持在原处修改的对象而言，增强形式会自动执行原处的修改运算，而不是相比来说速度更慢的复制。

0
0

【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐（算法+实战）--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：337590次
• 积分：5294
• 等级：
• 排名：第5105名
• 原创：152篇
• 转载：39篇
• 译文：5篇
• 评论：46条
Contact me
GitHub
博客专栏
 JavaWeb框架 文章：6篇 阅读：13754
 XML 文章：7篇 阅读：26169
 Servlet 文章：24篇 阅读：60763
 Python3 文章：44篇 阅读：75904
最新评论