其他
GitHub 标星 1.9W+:What the fuck Python?!
重磅干货,第一时间送达
关于项目
another_tuple = ([1, 2], [3, 4], [5, 6])
TypeError: 'tuple' object does not support item assignment
>>> another_tuple[2].append(1000) # 这里不出现错误
>>> another_tuple
([1, 2], [3, 4], [5, 6, 1000])
>>> another_tuple[2] += [99, 999]
TypeError: 'tuple' object does not support item assignment
>>> another_tuple
([1, 2], [3, 4], [5, 6, 1000, 99, 999])
我还以为元组是不可变的呢…
引用
https://docs.python.org/2/reference/datamodel.html
不可变序列 不可变序列的对象一旦创建就不能再改变。(如果对象包含对其他对象的引用,则这些其他对象可能是可变的并且可能会被修改;但是,由不可变对象直接引用的对象集合不能更改。)
+= 操作符在原地修改了列表。元素赋值操作并不工作,但是当异常抛出时,元素已经在原地被修改了。
对于不可变对象,这里指 tuple, += 并不是原子操作,而是 extend 和 = 两个动作,这里 = 操作虽然会抛出异常,但 extend 操作已经修改成功了。
怎么使用?
仔细阅读设置例子最开始的代码。 阅读输出结果。 确认结果是否如你所料。 确认你是否知道这背后的原理。 如果不知道,深呼吸然后阅读说明 (如果你还是看不明白,别沉默!可以提问题)。 如果知道,给自己点奖励,然后去看下一个示例。
关于作者
传送门
https://github.com/leisurelicht/wtfpython-cn
https://github.com/satwikkansal/wtfpython
来和上万名读者一起见证彼此成长!
扫描下方二维码,添加杰哥微信,备注:地区/城市-职业方向/学校-昵称
,即可加入杰哥的IT之旅读者群
,群内仅供学习交流、日常互动、资源分享、经验分享等,一定要记得备注,我会尽快通过好友验证的。
👆长按识别,添加微信
(添加人数较多,请耐心等待)
本公众号全部博文已整理成一个目录,请在公众号后台回复「m
」获取!
推荐阅读:(点击如下标题即可跳转)
1、这嘎哒真TM那啥!东北话编程火爆网络,谷歌工程师重磅推出!
2、如何在 GitHub 上面精准搜索开源项目?
3、99 年妹子开发吊打百度网盘的开源神器!
4、只需一行代码,你的纯文本秒变 Markdown
5、GitHub 标星 2.5K+!教你通过玩游戏的方式学习 VIM!
6、为什么要学习 Markdown?究竟有什么用?