GitHub 標星 1.8w+:What the fuck Python?!
“
關于項目
項目的主體構成部分就是示例,一共分為 5 個部分,分別是:Strain your brain!/ 大腦運動!
Appearances are deceptive!/ 外表是靠不住的!
Watch out for the landmines!/ 小心地雷!
The Hidden treasures!/ 隱藏的寶藏!
Miscellaneous / 雜項
以上,總計 51 個示例。每一個示例的結構都是一樣的,以 “Mutating the immutable!/ 強人所難” 為例:首先,會給出代碼:
GitHub 上的介紹稱,在深度學習和去中心化應用方面是一個 “老司機”。傳送門
中文版:
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])
我還以為元組是不可變的呢…接下來,就會對示例進行說明,簡要敘述發(fā)生了什么以及為什么會發(fā)生。如有必要,也會舉例說明。在這個示例中是這樣的:
引用
https://docs.python.org/2/reference/datamodel.html
不可變序列 不可變序列的對象一旦創(chuàng)建就不能再改變。(如果對象包含對其他對象的引用,則這些其他對象可能是可變的并且可能會被修改;但是,由不可變對象直接引用的對象集合不能更改。)
+= 操作符在原地修改了列表。元素賦值操作并不工作,但是當異常拋出時,元素已經在原地被修改了。
對于不可變對象,這里指 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??
評論
圖片
表情
