GitHub 标星 1.8w+:What the fuck Python?!

FightingCoder

共 1764字,需浏览 4分钟

 ·

2020-01-07 23:22

阅读本文大概需要 5 分钟。


转自公众号量子位,作者乾明一个名为 “暮晨” 的贡献者,把一个非常有趣的 Python 项目,翻译成了中文版。这个项目是《What the fuck Python!》,专门介绍 Python 里面那些奇奇怪怪的语言坑。5e10b66f6a32a58d610ac49230c04599.webp关于项目
项目的主体构成部分就是示例,一共分为 5 个部分,分别是:Strain your brain!/ 大脑运动!5daee92d4cfffec54524a915799fa0d5.webpAppearances are deceptive!/ 外表是靠不住的!5464db7f7aa7f797dc038b44fdd3ea61.webpWatch out for the landmines!/ 小心地雷!b3d304403f701b60d1e9181cac0701c2.webpThe Hidden treasures!/ 隐藏的宝藏!5bc72ed98bae64052b72e6096901ff17.webpMiscellaneous / 杂项891be446bf659c3f78609b3184382653.webp以上,总计 51 个示例。每一个示例的结构都是一样的,以 “Mutating the immutable!/ 强人所难” 为例:首先,会给出代码:
some_tuple = ("A""tuple""with""values")
another_tuple = ([12], [34], [56])
然后,给出 Output( Python version):
>>> some_tuple[2] = "change this"
TypeError: 'tuple' object does not support item assignment
>>> another_tuple[2].append(1000# 这里不出现错误
>>> another_tuple
([12], [34], [561000])
>>> another_tuple[2] += [99999]
TypeError: 'tuple' object does not support item assignment
>>> another_tuple
([12], [34], [56100099999])
然后,对意外输出的结果进行简短的描述,在这个示例中,就是:
我还以为元组是不可变的呢…
接下来,就会对示例进行说明,简要叙述发生了什么以及为什么会发生。如有必要,也会举例说明。在这个示例中是这样的:
  • 引用
    https://docs.python.org/2/reference/datamodel.html

不可变序列 不可变序列的对象一旦创建就不能再改变。(如果对象包含对其他对象的引用,则这些其他对象可能是可变的并且可能会被修改;但是,由不可变对象直接引用的对象集合不能更改。)
  • += 操作符在原地修改了列表。元素赋值操作并不工作,但是当异常抛出时,元素已经在原地被修改了。

有些地方,贡献者还会给出译注,比如整个示例中就是:
对于不可变对象,这里指 tuple, += 并不是原子操作,而是 extend 和 = 两个动作,这里 = 操作虽然会抛出异常,但 extend 操作已经修改成功了。
其他还有 50 个示例,等你来看~怎么使用?当然,要学习一下怎么使用这个资源。项目贡献者在用法部分表示,最好依次阅读下面的示例。然后,在阅读每一个示例的时候,这样做:
仔细阅读设置例子最开始的代码。阅读输出结果。确认结果是否如你所料。确认你是否知道这背后的原理。如果不知道,深呼吸然后阅读说明 (如果你还是看不明白,别沉默!可以提问题)。如果知道,给自己点奖励,然后去看下一个示例。
此外,还可以在命令行阅读 WTFpython,有 pypi 包 和 npm 包 (支持代码高亮),不过都是英文版的。关于作者这个项目的原作者,是一个名为 Satwik Kansal 的印度小哥。b98c402d69e9e0ff8654e138adb93b53.webpGitHub 上的介绍称,在深度学习和去中心化应用方面是一个 “老司机”。传送门
中文版:
https://github.com/leisurelicht/wtfpython-cn英文原版:
https://github.com/satwikkansal/wtfpython

推荐阅读

1

Python 中更优雅的日志记录方案

2

别再造假数据了,来试试 Faker 这个库吧!

3

200 行代码实现一个滑动验证码

4

如何用一条命令将网页转成电脑 App


好文和朋友一起看~
浏览 47
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报