国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營銷資訊 > 建站知識 > 戲說python的特殊變量 __name__

戲說python的特殊變量 __name__

時間:2023-02-20 05:10:01 | 來源:建站知識

時間:2023-02-20 05:10:01 來源:建站知識

戲說python的特殊變量 __name__:

python特殊變量__name__

最近看一些代碼的時候經(jīng)??吹?code>__name__,說實話,我不想看到它,有點丑,這就像在現(xiàn)實生活中有名字人叫一二三狗子三二一之類的。說到丑啊,我實在是不得不想起之前的一個讓人哭笑不得的事情

“身份證為什么拍得這么丑?”
因為拍的太漂亮太好看,你就會到處炫耀,誰知道哪一天給別人欣賞你的“秀色可餐”的面容的時候忘記拿回來,弄丟了。想想覺得很有道理!真的感謝公安人員的良苦用心??!!!

這個變量就是python的內(nèi)置變量,寫成這樣就是防止你編程的時候取變量名的用到這個名字,你會用一二三狗子三二一給自己的娃取名?(變量命名要么是_開頭,要么是英文字母開頭)。那它表示什么意思呢?

它的意思就是運行的程序的名字(name)。
首先寫一個簡單的python程序看一看,把這句話存到test.py中運行一下:

print("NAME IS : " + __name__)運行python test.py,結(jié)果是:

NAME IS : __main__咋地又來了一個一二三翠花三二一__main__)?哈哈,你沒有看錯,這個內(nèi)置變量的真實名字(值)是__main__

好吧!感覺python這個世界有著形形色色的東西啊!

那它有著啥子用呢?

在一些代碼中你可能經(jīng)常看到這個寫法:

if __name__ == '__main__': balabala...代碼翻譯過來就是,如果這個程序的名字__main__,那么就balabala...,那剛才我們試了,程序的名字就是__main__這個翠花大西瓜??!為啥還做這個判斷呢?難道是下雨天打孩子——閑著也是閑著?

嘿!如果把__name__放在函數(shù)里面是不是會神秘一些呢?我們把下面這些代碼保存到cuihua_and_dog.py里面

# cuihua_and_dog.py# 聲明一個函數(shù),這個用來試驗(名字我都給取好了,叫翠花狗子)def marry(): baby = "cuihua" + "dog" print(__name__ + "'s baby is : " + baby)marry()當直接運行python cuihua_and_dog.py的,結(jié)果是:

__main__'s baby is : cuihuadog結(jié)果__name__還是和之前的那樣,還是__main__

這樣太直接的運行cuihua_and_dog.py實在是沒意思,我們來回到狗子翠花小的時候!我們不這么直接的運行它,我們把它當做模塊或者說包來運行看看會怎樣!把cuihua_and_dog.pymarry()刪除,在test.py里面執(zhí)行marry()這個方法,然把之前的test.py里面的內(nèi)容換成下面這個,(記得把test.pycuihua_and_dog.py這兩個文件放在一個文件夾里面)

# test.py# 從cuihua_and_dog包里面導入marry方法到這里來from cuihua_and_dog import marrymarry()然后運行python test.py,結(jié)果是:

cuihua_and_dog's baby is : cuihuadog__name__名字終于變了,看來老天也覺得這個名字好!就這個了翠花狗子,哈哈!

按照上面看,cuihua_and_dog.py在兩種不同的運行方式里,__name__不一樣:

cuihua_and_dog.py --> __main__+----------+ /| | / 直接運行| __name__ | -------| | / 當做包運行+----------+ / --> cuihua_and_dog就是說,當這個程序直接運行的時候,__name__的值就是__main__,如果作為包運行的時候就是包名。到這里應(yīng)該理解了為什么__name__的值會是 __main__了吧,也是為了防止我們把包的名字取為這個。

回到剛才那個if __name__ == '__main__':這句話上面來,想一下,如果說是直接執(zhí)行這個程序的話,那么這個判斷就成立了,那就執(zhí)行if里面的代碼;如果是被當做包運行,那就不會運行if里面的代碼。

一般在執(zhí)行程序的時候,直接執(zhí)行的那個是父親,被加載的包是子女。

但是翠花和狗子小時候(當做包運行)怎么可能會結(jié)婚呢?這樣做不行,既然可以用if來判斷,我們改一下cuihua_and_dog.py里面的代碼:

# cuihua_and_dog.pydef marry(): if __name__ == "__main__": # 翠花狗子長大了(直接執(zhí)行) baby = "cuihua" + "dog" print("baby is : " + baby) else: # 翠花狗子還是小時候(被當做包導入執(zhí)行) print("They are the kids! It is a guojiajia game!")# 翠花狗子長大了(直接執(zhí)行)if __name__ == "__main__": # 這里我們來布置一下婚禮現(xiàn)場,不能太直接,我們拐彎抹角一下 # 將這個函數(shù)不要說得這么直接,我們說這一天是快樂幸福的一天 OneFineDay = marry() # 這里到婚禮進行之前我們揭曉了 print("One Fine Day is : " + OneFineDay.__name__ ) # 結(jié)婚有了愛情的結(jié)晶 print("As time went by, They had a crystallization of love") OneFineDay()這樣我們在回頭來執(zhí)行一下python test.py,結(jié)果是:

They are the kids! It is a guojiajia game!但是當翠花和狗子長大了(我們直接執(zhí)行)的時候python cuihua_and_dog.py,結(jié)果是

One Fine Day is : marryAs time went by, They had a crystallization of lovebaby is : cuihuadog從這里我們又可以看到,如果直接用__name__的話那么就是代表當前這個包的名字。另外也可以知道函數(shù)的名字,例如上面寫的OneFineDay.__name__,因為最原本的函數(shù)名是 marry ,所以這里是顯示的marry,而不是 OneFineDay

好的,狗子與翠花的故事完結(jié)了,很圓滿。

總結(jié)

參考

python:淺析python 中__name__ = '__main__' 的作用

之前寫在簡書上的,那個上面的格式渲染的好看一些,具體的可以

,為了方便在本站上復(fù)制了一下。如需轉(zhuǎn)載,望能注明來源

關(guān)鍵詞:變量,特殊

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關(guān)閉