欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

python單下劃線函數(shù) python下劃線函數(shù)命名規(guī)范

python下劃線定義屬性

類的私有變量和私有方法

創(chuàng)新互聯(lián)主要從事成都網站建設、網站制作、網頁設計、企業(yè)做網站、公司建網站等業(yè)務。立足成都服務和碩,十多年網站建設經驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:028-86922220

在Python中可以通過在屬性變量名前加上雙下劃線定義屬性為私有屬性

特殊變量命名

1、 _xx 以單下劃線開頭的表示的是protected類型的變量。即保護類型只能允許其本身與子類進行訪問。若內部變量標示,如: 當使用“from M import”時,不會將以一個下劃線開頭的對象引入 。

2、 __xx 雙下劃線的表示的是私有類型的變量。只能允許這個類本身進行訪問了,連子類也不可以用于命名一個類屬性(類變量),調用時名字被改變(在類FooBar內部,__boo變成_FooBar__boo,如self._FooBar__boo)

3、 __xx__定義的是特列方法。用戶控制的命名空間內的變量或是屬性,如init , __import__或是file 。只有當文檔有說明時使用,不要自己定義這類變量。 (就是說這些是python內部定義的變量名)

在這里強調說一下私有變量,python默認的成員函數(shù)和成員變量都是公開的,沒有像其他類似語言的public,private等關鍵字修飾.但是可以在變量前面加上兩個下劃線"_",這樣的話函數(shù)或變量就變成私有的.這是python的私有變量軋壓(這個翻譯好拗口),英文是(private name mangling.) **情況就是當變量被標記為私有后,在變量的前端插入類名,再類名前添加一個下劃線"_",即形成了_ClassName__變量名.**

Python內置類屬性

__dict__ : 類的屬性(包含一個字典,由類的數(shù)據(jù)屬性組成)

__doc__ :類的文檔字符串

__module__: 類定義所在的模塊(類的全名是'__main__.className',如果類位于一個導入模塊mymod中,那么className.__module__ 等于 mymod)

__bases__ : 類的所有父類構成元素(包含了一個由所有父類組成的元組)

【變量】關于單下劃線、雙下劃線開頭變量的含義

以單下劃線(_)表明是標準庫的變量

雙下劃線(__) 開頭表明是編譯器的變量

建議自己在命名的時候不要用下劃線開頭,避免與標準庫中的命名沖突。

Python?用下劃線作為變量前綴和后綴指定特殊變量

_xxx 不能用 “from module import *” 導入

__xxx__ 系統(tǒng)定義名字

__xxx 類中的私有變量名

核心風格:避免用下劃線作為變量名的開始

因為下劃線對解釋器有特殊的意義,而且是內建標識符所使用的符號,我們建議程序員避免用下劃線作為變量名的開始。

一般來講,變量名_xxx被看作是“私有的”,在模塊或類外不可以使用,當變量是私有的時候,用_xxx 來表示變量是很好的習慣。因為變量名__xxx__對Python 來說有特殊含義,對于普通的變量應當避免這種命名風格。

“單下劃線” 開始的成員變量叫做保護變量,意思是只有類對象和子類對象自己能訪問到這些變量;

“雙下劃線” 開始的是私有成員,意思是只有類對象自己能訪問,連子類對象也不能訪問到這個數(shù)據(jù)。

以單下劃線開頭(_foo)的代表不能直接訪問的類屬性,需通過類提供的接口進行訪問,不能用“from xxx import *”而導入;

以雙下劃線開頭的(__foo)代表類的私有成員;

以雙下劃線開頭和結尾的(__foo__)代表python里特殊方法專用的標識,如 __init__()代表類的構造函數(shù)。

python中下劃線命名的含義

python中有五種下劃線命名;

(1)單前導下劃線: var

以單個下劃線開頭的變量或方法僅供內部使用,但是不強制執(zhí)行。通過類名.變量名依然可以引用,但是在使用通配符導入模塊(from 模塊 import *)時,不能調用使用下劃線定義的函數(shù),而常規(guī)導入(import 模塊)是可以調用的。

(2)單末尾下劃線:var

當最符合當前函數(shù)的變量名被占用,則可以使用_來解決命名沖突。單個末尾下劃線(后綴)是一個約定,用來避免與Python關鍵字產生命名沖突。

(3)雙前導下劃線:_ var

雙下劃線前綴會導致Python解釋器重寫屬性名稱,以避免子類中的命名沖突。

這也叫做名稱修飾(name mangling) - 解釋器更改變量的名稱,以便在類被擴展的時候不容易產生沖突。

(4)雙前導和末尾下劃線: var

Python保留了有雙前導和雙末尾下劃線的名稱,用于特殊用途。 這樣的例子有, init 對象構造函數(shù),或 call --- 它使得一個對象可以被調用。最好避免在自己的程序中使用以雙下劃線(“dunders”)開頭和結尾的名稱,以避免與將來Python語言的變化產生沖突。

(5)單下劃線:

有時候單個獨立下劃線是用作一個名字,來表示某個變量是臨時的或無關緊要的。單個下劃線僅僅是一個有效的變量名稱,會有這個用途而已。

總結:

參考: Python中下劃線的5種含義

python 變量下劃線命名規(guī)則

單下劃線和雙下劃線在Python變量、類、模塊命名中都有不懂的含義,名稱中都各有其含義。有一些是程序員之間約定俗成的,Python解釋器不用強制其執(zhí)行,但有些Python解釋器會強制執(zhí)行。

本文從以下幾種不同使用方式,對下劃線的用途和含義進行說明:

1)變量

通常用于類內部變量的命名,表明該變量是該類私用變量,外部不要去訪問它,但也是可以訪問到的。這只是程序員之間的一個約定俗成的做法,Python解釋器本身不會對它進行限制。

我們創(chuàng)建一個類:

實例化A,并訪問它的變量,aa._bar 也是可以訪問的,但既然人家這么命名了,外部最好不要去訪問了

2)函數(shù)和模塊

和變量一樣,這是一個私有函數(shù),不建議外部程序調用該函數(shù)。

我們創(chuàng)建一個腳本aa.py, 里面有2個函數(shù) _aa,bb:

導入aa,分別調用函數(shù) _aa和bb,bb 可以調用,但顯示無 _aa

3)類

同變量和函數(shù)一樣,都是私有變量,外部最好不要調用

用來避免和Python內置函數(shù)命名產生沖突,PEP8解釋了這個約定。

如class或def不能用作Python中的變量名稱,如果之間用,會提示錯誤。如果你非要用它,可以 使用 class_或 def_。

還有一些函數(shù)名,如chr,chr()是Python內置函數(shù),用來表示ascii碼對應的字符他的輸入時數(shù)字,可以用十進制,也可以用十六進制。如果你非要它來表示染色體,可以用chr_來代替。當然如果你直接使用它作為變量名,它也不會報錯,但最好不要這樣使用。

在python中定義私有變量只需要在變量名或函數(shù)名前加上 "__" (兩個下劃線),那么這個函數(shù)或變量就會成為私有的了。

在內部,python使用一種 name mangling 技術,將__var 替換成 _classname__var,因此在外部調用__var會找不到,代替它的是_classname_var。這種處理方式叫做名稱修飾(name mangling):解釋器更改變量的名稱,以便在類被擴展的時候不容易產生沖突。

由雙下劃線前綴和后綴包圍的變量,不會應用名稱修飾,因此不會被Python解釋器修改:

我們創(chuàng)建一個類B,dir() 查看類的所有屬性,發(fā)現(xiàn) 存在 __aa__

但是,Python保留了有雙前導和雙末尾下劃線的名稱,用于特殊用途。 如,__init__對象構造函數(shù),或 __call__ 它使得一個對象可以被調用。所有我們盡量不要使用這種方式命名變量,以免和Python解釋器內置的函數(shù)發(fā)生沖突。

_ 不加任何其他字符,單獨作為一個名字,用來表示某個臨時的或者無關緊要的變量。

舉例1: 表示一個臨時變量 。在下面的循環(huán)中,我們不需要獲取循環(huán)的索引,只是print n 行 'Hello World',可以用 "_" 來表示它只是一個臨時值:

舉例2: 表示一個不關心的變量 ,僅僅是個占位符變量,用來占位。mlist 列表中,我只想獲得1,2,4 位的變量,那 3 和 5 可以 用 _ 來占位

舉例3 : 表示由解釋器評估的最近一個表達式的結果 ,方便進行查看。

名稱欄目:python單下劃線函數(shù) python下劃線函數(shù)命名規(guī)范
轉載源于:http://chinadenli.net/article40/doojheo.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號App開發(fā)自適應網站響應式網站App設計企業(yè)網站制作

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網站網頁設計