亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python中的單下劃線和雙下劃線使用場景

系統(tǒng) 2049 0

單下劃線

單下劃線用作變量

  • 最常見的一種使用場景是作為變量占位符,使用場景明顯可以減少代碼中多余變量的使用。為了方便理解, _ 可以看作被丟棄的變量名稱,這樣做可以讓閱讀你代碼的人知道,這是個不會被使用的變量,e.g.。
          
            for _, _, filenames in os.walk(targetDir):
    print(filenames)
    
for _ in range(100):
    print('PythonPoint')
          
        
  • 在交互解釋器比如iPython中, _ 變量指向交互解釋器中最后一次執(zhí)行語句的返回結(jié)果。

單下劃線前綴名稱(例如_pythonPoint)

  • 這表示這是一個保護(hù)成員(屬性或者方法),只有類對象和子類對象自己能訪問到這些變量,是用來指定私有變量和方法的一種方式(約定而已)。如果使用 from a_module import * 導(dǎo)入時,這部分變量和函數(shù)不會被導(dǎo)入。不過值得注意的是,如果使用 import a_module 這樣導(dǎo)入模塊,仍然可以用 a_module._pythonPoint 這樣的形式訪問到這樣的對象。
  • 另外單下劃線開頭還有一種一般不會用到的情況,例如使用一個C編寫的擴(kuò)展庫有時會用下劃線開頭命名,然后使用一個去掉下劃線的Python模塊進(jìn)行包裝。如struct這個模塊實(shí)際上是C模塊 _struct 的一個Python包裝。

單下劃線后綴名稱

  • 通常用于和Python關(guān)鍵詞區(qū)分開來,比如我們需要一個變量叫做class,但class是
    Python的關(guān)鍵詞,就可以以單下劃線結(jié)尾寫作 class_ 。

雙下劃線

雙下劃線前綴名稱

這表示這是一個私有成員(屬性或者方法)。它無法直接像公有成員一樣隨便訪問。雙下劃線開頭的命名形式在Python的類成員中使用表示名字改編,即如果Test類里有一成員 __x ,那么 dir(Test) 時會看到 _Test__x 而非 __x 。這是為了避免該成員的名稱與子類中的名稱沖突,方便父類和子類中該成員的區(qū)分識別。但要注意這要求該名稱末尾最多有一個下劃線。e.g.

雙下劃線前綴及后綴名稱

一種約定,Python內(nèi)部的名字,用來區(qū)別其他用戶自定義的命名,以防沖突。是一些Python的“魔術(shù)”對象,表示這是一個特殊成員。如類成員的 __init__ 、 __del__ __add__ 等,以及全局的 __file__ 、 __name__ 等。Python官方推薦永遠(yuǎn)不要將這樣的命名方式應(yīng)用于自己的變量或函數(shù),而是按照文檔說明來使用Python內(nèi)置的這些特殊成員。

Python中關(guān)于私有屬性、方法約定問題,官方文檔如下

“Private” instance variables that cannot be accessed except from inside an object don’t exist in Python. However, there is a convention that is followed by most Python code: a name prefixed with an underscore (e.g. _spam) should be treated as a non-public part of the API (whether it is a function, a method or a data member). It should be considered an implementation detail and subject to change without notice.

Since there is a valid use-case for class-private members (namely to avoid name clashes of names with names defined by subclasses), there is limited support for such a mechanism, called name mangling. Any identifier of the form__spam (at least two leading underscores, at most one trailing underscore) is textually replaced with _classname__spam, where classname is the current class name with leading underscore(s) stripped. This mangling is done without regard to the syntactic position of the identifier, as long as it occurs within the definition of a class.

Name mangling is helpful for letting subclasses override methods without breaking intraclass method calls.


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美日韩麻豆 | 久久国产加勒比精品无码 | 一级s片 | 国产精品免费网站 | 一级做人免费观看c欧美网站 | 成人淫片免费视频95视频 | 国产h视频免费观看 | 日韩中文字幕a | 久久久久久不卡 | 婷婷色人阁 | 欧美黄色毛片 | 久久99热这里只有精品 | 免费观看久久 | 在线精品日韩一区二区三区 | 亚洲视频在线看 | 亚洲第一成年人网站 | 欧美夜夜片a | www日韩在线 | 久久久久激情免费观看 | 精品成人免费播放国产片 | 天天综合亚洲 | 亚洲精品久久99久久一区 | 亚洲视频大全 | 国产综合久久 | 爱爱小视频成人免费 | 午夜国产精品理论片久久影院 | 呦系列视频一区二区三区 | 免费精品国产自产拍在 | 人人爱人人性 | 9久re热视频这里只有精品 | 国产一级特黄aaa大片 | 尤物国产在线精品福利一区 | 色欧美在线 | 一及黄色毛片 | 亚洲一级色 | 美女很黄很黄免费 | 欧美在线视频免费看 | 久久精品亚洲欧美日韩久久 | 色九九影院 | 日本免费特黄aa毛片 | 国内精品久久久久影院网站 |