日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单下划线和双下划线

發(fā)布時間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单下划线和双下划线 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這些都是在編譯器中的規(guī)則,如果在終端中執(zhí)行這些命令,必須退出終端,重新進(jìn)來一次,否則終端將更新不了程序的改動。

__foo__: 定義的是特殊方法,一般是系統(tǒng)定義名字 ,類似 __init__() 之類的。

_foo: 以單下劃線開頭的表示的是 protected 類型的變量,即保護(hù)類型只能允許其本身與子類進(jìn)行訪問,不能用于 from module import *

__foo: 雙下劃線的表示的是私有類型(private)的變量, 只能是允許這個類本身進(jìn)行訪問了。

(1)、以單下劃線開頭,表示這是一個保護(hù)成員,只有類對象和子類對象自己能訪問到這些變量。以單下劃線開頭的變量和函數(shù)被默認(rèn)當(dāng)作是內(nèi)部函數(shù),使用from module improt *時不會被獲取,但是使用import module可以獲取

(2)、以單下劃線結(jié)尾僅僅是為了區(qū)別該名稱與關(guān)鍵詞

(3)、雙下劃線開頭,表示為私有成員,只允許類本身訪問,子類也不行。在文本上被替換為_class__method

(4)、雙下劃線開頭,雙下劃線結(jié)尾。一種約定,Python內(nèi)部的名字,用來區(qū)別其他用戶自定義的命名,以防沖突。是一些 Python 的“魔術(shù)”對象,表示這是一個特殊成員,例如:定義類的時候,若是添加__init__方法,那么在創(chuàng)建類的實例的時候,實例會自動調(diào)用這個方法,一般用來對實例的屬性進(jìn)行初使化,Python不建議將自己命名的方法寫為這種形式,雙下劃線的函數(shù),當(dāng)使用這個類時候,會對所有的對象作用雙下劃線的方法,如果提前定義了該對象輸出的格式等,則可以使用雙下劃線的,默認(rèn)對象輸出的為自己指定的格式。而且以雙下劃線命名的函數(shù)如果python中有自己的函數(shù),(例如定義:__add__),那么調(diào)用這個類class時,自己定義的雙下劃線的函數(shù)(自己定義的__add__)將代替python中原來有的'+',造成計算混亂。


鏈接:https://www.zhihu.com/question/19754941/answer/12860775
?

首先是單下劃線開頭,這個被常用于模塊中,在一個模塊中以單下劃線開頭的變量和函數(shù)被默認(rèn)當(dāng)作內(nèi)部函數(shù),如果使用 from a_module import * 導(dǎo)入時,這部分變量和函數(shù)不會被導(dǎo)入。不過值得注意的是,如果使用 import a_module 這樣導(dǎo)入模塊,仍然可以用 a_module._some_var 這樣的形式訪問到這樣的對象。

在 Python 的官方推薦的代碼樣式中,還有一種單下劃線結(jié)尾的樣式,這在解析時并沒有特別的含義,但通常用于和 Python 關(guān)鍵詞區(qū)分開來,比如如果我們需要一個變量叫做 class,但 class 是 Python 的關(guān)鍵詞,就可以以單下劃線結(jié)尾寫作 class_。

雙下劃線開頭的命名形式在 Python 的類成員中使用表示名字改編 (Name Mangling),即如果有一 Test 類里有一成員 __x,那么 dir(Test) 時會看到 _Test__x 而非 __x。這是為了避免該成員的名稱與子類中的名稱沖突。但要注意這要求該名稱末尾沒有下劃線。

雙下劃線開頭雙下劃線結(jié)尾的是一些 Python 的“魔術(shù)”對象,如類成員的 __init__、__del__、__add__、__getitem__ 等,以及全局的 __file__、__name__ 等。 Python 官方推薦永遠(yuǎn)不要將這樣的命名方式應(yīng)用于自己的變量或函數(shù),而是按照文檔說明來使用。

另外單下劃線開頭還有一種一般不會用到的情況在于使用一個 C 編寫的擴(kuò)展庫有時會用下劃線開頭命名,然后使用一個去掉下劃線的 Python 模塊進(jìn)行包裝。如 struct 這個模塊實際上是 C 模塊 _struct 的一個 Python 包裝。


鏈接:https://www.zhihu.com/question/19754941/answer/336260809

https://www.zhihu.com/question/19754941

?

總結(jié)

以上是生活随笔為你收集整理的单下划线和双下划线的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。