一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

網(wǎng)頁(yè)設計

Python中下劃線(xiàn)的方法

時(shí)間:2025-02-14 12:55:29 飛宇 網(wǎng)頁(yè)設計 我要投稿

Python中下劃線(xiàn)的方法

  文章主要介紹了Python中下劃線(xiàn)的使用方法,是為python編程學(xué)習中的基本知識,需要的朋友可以參考下。

  單下劃線(xiàn)(_)

  通常情況下,會(huì )在以下3種場(chǎng)景中使用:

  1、在解釋器中:在這種情況下,“_”代表交互式解釋器會(huì )話(huà)中上一條執行的語(yǔ)句的結果。這種用法首先被標準CPython解釋器采用,然后其他類(lèi)型的解釋器也先后采用。 _ Traceback (most recent call last):

  File "", line 1, in

  NameError: name _ is not defined

  42

  _

  42

  alright! if _ else :(

  alright!

  _

  alright!

  2、作為一個(gè)名稱(chēng):這與上面一點(diǎn)稍微有些聯(lián)系,此時(shí)“_”作為臨時(shí)性的名稱(chēng)使用。這樣,當其他人閱讀你的代碼時(shí)將會(huì )知道,你分配了一個(gè)特定的名稱(chēng),但是并不會(huì )在后面再次用到該名稱(chēng)。例如,下面的例子中,你可能對循環(huán)計數中的實(shí)際值并不感興趣,此時(shí)就可以使用“_”。

  3 n = 42

  for _ in range(n):

  do_something()

  3、國際化:也許你也曾看到”_“會(huì )被作為一個(gè)函數來(lái)使用。這種情況下,它通常用于實(shí)現國際化和本地化字符串之間翻譯查找的函數名稱(chēng),這似乎源自并遵循相應的C約定。例如,在Django文檔“轉換”章節中,你將能看到如下代碼:

  ?

  1

  2

  3

  4

  5 from django.utils.translation import ugettext as _

  from django.http import HttpResponse

  def my_view(request):

  output = _("Welcome to my site.")

  return HttpResponse(output)

  可以發(fā)現,場(chǎng)景二和場(chǎng)景三中的使用方法可能會(huì )相互沖突,所以我們需要避免在使用“_”作為國際化查找轉換功能的代碼塊中同時(shí)使用“_”作為臨時(shí)名稱(chēng)。

  名稱(chēng)前的單下劃線(xiàn)(如:_shahriar)

  程序員使用名稱(chēng)前的單下劃線(xiàn),用于指定該名稱(chēng)屬性為“私有”。這有點(diǎn)類(lèi)似于慣例,為了使其他人(或你自己)使用這些代碼時(shí)將會(huì )知道以“_”開(kāi)頭的名稱(chēng)只供內部使用。正如Python文檔中所述:

  以下劃線(xiàn)“_”為前綴的名稱(chēng)(如_spam)應該被視為API中非公開(kāi)的部分(不管是函數、方法還是數據成員)。此時(shí),應該將它們看作是一種實(shí)現細節,在修改它們時(shí)無(wú)需對外部通知。

  正如上面所說(shuō),這確實(shí)類(lèi)似一種慣例,因為它對解釋器來(lái)說(shuō)確實(shí)有一定的意義,如果你寫(xiě)了代碼“from <模塊> import *”,那么以“_”開(kāi)頭的名稱(chēng)都不會(huì )被導入,除非模塊或包中的“__all__”列表顯式地包含了它們。了解更多請查看“Importing * in Python”。

  名稱(chēng)前的雙下劃線(xiàn)(如:__shahriar)

  名稱(chēng)(具體為一個(gè)方法名)前雙下劃線(xiàn)(__)的用法并不是一種慣例,對解釋器來(lái)說(shuō)它有特定的意義。Python中的這種用法是為了避免與子類(lèi)定義的名稱(chēng)沖突。Python文檔指出,“__spam”這種形式(至少兩個(gè)前導下劃線(xiàn),最多一個(gè)后續下劃線(xiàn))的任何標識符將會(huì )被“_classname__spam”這種形式原文取代,在這里“classname”是去掉前導下劃線(xiàn)的當前類(lèi)名。例如下面的例子:

  8 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__method_name”。此時(shí),如果你創(chuàng )建A的一個(gè)子類(lèi)B,那么你將不能輕易地覆寫(xiě)A中的方法“__method_name”。

  6 class B(A):

  ... def __method_name(self):

  ... pass

  ...

  dir(B())

  [_A__method_name, _B__method_name, ..., _internal_use]

  這里的功能幾乎和Java中的final方法和C++類(lèi)中標準方法(非虛方法)一樣。

  名稱(chēng)前后的雙下劃線(xiàn)(如:__init__)

  這種用法表示Python中特殊的方法名。其實(shí),這只是一種慣例,對Python系統來(lái)說(shuō),這將確保不會(huì )與用戶(hù)自定義的名稱(chēng)沖突。通常,你將會(huì )覆寫(xiě)這些方法,并在里面實(shí)現你所需要的功能,以便Python調用它們。例如,當定義一個(gè)類(lèi)時(shí),你經(jīng)常會(huì )覆寫(xiě)“__init__”方法。

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

  6 class C(object):

  ... def __mine__(self):

  ... pass

  ...

  dir(C)

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

  其實(shí),很容易擺脫這種類(lèi)型的命名,而只讓Python內部定義的特殊名稱(chēng)遵循這種約定。

  1. 解釋器中

  _符號是指交互解釋器中最后一次執行語(yǔ)句的返回結果。這種用法最初出現在CPython解釋器中,其他解釋器后來(lái)也都跟進(jìn)了。

  復制代碼代碼如下:

  _

  Traceback (most recent call last):

  File "", line 1, in

  NameError: name _ is not defined

  alright! if _ else :(

  alright!

  alright!

  2.作為名稱(chēng)使用

  這個(gè)跟上面有點(diǎn)類(lèi)似。_用作被丟棄的名稱(chēng)。按照慣例,這樣做可以讓閱讀你代碼的人知道,這是個(gè)不會(huì )被使用的特定名稱(chēng)。舉個(gè)例子,你可能無(wú)所謂一個(gè)循環(huán)計數的值:

  復制代碼代碼如下:

  n = 42

  for _ in range(n):

  do_something()

  3. i18n

  還可以被用作函數名。這種情況,單下劃線(xiàn)經(jīng)常被用作國際化和本地化字符串翻譯查詢(xún)的函數名。這種慣例好像起源于C語(yǔ)言。舉個(gè)例子,在Django documentation for translation中你可能會(huì )看到:

【Python中下劃線(xiàn)的方法】相關(guān)文章:

Python中下劃線(xiàn)的使用方法11-28

分析Python中下劃線(xiàn)的使用方法02-23

Python中下劃線(xiàn)的使用方法有哪些08-12

Python中下劃線(xiàn)的使用方法經(jīng)驗分享06-03

Word中下劃線(xiàn)怎么打04-04

python執行外部程序的常用方法12-17

python執行外部程序的常用方法小結07-18

在word中添加上劃線(xiàn)的 方法05-27

python將數據插入到mongodb的方法介紹06-01

一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看