python 赋值魔法

1. 序列解包

# 同时给多个变量赋值
x, y, z = 1, 2, 3
print(x, y, z)

# 交换变量的值
x, y = y, x
print(x, y, z)

# 返回元组
values = 1, 2, 3
print(values)

# 解包到三个变量中
x, y, z = values
print(x, y, z)

# 解包字典到键值变量
key, value = {'name': 'zenos', 'age': 22}.popitem()
print(key, value)

# 序列包含的元素个数必须和等号左边的相同
# x, y, z = 1, 2

# 使用*星号运算符, 接收来自多余的值
a, b, *rest = [1, 2, 3, 4, 5]
print(a, b, rest)

# 将*放在中间
a, *rest, b = 'Albus Percival Wulfric Brian Dumbledore'.split()
print(a, rest, b)

# 将*放在最前
*rest, a, b = 'Albus Percival Wulfric Brian Dumbledore'.split()
print(rest, a, b)

# 解包其他序列
a, b , *rest = 'abcdef'
print(a, b, rest)
========================1=========================
1 2 3
2 1 3
(1, 2, 3)
1 2 3
age 22
1 2 [3, 4, 5]
Albus ['Percival', 'Wulfric', 'Brian'] Dumbledore
['Albus', 'Percival', 'Wulfric'] Brian Dumbledore
a b ['c', 'd', 'e', 'f']

2. 链式赋值

x = y = [1, 2, 3]
print(x is y)

# 等价于
x = [1, 2, 3]
y = x
print(x is y)

# 不等价
x = [1, 2, 3]
y = [1, 2, 3]
print(x is y)
========================2=========================
True
True
False

3. 增强赋值

x = 2
x += 1
x *= 2
print(x)
print((2+1)*2)

# 其他序列解包
fnord = 'foo'
fnord += 'bar'
fnord *= 2
print(fnord)

========================3=========================
6
6
foobarfoobar
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,859评论 2 9
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,144评论 1 32
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,629评论 1 118
  • 我一直觉得自己执行力还可以,属于那种有什么想法都想记录下来的那种。可是最近,却一直懒得动笔。 是没有想法吗?恰恰不...
    山东大妞0525阅读 327评论 0 0
  • 善良也要锋芒 你当善良,且有力量,你的善良必须有点锋芒,否则等于零。一个人越是善良,待人的底线应该越高一点。这样才...
    孤旅NI阅读 406评论 0 0