各個編程語言都有哪些「黑點」?

本題目純粹從好玩的角度提問,並沒有惡意。

主要想問問,在程序員的鄙視鏈中,各個語言被黑,具體有哪些原因,有哪些黑點呢?
以至於為程序員們互黑時津津樂道呢?
又有哪個語言處於比較dominant的地位,黑點最少呢?


想起來自己之前在某個地方看到的一張巨大的JavaScript真值表,覺得十分有趣就照著擼了一個在線的。

大概長這樣兒:

然後就可以發現一些神奇的結論比如:

[] &>= [] // true
[] &<= [] // true [] == [] // false null &>= false // true
null &<= false // true

感興趣可以去 這裡 -&> Oh my dear JavaScript 愉快的玩耍


Holy Javascript


圖源見水印,侵刪。

解釋一下:
Python: 各種庫,庫裡面什麼都有

Java: 長長長長長長長

Assembly: 彙編語言

C: 。

C++: 解釋見評論區

Unix Shell: 完(hun)整(luan)的許可權管理

Latex: 就是個排版系統(知乎也有)

HTML: 日常黑2333 (黑它不是程序語言╮(╯▽╰)╭)

//更新一個最近翻 Stackoverflow 偶然間看到的

來源:What causes signal #x27;SIGILL#x27;?

以下為翻譯:

問:怎樣解決在導出C艹到Android時出現的「SIGILL"錯誤?


高票回答:

現在能用了。我是這樣解決的:
1.在滿月的晚上埋葬一隻死貓
2.重啟Android模擬器
我並沒有確認過是否兩個步驟都是必須的。如果並不是,我也不能確認哪個是多餘的。

答案評論區:

Bartek Skwira: 重啟部分似乎是多餘的
Josh Sanford: 貓應該是什麼顏色的?
David Thomley: 如果貓穿了褲子怎麼辦?


  1. C:void**** → Segment fault
  2. C++:template&
  3. ObjC:outputImageProviderFromBufferWithPixelFormat:pixelsWide:pixelsHigh:baseAddress:bytesPerRow:releaseCallback:releaseContext:colorSpace:shouldColorMatch
  4. Java:HasThisTypePatternTriedToSneakInSomeGenericOrParameterizedTypePatternMatchingStuffAnywhereVisitor
  5. C#:微軟出的
  6. JS:1+"2" == 12
  7. Lisp:(((()()()())((()))))
  8. Haskell:A monad is just a monoid in the category of endofunctors, what"s the problem?
  9. Python:遊標卡尺
  10. PHP:$
  11. OCaml:+.
  12. Rust:聽說這個語言沒法實現鏈表? @劉雨培

另,改編下 @Kimmy Leo 的文

  1. 我們希望 JavaScript 是 Static Typing,至少也得是 Go 那樣的 Structural Typing。
  2. 我們希望 C 和 Go 有 Generic。就像 Java 那樣。
  3. 我們希望 Java 有 Refined Generic。就像 C# 那樣。
  4. 我們希望 C# 的 Generic 能更加強大,比如有 Parameter Pack、支持 HKT 等。就像 C++ 那樣。
  5. 我們希望 C++ 有 Concept,有 Template Type Deduction,有 Any、Optional 和 Variant。就像 Haskell 那樣。
  6. 我們希望 Haskell 有 First-class Polymorphism,有 GADT,有 Existential,有 Type Family,最好還能支持下 Dependent。
  7. 最後我們把 Haskell 編譯到了 JS。

  • Java: 一個能把小項目做成中等項目,中等項目做成大項目的語言
  • Python:一代更比一代慢,看書附帶游標尺……
  • 彙編:其實我只是助記符
  • Rust: 論 trait list的寫法: Vec&&>&>&>。還有Rust寫起來程序就感覺自己在咆哮啊啊啊println!
  • C++: 原來你什麼(feature)都想要……
  • Fortran:引用傳遞好玩么?
  • Perl: 天啟式的神秘語言,非常有助於對鍵盤上那些特殊符號鍵位的掌握。
  • LISP: 括弧括弧還是括弧
  • Node.js: callback hell..
  • Html/CSS: 恩?對不起,亂入了,這是討論程序語言的地方
  • PHP: 最後說的,總是最好的

----------------
補充一個:

  • 說來也很神奇,我在寫上面這些的時候,真的是一點點都沒有想到... 那個C什麼來著?我又忘了^_^。


現在不能安裝插件的Xcode 8如果沒有自動完成功能的話,不知道要手打多長一串...


一個顧客走進一家牛排店,要一塊牛排:
C:服務員牽來一頭牛,給了顧客一把大刀,笑道,請享用!
C++:服務員牽來一頭牛,給了顧客主廚刀、削皮刀、剔骨刀、片刀、砍刀、美工刀……堆滿在桌上,笑道,請享用!顧客一臉懵逼,但看到鄰桌的老大爺用揮舞雙截棍的姿勢使用美工刀切出一塊完美的牛排,於是也模仿起來。後來他住院了。
Java:服務員端上牛排和餐具,顧客正要享用,服務員開始介紹吃牛排的步驟,事無巨細,喋喋不休,說了三個小時顧客才能開始切牛排。
還是Java:服務員端上牛排和餐具,笑道,請享用!顧客吃了起來。吃得正開心,突然服務員大吼一聲,停!一隊清潔工走到顧客身邊開始打掃衛生,吸地擦桌,好不熱鬧,過了好一會兒,服務員才說,請繼續享用!
C#:這間餐館和之前某家看起來一模一樣,但是到處都貼著大大小小的橫幅:我們這家比隔壁那家好。
Python:服務員端上牛排和餐具,並附上一把遊標卡尺,叮囑顧客要嚴格按照某個尺寸吃,否則會食物中毒甚至死亡。
Ruby:服務員聽說顧客要牛排,帶著顧客出了門。顧客不明所以,被領到一條鐵軌上,服務員說,請您坐在鐵軌上,才能吃我們家的牛排,謝謝。
Swift:服務員端上牛排和餐具,笑道,請享用!顧客吃得正開心,服務員又端來一塊牛排,笑道,我們有新的牛排,請您務必吃下,但食用前請將你您剛吃下的牛排吐乾淨。
JavaScript:服務員端上一塊豬排,笑道,您閉上眼睛吃,想著它是牛排,它吃起來就跟牛排一模一樣!
Objective-C:顧客點菜時發現每道菜的名字都有一兩頁長,而且服務員非要聽全名否則不給點,最後顧客點了一個璃瑩殤·安潔莉娜·櫻雪羽晗靈·血麗魑·魅·J·Q·安塔利亞·傷夢薰魅·海瑟薇·薔薇玫瑰淚·羽靈·邪兒·凡多姆海威恩·夏影·琉璃舞·雅·蕾玥璦雅·曦夢月·玥藍·嵐櫻·紫蝶·麗馨·蕾琦洛·鳳·顏鳶·希洛·玖兮·雨煙·葉洛莉蘭·凝羽冰·淚伊如冰落·殤心櫻語冰凌伊娜·洛麗塔紫心愛·蝶夢如璃紫陌悠千艷·優花夢冰玫瑰靈傷如愛·晶淚墨陽雲筱殘傷雅·琉璃愛夢蓮淚·冰雪殤璃陌夢·愛櫻沫渺·落璃琴依語·千夢然絲傷·可薇·茉殤黎·幽幻紫銀·淚如韻影傾樂蘭慕·冰雪殤璃陌夢·凝羽冰藍璃·淚伊如琉璃愛夢蓮淚·冰雅淚落冰紫蝶夢·殤心櫻語冰凌伊蝶夢如·璃紫陌悠千艷優墨陽雲筱殘·雪蓮茉·伊文思·蕊夏清·碎墨音·芊樂夢黛怡·墨麗莎·夢靈蘇魅香·紫藍幽幻傾城萌美迷離·茉莉白嫩愛鳳風魑·殤淚花如霜夢蘭·蘿莉心夢妖麗百千艷·瑰百合香珠合夢喃·淚傷夢雅愛之瑰·墨艷黎幻殤雪倩夢·情娜血清戀沫幽彌千月緋心絲夢靈藍千月筱雪殤·希羽嵐夢心殤雨櫻琉璃舞韻傾雅·蕾玥璦雅芸茜殤櫻雪夢·曦魂夢月澪璦琪欣淚·噝玥藍·嵐櫻殤紫樂蝶雨·蘇麗落雅馨璦魅·音蕾琦洛鳳之幽·蠫赬颻·風璃殤·顏鳶璃沫血傷·月冰靈希洛夢·玖兮戀琴愛·雨煙雪殤萌唄·血葉洛莉蘭·凝羽冰藍璃·淚伊如冰緲婭淚落冰花紫蝶夢珠·殤心櫻語冰凌伊娜·洛麗塔紫心愛·蝶夢如璃紫陌悠千艷·優花夢冰玫瑰靈傷如愛·晶淚墨陽雲筱殘傷雅·琉璃愛夢蓮淚·冰雪殤璃陌夢·愛櫻沫渺·落璃琴依語·千夢然絲傷·可薇·茉殤黎·幽幻紫銀·淚如韻影傾樂蘭慕·冰雪殤璃陌夢·凝羽冰藍璃·淚伊如琉璃愛夢蓮淚·冰雅淚落冰紫蝶夢·殤心櫻語冰凌伊蝶夢如·璃紫陌悠千艷優墨陽雲筱殘·雪蓮茉·伊文思·蕊夏清·碎墨音·芊樂夢黛怡·墨麗莎·夢靈蘇魅香·紫藍幽幻傾城萌美迷離·茉莉白嫩愛鳳風魑·殤淚花如霜夢蘭·蘿莉心夢妖麗百千艷·瑰百合香珠合夢喃·淚傷夢雅愛之瑰·墨艷黎幻殤雪倩夢·情娜血清戀沫幽彌千月緋心絲夢靈藍千月筱雪殤·希羽嵐夢心殤雨櫻琉璃舞韻傾雅·蕾玥璦雅芸茜殤櫻雪夢·曦魂夢月澪璦琪欣淚·噝玥藍·嵐櫻殤紫樂蝶雨·蘇麗落雅馨璦魅·音蕾琦洛鳳之幽·蠫赬颻·風璃殤·顏鳶璃沫血傷·月冰靈希洛夢·玖兮戀琴愛·雨煙雪殤萌唄·血葉洛莉蘭·凝羽冰藍璃·淚伊如冰緲婭淚落冰花紫蝶夢珠·殤心櫻語冰凌伊娜·洛麗塔紫心愛·蝶夢如璃紫陌悠千艷·優花夢冰玫瑰靈傷如愛·晶淚墨陽雲筱殘傷雅·琉璃愛夢蓮淚·冰雪殤璃陌夢·愛櫻沫渺·落璃琴依語·千夢然絲傷·可薇·茉殤黎·幽幻紫銀·淚如韻影傾樂蘭慕·冰雪殤璃陌夢·凝羽冰藍璃·淚伊如琉璃愛夢蓮淚·冰雅淚落冰紫蝶夢·殤心櫻語冰凌伊蝶夢如·璃紫陌悠千艷優墨陽雲筱殘·雪蓮茉·伊文思·蕊夏清·碎墨音·芊樂夢黛怡·墨麗莎·夢靈蘇魅香·紫藍幽幻傾城萌美迷離·茉莉白嫩愛鳳風魑·殤淚花如霜夢蘭·蘿莉心夢妖麗百千艷·瑰百合香珠合夢喃·淚傷夢雅愛之瑰·墨艷黎幻殤雪倩夢·情娜血清戀沫幽彌千月緋心絲夢靈藍千月筱雪殤·希羽嵐夢心殤雨櫻琉璃舞韻傾雅·蕾玥璦雅芸茜殤櫻雪夢·曦魂夢月澪璦琪欣淚·噝玥藍·嵐櫻殤紫樂蝶雨·蘇麗落雅馨璦魅·音蕾琦洛鳳之幽·蠫赬颻·風璃殤·顏鳶璃沫血傷·月冰靈希洛夢·玖兮戀琴愛·雨煙雪殤萌唄·血葉洛莉蘭·凝羽冰藍璃·淚伊如冰緲婭淚落冰花紫蝶夢珠·殤心櫻語冰凌伊娜·洛麗塔紫心愛·蝶夢如璃紫陌悠千艷·優花夢冰玫瑰靈傷如愛·晶淚墨陽雲筱殘傷雅·琉璃愛夢蓮淚·冰雪殤璃陌夢·愛櫻沫渺·落璃琴依語·千夢然絲傷·可薇·茉殤黎·幽幻紫銀·淚如韻影傾樂蘭慕·冰雪殤璃陌夢·凝羽冰藍璃·淚伊如琉璃愛夢蓮淚·冰雅淚落冰紫蝶夢·殤心櫻語冰凌伊蝶夢如·璃紫陌悠千艷優墨陽雲筱殘·雪蓮茉·伊文思·蕊夏清·碎墨音·芊樂夢黛怡·墨麗莎·夢靈蘇魅香·紫藍幽幻傾城萌美迷離·茉莉白嫩愛鳳風魑·殤淚花如霜夢蘭·蘿莉心夢妖麗百千艷·瑰百合香珠合夢喃·淚傷夢雅愛之瑰·墨艷黎幻殤雪倩夢·情娜血清戀沫幽彌千月緋心絲夢靈藍千月筱雪殤·希羽嵐夢心殤雨櫻琉璃舞韻傾雅·蕾玥璦雅芸茜殤櫻雪夢·曦魂夢月澪璦琪欣淚·噝玥藍·嵐櫻殤紫樂蝶雨·蘇麗落雅馨璦魅·音蕾琦洛鳳之幽·蠫赬颻·風璃殤·顏鳶璃沫血傷·月冰靈希洛夢·玖兮戀琴愛·雨煙雪殤萌唄·血葉洛莉蘭·凝羽冰藍璃·淚伊如冰緲婭淚落冰花紫蝶夢珠·殤心櫻語冰凌伊娜·洛麗塔紫心愛·蝶夢如璃紫陌悠千艷·優花夢冰玫瑰靈傷如愛·晶淚墨陽雲筱殘傷雅·琉璃愛夢蓮淚·冰雪殤璃陌夢·愛櫻沫渺·落璃琴依語·千夢然絲傷·可薇·茉殤黎·幽幻紫銀·淚如韻影傾樂蘭慕·冰雪殤璃陌夢·凝羽冰藍璃·淚伊如琉璃愛夢蓮淚·冰雅淚落冰紫蝶夢·殤心櫻語冰凌伊蝶夢如·璃紫陌悠千艷優墨陽雲筱殘·雪蓮茉·伊文思·蕊夏清·碎墨音·芊樂夢黛怡·墨麗莎·夢靈蘇魅香·紫藍幽幻傾城萌美迷離·茉莉白嫩愛鳳風魑·殤淚花如霜夢蘭·蘿莉心夢妖麗百千艷·瑰百合香珠合夢喃·淚傷夢雅愛之瑰·墨艷黎幻殤雪倩夢·情娜血清戀沫幽彌千月緋心絲夢靈藍千月筱雪殤·希羽嵐夢心殤雨櫻琉璃舞韻傾雅·蕾玥璦雅芸茜殤櫻雪夢·曦魂夢月澪璦琪欣淚·噝玥藍·嵐櫻殤紫樂蝶雨·蘇麗落雅馨璦魅·音蕾琦洛鳳之幽·蠫赬颻·風璃殤·顏鳶璃沫血傷·月冰靈希洛夢·玖兮戀琴愛·雨煙雪殤萌唄·血葉洛莉蘭·安吉拉·姆斯基·柔月蘭·美惠可薇安朵·蘭殤月·夢茹妙可鈴·雲裳月舞紗·莉可朵·塲殤雪穎淚蝶·影夢雅蘭·觴蘊燢覮·鏵累觷儠·摋孆瞲櫗劌鷡·氬淺趯鸑縈儽·驊瓔糜婺嚻觷龠鸚·蘇韎凪麴蒔·雪乖冰·娥愛寂翼巧·絲哀琪·俏莉婭·夢茹莎·櫻冰淚蝶喃鳳涅盤·璃殤玖璃夢·沫辰芝蘭琴艾柒·安娜·黛絲·艾曼妲·眉紗禦寇·安妮·蘇麗·莉莉絲·艾米麗·菲奧娜·格格利亞·薩曼塔·溫蒂·蘭尼·麗塔吉娜·洛麗絲牛排。
PHP:服務員端上牛排和餐具,大聲說道,我們家的牛排是最好吃的!並堅持顧客跟著說一遍才能開始進餐。


JavaScript:Java 不是我爹!

更新:補一張Java 的:


當然是javascript辣…過於寬鬆的類型變換,各種隨意的迷之語法……雖然現在有了typescript等等解決方案但是還是很魔性……

比如著名的"1"+1="11", "1"-1=0……

還有比如說↓

還有↓

還有↓

再舉一個看似不能理解的:

這是為啥?原因是

……………………………………

某些好事者還專門做了網站:

http://javascript-puzzlers.herokuapp.com

這套題做到自己懷疑人生orz

——————————update
貌似1 - - 1 = 2 這個Python也有…並不是很懂這個特性有啥用……


複製粘貼:

I had a problem, so I decided to use regexes.

Now I have two problems.


I had a problem, so I decided to use Java.

Now I have a ProblemFactory.


I had a problem, so I decided to use multithreading.

Now problems I two have.


I had a problem, so I decided to use divide and conquer.

Now I have two half-problems.


I had a problem, so I decided to use C.

Now I hSEGMENTATION FAULT


I had a problem, so I decided to use Lisp.

Now (have I (cons "problem "problem)).


I had a problem, so I decided to use SQL.

Now SELECT COUNT(*) FROM problems = 2.


I had a problem, so I decided to use IEEE754.

Now I have NaN problems.


I had a problem, so I decided to use Haskell.

Now I have a monoidal problem in the category of endofunctors.


I had a problem, so I decided to throw it into a strong acid.

Now I finally have a solution!


lisp: 面向腳踏板編程
javascript:java不是我爹
java:一次編寫,到處調試
C++:設計模式裝逼犯集中營
C: C++不是我兒子
python: (曾經是)最慢的腳本語言
perl: 面向正則表達式編程
易語言:面向木馬外掛編程
php: php是世界上最好的語言

彙編:沒事,你們聊……

那麼問題來了:請問哪一種主流語言被黑的最慘?


Coq(Gallina): 服務員對你說,你只能吃我覺得你能在有限時間內吃完的牛排。


plan9 的人對各類軟體(包括一部分程序語言)的吐槽: All software sucks

其中

C++: C++ is Good for the Economy, It Creates Jobs!
Java: Java Sucks
Ruby: Ruby is Not Even Funny

以及算不上編程語言但經常能碰到的:

XML: XML Sucks


swift從入門到重新入門。
----轉自網路


Haskell
你可以認為以下都是指的和「正常人」感覺不一樣的東西

ghci&> minimum (2, 5)
5

ghci&> print getLine

&:3:1:
No instance for (Show (IO String)) arising from a use of 『print』
In the expression: print getLine
In an equation for 『it』: it = print getLine

ghci&> [1, 11 .. 49]
[1,11,21,31,41]
ghci&> [1.0, 11.0 .. 49.0]
[1.0,11.0,21.0,31.0,41.0,51.0]
-- 仔細看下最後一個數

(修改:這個我換了個例子)


有天,你戰勝了選擇恐懼症,打算用python2來輸出一段中文,那麼你可以遇到這樣的輸出:

浣犲ソ錛屼笘鐣?

或是這樣的輸出:

????????

也可能直接就報錯了:

SyntaxError: Non-ASCII character "xe4" in file helloworld.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

然後你去網上搜索了一大圈,照著各種答案修改了代碼。於是你又可能遇到這樣的報錯:

UnicodeDecodeError: "gbk" codec can"t decode byte 0x8c in position 14: incomplete multibyte sequence

或者是這樣的報錯:

UnicodeDecodeError: "ascii" codec can"t decode byte 0xe4 in position 0: ordinal not in range(128)

你忍無可忍,決定拋棄python2,擁抱python3。於是就弄出了這樣的輸出:

b"xe4xbdxa0xe5xa5xbdxefxbcx8cxe4xb8x96xe7x95x8c"

或是這樣的報錯:

AttributeError: "str" object has no attribute "decode"

還有這樣的:

TypeError: a bytes-like object is required, not "str"

其實也還好啦,把上述情況都看懂了,用python處理編碼也沒啥麻煩的啊 [冷笑]

================

update:有些評論也是有意思,這只是自黑一下,開發時候該怎樣還是怎樣。題主都說『好玩的角度,沒有惡意』,你們這麼較真兒幹嘛。當真別人都是二愣子,只有你是明白人。懂的人自然會心一笑點個贊。說用啥啥根本不存在這種問題的,我只能說,要麼你還年輕,要麼你很幸運,總之讓人羨慕。

================

update again:怎麼很多人就不懂什麼叫『自黑』呢……

如果你確實遇到這些問題,那可以去我的公眾號『Crossin的編程教室』裡面回復『編碼』,有幾篇編碼方面的文章。說白了,搞清楚 str/unicode/encode/decode 幾個概念,以及py3裡面bytes/str和之前str/unicode的關係,就都OK了。


說一個Rust語言中的黑點(或者說曾經的),之前有人吐槽: 你寫Rust代碼編譯器不給過,那你把代碼上下兩行換個順序就行了。聽上去比較無語是不是。


就是這樣的:

然後換一下代碼的順序:

這個問題是析構順序引起的,但是已經在rust stable 1.17.0中修復了。


update at 2016-12-28 21:18
小小的得罪一下你們swift

一句話教你惹怒各大編程語言的使用者
-----------------------------------------割-------------------------------------------------

Python
-「你用py2還是py3?」
-「py3」
-「哦,我用py2,再見」
(他說2你就說你用3,他要是2、3都用,你就說你用py2.5)

Ruby
「啊,ruby我知道,就是那個rails,寫網站的,就是速度有點慢。」

Go
「我們隔壁公司他們伺服器就是Go寫的呢,人離職三個月了,現在都沒找到接手的,他們打算用PHP重寫。」

PHP
- 「......」
- 「PHP是世界上最好的語言!」

-----------------------------------------割-------------------------------------------------
C
「我買了本譚浩強的《C語言程序設計》,可跑起來到處都是燙燙燙」

C++
「聽說你精通C++?」

C#
「我知道,C井嘛,就是微軟照著那個java做的一個語言,」(一定要把「#」念成井)

Java
「java程序員的代碼量都特別大,雖然大部分都是getsetfactorylisteneruilderean之類的」

http://VB.NET
「中學計算機課上有講過vb誒」

HTML/CSS/javascript
「這不是美工么」

Node.js
「聽說你們庫特別多,回調也特別多」

-----------------------------------------割-------------------------------------------------
Objective-C
「你知道有個詞叫做語法簡潔么?」
Swift
「聽說Swift又雙叒叕升級啦?」
Java(For Android)
「這個最新版的Support Library怎麼在eclipse上編譯啊?」
-----------------------------------------割---------------------------------------------------
MATLAB/R
遇見用matlab的你就說你用r,遇到用r的你就說你用matlab。
同時遇見就說你用py。
Lua
「幫我寫個魔獸插件唄」
--------------------------------總結和其他--------------------------------------------------

編程語言分兩大類,被人黑的,和沒人用的。

(利益相關:什麼都不會)


作為Python愛好者,黑一下這條小蛇

操作元組裡面的數據有什麼後果?

&>&>&> a = ([1,2,3], [4,5], [6])
&>&>&> a[1] += [7]
Traceback (most recent call last):
File "&", line 1, in &
TypeError: "tuple" object does not support item assignment
&>&>&> a
([1, 2, 3], [4, 5, 7], [6])

這a[1]是怎麼個意思?

用dis模塊看一下

&>&>&> a = ([1,2,3], [4,5], [6])
&>&>&> def f():
... a[1] += [7]
... return a
...
&>&>&> f()
Traceback (most recent call last):
File "&", line 1, in &
File "&", line 2, in f
TypeError: "tuple" object does not support item assignment
&>&>&> a
([1, 2, 3], [4, 5, 7], [6])
&>&>&>
&>&>&> import dis
&>&>&> dis.dis(f)
2 0 LOAD_GLOBAL 0 (a)
3 LOAD_CONST 1 (1)
6 DUP_TOPX 2
9 BINARY_SUBSCR
10 LOAD_CONST 2 (7)
13 BUILD_LIST 1
16 INPLACE_ADD
17 ROT_THREE
18 STORE_SUBSCR

3 19 LOAD_GLOBAL 0 (a)
22 RETURN_VALUE

9到18那裡,tuple類型對象直接在byte code層面拒絕第18行,拋出異常,而不會判斷a[1]的id是否真的變化了。

一般類型如int,str等,執行+=會導致變數引用的對象發生變化,所以tuple在處理的時候就「偷懶」了,但是list類型執行+=比較特殊,變數引用的對象不變,所以偷懶的結果是拋出異常在list內容變化之後,這是python設計不周到的地方,其實要我說list的+=操作也實現成創建新對象也沒什麼,畢竟還有list.extend呢。


推薦閱讀:

C++17 有哪些值得注意的新特性?
你是如何自學 Python 的?
編程零基礎應當如何開始學習 Python ?
如何確定自己是否適合做程序員?
為什麼尾遞歸優化似乎不常出現在非函數式語言的解釋器、編譯器中?

TAG:程序員 | 編程語言 | PHP | 編程 | 計算機 |