Python中下劃線的使用方法

2022-10-04 23:24:39 字數 2649 閱讀 2475

本文將討論python中下劃線(_)字元的使用方法。我們將會看到,正如python中的很多事情,下劃線的不同用法大多數(並非所有)只是常用慣例而已。

單下劃線(_)

通常情況下,會在以下3種場景中使用:

1、在直譯器中:在這種情況下,「_」代表互動式直譯器會話中上一條執行的語句的結果。這種用法首先被標準cpython直譯器採用,然後其他型別的直譯器也先後採用。

>>> _ traceback (most recent call last):

file "", line 1, in

nameerror: name '_' is not defined

>>> 42

>>> _

42>>> 'alright!' if _ else ':('

'alright!'

>>> _

'alright!'

2、作為乙個名稱:這與上面一點稍微有些聯絡,此時「_」作為臨時性的名稱使用。這樣,當其他人閱讀你的**時將會知道,你分配了乙個特定的名稱,但是並不會在後面再次用到該名稱。例如,下面的例子中,你可能對迴圈計數中的實際值並不感興趣,此時就可以使用「_」。

n = 42

for _ in range(n):

do_something()

3、國際化:也許你也曾看到」_「會被作為乙個函式來使用。這種情況下,它通常用於實現國際化和本地化字程式設計客棧符串之間翻譯查詢的函式名稱,這似乎源自並遵循相應的c約定。例如,在django文件「轉換」章節中,你將能看到如下**:

可以發現,場景二和場景三中的使用方法可能會相互衝突,所以我們需要避免在使用「_」作為國際化查詢轉換功能的**塊中同時使用「_」作為臨時名稱。

名稱前的單下劃線(如:_shahriar)

程式設計師使用名稱前的單下劃線,用於指定該名稱屬性為「私有」。這有點類似於慣例,為了使其他人(或你自己)使用這些**時將會知道以「_」開頭的名稱只供內部使用。正如python文件中所述:

以下劃線「_」為字首的名稱(如_spam)應該被視為api中非公開的部分(不管是函式、方法還是資料成員)。此時,應該將它們看作是一種實現細節,在修改它們時無需對外部通知。

正如上面所說,這確實類似一種慣例,因為它對直譯器來說確實有一定的意義,如果你寫了**「from 模組/ import *」,那麼以「_」開頭的名稱都不會被匯入,除非模組或包中的「__all__」列表顯式地包含了它們。了解更多請檢視「importing * in python」。

名稱前的雙下劃線(如:__shahriar)

名稱(具體為乙個方法名)前雙下劃線(__)的用法並不是一種慣例,對直譯器來說它有特定的意義。python中的這種用法是為了避免與子類定義的名稱衝突。python文件指出,「__spam」這種形式(至少兩個前導下劃線,最多乙個後續下劃線)的任何標www.cppcns.com識符將會被「_classname__spam」這種形式原文取代,在這裡「classname」是去掉前導下劃線的當前類名。例如下面的例子: 

>>> class a(object):

... def _internal_use(self):

... pass

... def __method_name(self):

... pass

...>>> dir(a())

['_a__method_name', ..., '_internal_use']

正如所預料的,「_internal_use」並未改變,而「__method_name」卻被變成了「_classname__met此時,如果你建立a的乙個子類b,那麼你將不能輕易地覆寫a中的方法「__method_name」。

>>> class b(a):

... def __methofyozwzrkdd_name(self):

... pass

...>>> dir(b())

['_a__method_name', '_b__method_name', ..., '_internal_use']

這裡的功能幾乎和j**a中的final方法和c++類中標準方法(非虛方法)一樣。

名稱前後的雙下劃線(如:__init__)

這種用法表示python中特殊的方法名。其實,這只是一種慣例,對python系統來說,這將確保不會與使用者自定義的名稱衝突。通常,你將會覆寫這些方法,並在裡面實現你所需要的功能,以便python呼叫它們。例如,當定義乙個類時,你經常會覆寫「__init__」方法。

雖然你也可以編寫自己的特殊方法名,但不要這樣做。

>>> class c(object):

... def __mine__(self):

... pass

...>>> dir(c)

... [..., '__mine__', ...]

其實,很容易擺脫這種型別的命名,而只讓python內部定義的特殊名稱遵循這種約定。

本文標題: python中下劃線的使用方法

本文位址: /jiaoben/python/121648.html

Python中下劃線說明

在python中經常看到方法或者變數前帶有下劃線,稍作解釋。1.前後雙下劃線 mtthod 這一般是系統定義的特殊方法,類似於類的構造方法 init 2.前單下劃線 以單下劃線開頭的變數指的是變數的許可權型別為protected,即是保護許可權的變數,該型別的變數只能通過其本身及子類的例項物件能夠訪...

python中下劃線 的用途

python 用下劃線作為變數字首和字尾指定特殊變數。不能用 from module import 匯入 系統定義名字 類中的私有變數名 核心風格 避免用下劃線作為變數名的開頭。因為下劃線對直譯器有特殊的意義,而且是內建識別符號所使用的符號,我們建議程式設計師避免用下劃線作為變數名的開頭。一般來講,...

Python中下劃線含義詳解

格式例子作用及含義單下劃線開頭 var僅供內部使用,通常不會有python直譯器強制執行末尾單下劃線var 單個末尾下劃線 字尾 是乙個約定,用來避免與python關鍵字產生命名衝突。雙下劃線開頭 var當在類上下文使用時,觸發 名詞修飾 由python直譯器強制執行雙下劃線開頭和結尾 var py...