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

作者: zcyee (散落吧)   2017-10-27 15:20:54
像是
def _init_(self,data.file)
def _factorize(self,data)
或是
self.dataframe[k], _ = pd.factorize(self.dataframe[k])
看很多範例都有。 不太了解什麼意思
謝謝各位解答
作者: m87dd05 (八八里阿巴)   2017-10-27 15:35:00
最近也在研究python 的繼承,我的理解是雙底線不可被繼承
作者: mikapauli (桜花)   2017-10-27 17:37:00
前面加單底線的名稱不會被from ... import * 匯入樓上說的class裡前面加雙底線的名稱會被改名前後都加雙底線的命名有內建名稱的意義單獨的單底線idle裡預設為上個運算的結果,有時會被用作dummy。我是習慣用雙底線後單底線是有些人遇到命名衝突又想不到其他名稱時用的
作者: darkgerm (黑駿)   2017-10-27 23:31:00
雙底線不是不能被繼承,而是繼承後名字會被改掉防止撞名用的,這個機制叫 name mangling
作者: TitanEric (泰坦)   2017-10-28 00:19:00
可以搜尋dunder 還有你第二個例子不屬於推文討論的 只是function單純回傳2個值 但第二個對你來說不重要 所以才用底線
作者: brightwish (密碼同帳號)   2017-10-28 02:17:00
有底線的就相當於c的private python 會自動防止錯誤的呼叫 另外前後都有底線則是類別內建的方法

Links booklink

Contact Us: admin [ a t ] ucptt.com