python基础 21 专题 赋值语句

181 阅读1分钟

a=10 等号右边给左边赋值

f76f9d9f9fbbfa5049d3ce24c497022.png

一 序列赋值

a,b=1,2 
[a,b]=[1,2] 
# 本质是(1,2) 给(a,b) 每个元素的位置一一对应
1. 不能多给值 
2. 也不能少给 
==================== 

高级形式: s='hehe' 
利用切片 
(a,b),c=s[:2],s[2:] # h e he 
a,b,c=range(3) 

3. 非序列不能参与序列赋值 
(a,b)=100 # 报错 
a=(100,200) # 一般赋值 
(a,b),c=range(3) # 无论range中参数为何值都不成立 

序列分割问题:(切片) 
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 [] 

二 扩展的序列解包

a,*b=1,2,3 
1. *b可以接受多个值(可以不给值) 
2. *b打包成列表 
3. *b优先级较低,优先分配其他值 
4. 如发生命名冲突,则会使用较靠后的变量名 
    a,b,*b=1,2,3 
    print(a,b) 
5. 不可以同时出现多个* 

序列分割问题 
l=[1,2,3,4] 
while l: 
    font,*l=l 
    print(font,l) 
    
1 [2, 3, 4] 
2 [3, 4] 
3 [4] 
4 [] 

三 多目标赋值语句

a=b=c=10 
被解析为: 
c=10 b=c a=b 

四 增强赋值语句

+= -= *= /= //= %= **= >>= <<= &= ^= |= 
a+=1 相当于 a=a+1 两者的实现方式完全不一样 

五 增强赋值运算的优点

1. 减少程序员输入的代码量 
2. 减少代码的冗余 
3. 运算效率高于普通运算 
弊端: 增强赋值运算是线程不安全的