Re: [閒聊] python大師請進

看板Marginalman作者 (謹言慎行 拼relocate)時間1年前 (2022/06/29 01:35), 1年前編輯推噓1(103)
留言4則, 4人參與, 1年前最新討論串27/69 (看更多)
※ 引述《lturtsamuel (謹言慎行 拼relocate)》之銘言: : ※ 引述《surimodo (搖滾少女!! 活力棉花糖!!)》之銘言: : : 找半天也看不出哪裡錯 : : 結果是傳值為啥變成傳址= = : : 原來python有這麼騷的操作 : : A = json.load(f) : : B = A : : 本來一個要當參考值讀取就沒要變 : : 一個要把變動重新寫入檔案 : : 結果 我動A : : B也跟著一起動了 : : wtf : : 分開讀取不用 B =A : : 問題都解決了 surimodo: 為啥B不是複製一份A 而是跟A共用資料:( 簡單講就是 語言核心開發者 a.k.a 終生仁慈獨裁者 欽定 這個語言要有某種淺複製的能力 畢竟深複製大家可以自己實作 淺複製語言層面不支援就沒救了 而你區區語言使用者要如何召喚出這個淺複製能力呢 我們可以簡單想幾個方案 1. 用&取址 用*取值 2. 像現在這樣規定所有非primitive都是傳址 3. 像c++一樣,讓各個物件決定自己的 copy condtrctor 4. 像c++一樣用reference 5. 像 rust 一樣規定大家都不准隱式複製,所有賦值都是移動語意,會消費掉原來的變數 選1的話,顯然會給語言帶來更多複雜性 輕者像 golang 一樣,需要區分值跟指針,顯然不是一般python仔的小腦袋瓜能處理的 重者像c語言,連pointer arithmetic 還有手動記憶體釋放都要考慮 那我怎麼不去寫c就好== 3 別提了,我在面試新人都不太敢考什麼move copy constructor 的問題了 怎麼問怎麼倒 4 更別提了 python仔有可能搞懂reference coherence 這種問題嗎 5 那我怎麼不去寫rust 所以考量功能性跟易用性 答案就是2 就這樣== ----- Sent from JPTT on my Google Pixel 3 XL. -- ~$ sudo make love -j4 Error: 女朋友.c: 沒有此一檔案或目錄 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.177.3.193 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1656437725.A.881.html ※ 編輯: lturtsamuel (180.177.3.193 臺灣), 06/29/2022 01:36:53

06/29 01:36, 1年前 , 1F
像我一樣的垃圾就乖乖選有垃圾回收機制ㄉ語言
06/29 01:36, 1F
※ 編輯: lturtsamuel (180.177.3.193 臺灣), 06/29/2022 01:42:46

06/29 01:50, 1年前 , 2F
什麼move copy constructor = =
06/29 01:50, 2F

06/29 01:51, 1年前 , 3F
std::move
06/29 01:51, 3F

06/29 02:06, 1年前 , 4F
有垃圾回收機制 沒錯java
06/29 02:06, 4F
文章代碼(AID): #1YkplTY1 (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1YkplTY1 (Marginalman)