如何理解Python中的if __name__ == '__main__'

轉(zhuǎn)自:https://blog.csdn.net/yjk13703623757/article/details/77918633/

對(duì)內(nèi)容進(jìn)行了部分篩選

1. 摘要

通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中现拒,你是小明(__name__ == '小明')辣垒;在你自己眼中,你是你自己(__name__ == '__main__')印蔬。

if __name__ == '__main__'的意思是:當(dāng).py文件被直接運(yùn)行時(shí)勋桶,if __name__ == '__main__'之下的代碼塊將被運(yùn)行;當(dāng).py文件以模塊形式被導(dǎo)入時(shí)侥猬,if __name__ == '__main__'之下的代碼塊不被運(yùn)行例驹。

(一個(gè)python的文件有兩種使用的方法,第一是直接作為腳本執(zhí)行退唠,第二是import到其他的python腳本中被調(diào)用(模塊重用)執(zhí)行坡椒。因此if __name__ == 'main': 的作用就是控制這兩種情況執(zhí)行代碼的過(guò)程躏尉,在if __name__ == 'main': 下的代碼只有在第一種情況下(即文件作為腳本直接執(zhí)行)才會(huì)被執(zhí)行柒桑,而import到其他腳本中是不會(huì)被執(zhí)行的。)

2. 程序入口

對(duì)于很多編程語(yǔ)言來(lái)說(shuō)仅政,程序都必須要有一個(gè)入口,比如C盆驹,C++圆丹,以及完全面向?qū)ο蟮木幊陶Z(yǔ)言Java,C#等躯喇。如果你接觸過(guò)這些語(yǔ)言辫封,對(duì)于程序入口這個(gè)概念應(yīng)該很好理解,C廉丽,C++都需要有一個(gè)main函數(shù)作為程序的入口倦微,也就是程序的運(yùn)行會(huì)從main函數(shù)開(kāi)始。同樣雅倒,Java璃诀,C#必須要有一個(gè)包含Main方法的主類弧可,作為程序入口蔑匣。

而Python則不同,它屬于腳本語(yǔ)言棕诵,不像編譯型語(yǔ)言那樣先將程序編譯成二進(jìn)制再運(yùn)行裁良,而是動(dòng)態(tài)的逐行解釋運(yùn)行。也就是從腳本第一行開(kāi)始運(yùn)行校套,沒(méi)有統(tǒng)一的入口价脾。

一個(gè)Python源碼文件(.py)除了可以被直接運(yùn)行外,還可以作為模塊(也就是庫(kù))笛匙,被其他.py文件導(dǎo)入侨把。不管是直接運(yùn)行還是被導(dǎo)入,.py文件的最頂層代碼都會(huì)被運(yùn)行(Python用縮進(jìn)來(lái)區(qū)分代碼層次)妹孙,而當(dāng)一個(gè).py文件作為模塊被導(dǎo)入時(shí)秋柄,我們可能不希望一部分代碼被運(yùn)行。

3.?__name__是什么

3.1?__name__反映一個(gè)包的結(jié)構(gòu)

(什么是包蠢正?)

__name__是內(nèi)置變量骇笔,可用于反映一個(gè)包的結(jié)構(gòu)。假設(shè)我們有一個(gè)包a嚣崭,包的結(jié)構(gòu)如下:

3.2?__name__表示當(dāng)前模塊的名字

__name__是內(nèi)置變量,可用于表示當(dāng)前模塊的名字芦劣。我們直接運(yùn)行一個(gè).py文件(模塊)


4.?__main__.py文件與python -m

Python的-m參數(shù)用于將一個(gè)模塊或者包作為一個(gè)腳本運(yùn)行,而__main__.py文件相當(dāng)于是一個(gè)包的“入口程序“持寄。

python xxx.py源梭,直接運(yùn)行xxx.py文件

python -m xxx.py废麻,把xxx.py當(dāng)做模塊運(yùn)行

總結(jié)一下

當(dāng)加上-m參數(shù)時(shí)模庐,Python會(huì)把當(dāng)前工作目錄添加到sys.path中;而不加-m時(shí)掂碱,Python則會(huì)把腳本所在目錄添加到sys.path中。

當(dāng)加上-m參數(shù)時(shí)沧卢,Python會(huì)先將模塊或者包導(dǎo)入醉者,然后再執(zhí)行。

__main__.py文件是一個(gè)包或者目錄的入口程序撬即。不管是用python package還是用python -m package運(yùn)行,__main__.py文件總是被執(zhí)行唱歧。


5.其他

調(diào)用模塊時(shí)程序不能放在以下程序下粒竖,否則無(wú)法正常工作

if __name__ == "__main__":

而多進(jìn)程則必須放在下面

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蕊苗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌得运,老刑警劉巖锅移,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異置逻,居然都是意外死亡备绽,警方通過(guò)查閱死者的電腦和手機(jī)鬓催,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門宇驾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)猴伶,“玉大人,你說(shuō)我怎么就攤上這事他挎。” “怎么了筹淫?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵呢撞,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我狸相,道長(zhǎng)捐川,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任瘸右,我火速辦了婚禮岩齿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘龄章。我一直安慰自己,他們只是感情好做裙,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布肃晚。 她就那樣靜靜地躺著锚贱,像睡著了一般拧廊。 火紅的嫁衣襯著肌膚如雪监徘。 梳的紋絲不亂的頭發(fā)上吧碾,一...
    開(kāi)封第一講書(shū)人閱讀 49,806評(píng)論 1 290
  • 那天倦春,我揣著相機(jī)與錄音,去河邊找鬼溅漾。 笑死,一個(gè)胖子當(dāng)著我的面吹牛添履,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锐借,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼往衷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了布轿?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤汰扭,失蹤者是張志新(化名)和其女友劉穎福铅,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體笆包,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡略荡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秧了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡验毡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出晶通,到底是詐尸還是另有隱情,我是刑警寧澤狮辽,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布喉脖,位于F島的核電站,受9級(jí)特大地震影響树叽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜题诵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一性锭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧草冈,春花似錦、人聲如沸疲陕。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)你踩。三九已至诅岩,卻和暖如春带膜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背膝藕。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滑废,地道東北人蝗肪。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓薛闪,卻偏偏與公主長(zhǎng)得像俺陋,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子腊状,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容