最近在GitHub上完成了一个关于Python的项目。一个叫“木辰”的贡献者把一个很有意思的Python项目翻译成了中文。本项目是《What the f*ck Python!》,致力于介绍Python中那些奇怪的语言坑。关于项目项目的主要部分是一个例子。分为5个部分,分别是:动脑筋!/动脑筋!外表是骗人的!/外表是不可靠的!小心地雷!/小心地雷!宝物!/隐藏的宝藏!Miscellaneous/杂项及以上,共51个例子。每个例子的结构都是一样的,取“Mutatingtheimmutable!([1,2],[3,4],[5,6])然后,给出输出(Python版本):>>>some_tuple[2]="changethis"TypeError:'tuple'objectdoesnotsupportitemassignment>>>another_tuple[2].append(1000)#这里没有错误>>>another_tuple([1,2],[3,4],[5,6,1000])>>>another_tuple[2]+=[99,999]TypeError:'tuple'对象不支持项目赋值>>>another_tuple([1,2],[3,4],[5,6,1000,99,999])然后,简要描述意外输出的后果,在这个例子中:我认为元组是不可变的......接下来解释这个例子,简要描述发生了什么和为什么。如有必要,还会提供示例。在此示例中,它是这样的:参考https://docs.python.org/2/reference/datamodel.html不可变序列一旦创建,不可变序列的对象就不能更改。(如果该对象包含对其他对象的引用,则那些其他对象可能是可变的并且可能是e修改;但是,不能更改不可变对象直接引用的对象集合。)+=运算符就地修改列表。元素赋值不起作用,但当抛出异常时,元素已就地修改。有些地方贡献者也会给出翻译说明,比如整个例子中:对于不可变对象,这里指的是元组,+=不是原子操作,而是extend和=两个动作,虽然这里的=操作会抛出异常,但是扩展操作修改成功。还有50个例子,等你看~怎么用?当然,学习如何使用此资源。项目贡献者在使用部分注明最好按顺序阅读下面的示例。然后,当您浏览每个示例时,请执行以下操作:浏览设置示例最开头的代码。读取输出。确认结果如您所料。确保您知道这背后的基本原理。如果您不知道,请深呼吸并阅读说明(如果您仍然不明白,请不要沉默!随时提问)。如果这样做,请奖励自己并继续下一个示例。另外,也可以在命令行阅读WTFpython,有pypi包和npm包(支持代码高亮),不过都是英文的。关于作者本项目的原作者是一位名叫SatwikKansal的印度小哥。根据GitHub上的介绍,他是深度学习和去中心化应用领域的“老司机”。目前英文版资源有8.3kstars。传送门中文版:https://github.com/leisurelicht/wtfpython-cn英文原版:https://github.com/satwikkansal/wtfpython
