[問題] 為什麼有些寫法會在前面或後面加底線

看板Python作者 (野戰口糧)時間8年前 (2017/10/27 15:20), 編輯推噓1(1013)
留言14則, 5人參與, 8年前最新討論串1/1
像是 def _init_(self,data.file) def _factorize(self,data) 或是 self.dataframe[k], _ = pd.factorize(self.dataframe[k]) 看很多範例都有。 不太了解什麼意思 謝謝各位解答 ----- Sent from JPTT on my iPhone -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.136.218 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1509088857.A.D85.html

10/27 15:35, 8年前 , 1F
最近也在研究python 的繼承,我的理解是雙底線不可被繼承
10/27 15:35, 1F

10/27 17:37, 8年前 , 2F
前面加單底線的名稱不會被from ... import * 匯入
10/27 17:37, 2F

10/27 17:39, 8年前 , 3F
樓上說的class裡前面加雙底線的名稱會被改名
10/27 17:39, 3F

10/27 17:41, 8年前 , 4F
前後都加雙底線的命名有內建名稱的意義
10/27 17:41, 4F

10/27 17:43, 8年前 , 5F
單獨的單底線idle裡預設為上個運算的結果,有時會被用
10/27 17:43, 5F

10/27 17:43, 8年前 , 6F
作dummy。我是習慣用雙底線
10/27 17:43, 6F

10/27 17:48, 8年前 , 7F
後單底線是有些人遇到命名衝突又想不到其他名稱時用的
10/27 17:48, 7F

10/27 23:31, 8年前 , 8F
雙底線不是不能被繼承,而是繼承後名字會被改掉
10/27 23:31, 8F

10/27 23:32, 8年前 , 9F
防止撞名用的,這個機制叫 name mangling
10/27 23:32, 9F

10/28 00:19, 8年前 , 10F
可以搜尋dunder 還有你第二個例子不屬於推文討論的 只
10/28 00:19, 10F

10/28 00:19, 8年前 , 11F
是function單純回傳2個值 但第二個對你來說不重要 所以
10/28 00:19, 11F

10/28 00:19, 8年前 , 12F
才用底線
10/28 00:19, 12F

10/28 02:17, 8年前 , 13F
有底線的就相當於c的private python 會自動防止錯誤的
10/28 02:17, 13F

10/28 02:17, 8年前 , 14F
呼叫 另外前後都有底線則是類別內建的方法
10/28 02:17, 14F
文章代碼(AID): #1PyjvPs5 (Python)