GitHub 标星 1.8w+:What the fuck Python?!
FightingCoder
共 1764字,需浏览 4分钟
· 2020-01-07
“
项目的主体构成部分就是示例,一共分为 5 个部分,分别是:Strain your brain!/ 大脑运动!Appearances are deceptive!/ 外表是靠不住的!Watch out for the landmines!/ 小心地雷!The Hidden treasures!/ 隐藏的宝藏!Miscellaneous / 杂项以上,总计 51 个示例。每一个示例的结构都是一样的,以 “Mutating the immutable!/ 强人所难” 为例:首先,会给出代码:
中文版:
https://github.com/leisurelicht/wtfpython-cn英文原版:
https://github.com/satwikkansal/wtfpython
阅读本文大概需要 5 分钟。
项目的主体构成部分就是示例,一共分为 5 个部分,分别是:Strain your brain!/ 大脑运动!Appearances are deceptive!/ 外表是靠不住的!Watch out for the landmines!/ 小心地雷!The Hidden treasures!/ 隐藏的宝藏!Miscellaneous / 杂项以上,总计 51 个示例。每一个示例的结构都是一样的,以 “Mutating the immutable!/ 强人所难” 为例:首先,会给出代码:
some_tuple = ("A", "tuple", "with", "values")然后,给出 Output( Python version):
another_tuple = ([1, 2], [3, 4], [5, 6])
>>> some_tuple[2] = "change this"然后,对意外输出的结果进行简短的描述,在这个示例中,就是:
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 操作已经修改成功了。其他还有 50 个示例,等你来看~怎么使用?当然,要学习一下怎么使用这个资源。项目贡献者在用法部分表示,最好依次阅读下面的示例。然后,在阅读每一个示例的时候,这样做:
仔细阅读设置例子最开始的代码。阅读输出结果。确认结果是否如你所料。确认你是否知道这背后的原理。如果不知道,深呼吸然后阅读说明 (如果你还是看不明白,别沉默!可以提问题)。如果知道,给自己点奖励,然后去看下一个示例。此外,还可以在命令行阅读 WTFpython,有 pypi 包 和 npm 包 (支持代码高亮),不过都是英文版的。关于作者这个项目的原作者,是一个名为 Satwik Kansal 的印度小哥。GitHub 上的介绍称,在深度学习和去中心化应用方面是一个 “老司机”。传送门
中文版:
https://github.com/leisurelicht/wtfpython-cn英文原版:
https://github.com/satwikkansal/wtfpython
推荐阅读
1
2
3
4
评论
微软开源MS-DOS操作系统源码,冲到GitHub第一了!
大家好,我是轩辕。这两天逛GitHub的时候,突然发现一个叫 MS-DOS的项目冲到Trending榜首了!定睛一看,微软官方啊,搜了一下才知道,原来前两天,微软把MS-DOS 4.0系统开源了!关于这个系统,估计现在很多程序员都不知道了,或者只在古老的教科书上看过这玩意儿。MS-DOS,全称为Mi
编程技术宇宙
6
谷歌员工爆料Python基础团队原地解散
机器之心报道编辑:蛋酱什么?谷歌解雇了整个 Python 基础团队?「当与你直接共事的每个人,包括你的主管,都被裁员 —— 哦,是职位被削减,而你被要求安排他们的替代者入职,这些人被告知在不同的国家担任同样的职位,但他们并不为此感到高兴,这是很艰难的一天。」发布这一动态的 Thomas Wouter
机器学习初学者
0
【Python】coverage,一个有趣的 Python 库!
大家好,今天为大家分享一个有趣的 Python 库 - coveragepy。Github地址:https://github.com/nedbat/coveragepy在软件开发中,测试是确保代码质量和稳定性的关键步骤之一。而代码覆盖率则是衡量测试覆盖代码的程度的重要指标之一。Python cove
机器学习初学者
0
【Python】Python加速运行技巧
Python 是一种脚本语言,相比 C/C++ 这样的编译语言,在效率和性能方面存在一些不足。但是,有很多时候,Python 的效率并没有想象中的那么夸张。本文对一些 Python 代码加速运行的技巧进行整理。 0. 代码优化原则 本文会介绍不少的 Python 代码加速运行的技巧。在深入代码优化细
机器学习初学者
0
使用 GitHub Actions 构建 Golang PGO
今年 2 月,我宣布 Dolt 版本现已构建为配置文件引导优化 (pgo) 二进制文件,利用 Golang 1.20 的强大功能将 Dolt 的读取性能提高 5.3%。在我宣布这一消息之前,我们的一位常驻 Golang 专家 Zach 试验并测试了 Golang 的 pgo 功能
GoCN
0
Python列表知识应知应会
点击上方“Go语言进阶学习”,进行关注回复“Go语言”即可获赠从入门到进阶共10本电子书今日鸡汤只在此山中,云深不知处。一、前言 在Python程序开发中,列表(List)经常会使用。假设一个班里有50个学生现需要统计每一个学生的总成绩情况,如果不使用列
Go语言进阶学习
0
Python 字符串应该用双引号还是单引号?
转载来源:洪尔摩斯PyCharm升级至 2023.2版本后,经常弹出来一个提示问我要不要试一下Black formatter。试了一下,这个Black formatter 很有个性,特别喜欢换行。我的一个文件用PyCharm自带的代码整理器整理完之后是500行左右,然后再用Black整理就变成600
菜鸟学Python
0
delorean,一个超级实用的 Python 库!
作者通常周更,为了不错过更新,请点击上方“Python碎片”,“星标”公众号大家好,今天为大家分享一个超级实用的 Python 库 - delorean。Github地址:https://github.com/myusuf3/delorean/时间在计算机科学和软件开发中是一个至关重要的概念。Pyt
Python 碎片
0