像C語言、C++、C#、Java這種語言,程序總是從main函數開始執行的。但Python程序與這些語言不同,它并不需要特殊的函數入口,而是從程序的第一個語句順序往下執行。但在Python中,只有當直接執行包含main函數的代碼塊時,main函數可以得到執行,但當包含main函數的語句塊被導入時不會被執行。
Python是一種解釋型語言,同JavaScript,VbScript一樣是一種腳本語言,其運行過程是從上到下,逐行執行的,代碼的開始即程序的起點,這決定了它不必像Java,C#那種編譯型的語言使用固定的main函數作為程序的入口。
同時,在Python中每個Python文件(后綴為.py)都可以作為一個可以運行的文件,滿足實際工作的需要,這種方式更加靈活,而且方便調試。
在本文第一句話已經講明了Python中main()函數的作用。如果包含main()函數的模塊A中除了main()函數外,可能要單獨實現一些功能,并且只想在單獨運行A這個文件時,執行main()函數中的功能,而在該代碼塊被包含在其它代碼中B不準備執行main()函數的功能時,可以在A中定義main函數,如在main函數中調試A中的一些功能等。
當然,在習慣了C#,Java,C語言等這種程序的人,可能也想通過main函數告知別人,我的程序是從main這里開始運行的,這種情況也是main函數的一個作用。
在Python中,main函數不是必須的,沒有main函數,Python程序同樣可以運行的很好,只要把程序組織的良好,有沒有main函數,同樣可以達到實際需要。
__name__是Python中一個內置的變量,用于存儲當前運行模塊的名稱。
當模塊直接被執行時,其保存的值為__main__;當模塊被其它模塊導入時,顯示其它模塊的名稱。
下面給出一個例子來說明Python中main函數的具體使用方法。
下面這段程序位于名為"hello.py"的文件中。
print("Hello World!")
if __name__ == "__main__":
print("歡迎關注『優雅的代碼』公眾號")
print("我在hello里:"+__name__)
運行輸出的內容如下:
Hello World!
歡迎關注『優雅的代碼』公眾號
我在hello里:__main__
下面這段程序位于testmain.py文件中,程序首先導入上面寫的hello文件,然后額外輸出一行信息。
import hello
print("Hello,優雅的代碼")
print("我在test里:"+__name__)
輸出結果如下所示:
Hello World!
我在hello里:hello
Hello,優雅的代碼
我在test里:__main__
從上面兩段程序來看,當當前程序直接被運行時,__name__的值是“__main__”;而程序被包含到其它程序中運行時,位于被包含程序的__name__值是程序的名稱,如上面的例子中,hello被包含在testmain中執行時,其__name__輸出的值為:hello。
以上是關于Python中main函數的介紹,有誤之處,敬請留言指正。
新聞熱點
疑難解答