python中的name等於main是什麼
通俗的理解_name_ == '_main_':假如你叫小明.py,在朋友眼中,你是小明(_name_ == '小明');在你自己眼中,你是你自己(_name_ == '_main_')。
if _name_ == '_main_'的意思是:當.py檔案被直接執行時,if _name_ == '_main_'之下的程式碼塊將被執行;當.py檔案以模組形式被匯入時,if _name_ == '_main_'之下的程式碼塊不被執行。
程式入口
對於很多程式語言來說,程式都必須要有一個入口,比如C,C++,以及完全物件導向的程式語言Java,C#等。如果你接觸過這些語言,對於程式入口這個概念應該很好理解,C,C++都需要有一個main函式作為程式的入口,也就是程式的執行會從main函式開始。同樣,Java,C#必須要有一個包含Main方法的主類,作為程式入口。
而Python則不同,它屬於指令碼語言,不像編譯型語言那樣先將程式編譯成二進位制再執行,而是動態的逐行解釋執行。也就是從指令碼第一行開始執行,沒有統一的入口。
一個Python原始碼檔案(.py)除了可以被直接執行外,還可以作為模組(也就是庫),被其他.py檔案匯入。不管是直接執行還是被匯入,.py檔案的最頂層程式碼都會被執行(Python用縮排來區分程式碼層次),而當一個.py檔案作為模組被匯入時,我們可能不希望一部分程式碼被執行。
一個.py檔案被其他.py檔案引用
假設我們有一個const.py檔案,內容如下:
PI = 3.14 def main(): print("PI:", PI) main() # 執行結果:PI: 3.14
現在,我們寫一個用於計算圓面積的area.py檔案,area.py檔案需要用到const.py檔案中的PI變數。從const.py中,我們把PI變數匯入area.py:
from const import PI def calc_round_area(radius): return PI * (radius ** 2) def main(): print("round area: ", calc_round_area(2)) main()
執行結果
PI: 3.14 round area: 12.56
修改const.py,新增if name == "main"
我們看到const.py中的main函式也被執行了,實際上我們不希望它被執行,因為const.py提供的main函式只是為了測試常量定義。這時if _name_ == '_main_'派上了用場,我們把const.py改一下,新增if _name_ == "_main_":
PI = 3.14 def main(): print("PI:", PI) if __name__ == "__main__": main()
如上,我們可以看到if _name_ == '_main_'相當於Python模擬的程式入口,Python本身並沒有這麼規定,這只是一種編碼習慣。由於模組之間相互引用,不同模組可能有這樣的定義,而程式入口只有一個。到底哪個程式入口被選中,這取決於__name__的值。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4692/viewspace-2836429/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- __name__ == '__main__' 到底是什麼意思AI
- Python中“if __name__=='__main__PythonAI
- 【Python】__name__ 是什麼?Python
- __name__ == “__main__”的作用是什麼?AI
- __name__ == "__main__"的作用是什麼?AI
- Python中if __name__ == '__main__'作用解析PythonAI
- 寫了2年python,知道 if __name__ == '__main__' 什麼意思嗎?PythonAI
- python中的__name__=='__main__'如何簡單理解PythonAI
- python---之if _name_ == '_main_'PythonAI
- if __name__==”__main__”:AI
- if __name__ == ‘__main__‘AI
- python中的input是什麼Python
- python中的字典是什麼Python
- AS執行main()方法報錯:SourceSet with name ‘main‘ not foundAI
- Python中的rad是什麼意思?Python
- Python中的作用域是什麼Python
- python中loc是什麼Python
- Android 的 getIntExtra(name, defaultValue)裡 defaultValue是什麼意思Android
- 什麼是冪等
- Python中什麼是閉包?閉包的好處是什麼?Python
- SAP Marketing Cloud裡的contact main facet是什麼意思CloudAI
- 【等保】等保測評中雙因素認證是什麼意思?等於雙因子認證嗎?
- 什麼是分散式系統中的冪等性分散式
- Python 中的 *args 和 **kwargs 是什麼Python
- Python中的mechanize模組是什麼?Python
- Python中的類和物件是什麼Python物件
- python OpenCV中的閾值是什麼PythonOpenCV
- python中global是什麼意思?Python
- python中mat是什麼意思?Python
- python中return是什麼意思?Python
- Python中的arange是什麼?和range有什麼不同?Python
- 為什麼Java的main方法必須是public static void?JavaAI
- python中Matplotlib是什麼?怎麼用?Python
- Python中的main函式解析PythonAI函式
- Python是什麼意思?Python幹什麼用的?Python
- Python中的“特權種族”是什麼?Python
- Python 中的數字到底是什麼?Python
- python中類方法的區別是什麼Python