Re: [閒聊] python大師請進
看板Marginalman作者lturtsamuel (謹言慎行 拼relocate)時間1年前 (2022/06/29 01:35)推噓1(1推 0噓 3→)留言4則, 4人參與討論串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
06/29 01:50, 2F
→
06/29 01:51,
1年前
, 3F
06/29 01:51, 3F
推
06/29 02:06,
1年前
, 4F
06/29 02:06, 4F
討論串 (同標題文章)