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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

详解Python中的下划线

發布時間:2025/3/15 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详解Python中的下划线 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


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

單下劃線(_)

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

1、在解釋器中:在這種情況下,“_”代表交互式解釋器會話中上一條執行的語句的結果。這種用法首先被標準CPython解釋器采用,然后其他類型的解釋器也先后采用。

Python
12345678910>>> _ Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name '_' is not defined >>> 42 >>> _ 42 >>> 'alright!' if _ else ':(' 'alright!' >>> _ 'alright!'

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

Python
1 2 3 n = 42 for _ in range(n): ????do_something()

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

Python
12345from django.utils.translation import ugettext as _ from django.http import HttpResponse def my_view(request): output = _("Welcome to my site.") return HttpResponse(output)

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

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

程序員使用名稱前的單下劃線,用于指定該名稱屬性為“私有”。這有點類似于慣例,為了使其他人(或你自己)使用這些代碼時將會知道以“_”開頭的名稱只供內部使用。正如Python文檔中所述:

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

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

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

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

Python
1 2 3 4 5 6 7 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”。此時,如果你創建A的一個子類B,那么你將不能輕易地覆寫A中的方法“__method_name”。

Python
123456>>> class B(A): ... def __method_name(self): ... pass ... >>> dir(B()) ['_A__method_name', '_B__method_name', ..., '_internal_use']

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

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

這種用法表示Python中特殊的方法名。其實,這只是一種慣例,對Python系統來說,這將確保不會與用戶自定義的名稱沖突。通常,你將會覆寫這些方法,并在里面實現你所需要的功能,以便Python調用它們。例如,當定義一個類時,你經常會覆寫“__init__”方法。

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

Python
1 2 3 4 5 6 >>> class C(object): ... def __mine__(self): ... pass ... >>> dir(C) ... [..., '__mine__', ...]

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

總結

以上是生活随笔為你收集整理的详解Python中的下划线的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 97在线影院| 久久久夜夜夜 | 萌白酱喷水视频 | 精品久久人妻av中文字幕 | 国产99久久久欧美黑人 | 99视屏| 国产aaaaaa| 亲女禁h啪啪宫交 | 亚洲国产99 | 欧美日韩高清在线观看 | 成人黄色一级片 | 91欧美在线 | aaa黄色| 久久久久久久久久久久久久久久久久 | 日本一区二区三区在线播放 | 国产精品人人爽人人爽 | 北条麻妃久久 | 欧美天天射 | 91l九色lporny | 手机电影在线观看 | 天天摸夜夜添狠狠添婷婷 | 欧美最猛黑人xxxx | 欧美一级片免费看 | 亚洲欧美一二三 | h无码动漫在线观看 | 午夜爱爱免费视频 | 国产a久久 | 爱草视频 | 殴美一级黄色片 | 国产三级在线观看完整版 | 1级av| 成人午夜视频在线播放 | jizz在线免费观看 | 嫩草影院av | 午夜精品久久久久久久久久久久久 | 黄色小电影网址 | 99riav1国产精品视频 | 大陆女明星乱淫合集 | 98视频在线 | 91日韩在线视频 | 国产老熟女伦老熟妇露脸 | 蜜臀av88| 成人av免费在线播放 | 又黄又色| 国产人伦精品一区二区三区 | 抽插丰满内射高潮视频 | 色丁香久久 | 男女床上拍拍拍 | 欧美一区二区免费在线观看 | 九九久久精品视频 | 中国18videosex极品 | 成人免费视频网站在线观看 | 午夜视 | 熟女少妇一区二区三区 | 日韩三级视频 | 亚洲第一看片 | 久艹在线视频 | 久久久久久国产精品无码 | 欧美亚洲少妇 | 男人疯狂高潮呻吟视频 | 综合天天 | 欧美黑人一区二区 | 777久久久精品一区二区三区 | 92精品 | 91视频最新入口 | 久久久久麻豆v国产精华液好用吗 | 亚洲欧美日韩系列 | 免费无码毛片一区二区app | 狠狠操影视 | 啪视频在线观看 | 操操操操操操 | 亚洲成人精品一区二区 | 亚洲free性xxxx护士hd | 国产成人自拍视频在线观看 | 精品国产综合 | 免费成人高清视频 | 古装三级吃奶做爰 | 蜜臀久久99精品久久久画质超高清 | zzjizzji亚洲日本少妇 | 一级特黄a | 久久精品男人的天堂 | 波多野结衣精品视频 | 久福利| 日本系列第一页 | 樱桃视频一区二区三区 | 中文字幕乱码一区二区三区 | 天天看夜夜操 | 日韩在线视频一区二区三区 | 色男人天堂av | 爱av在线 | 狠色综合7777夜色撩人 | 射区导航 | 午夜日韩 | 日噜| 中国无码人妻丰满熟妇啪啪软件 | 国产老女人精品毛片久久 | 国产成人免费av | 人妻少妇精品久久 | 免费av入口 |