if name == "main":可以看成是python程式的入口,就像java的main()方法,但不完全正確。
事實上python程式是從上而下逐行運行的,在.py檔案中,除了def後定義函數外的程式碼都會被認為是「main」方法中的內容從上而下執行。如果只是寫個偉大的"hello world",不想寫函數的話,僅僅是print(‘hello world’)就可以,這就是一個“程序”,不需要所謂的“main”方法入口。當然如果是測試函數功能就需要在.py檔中寫上if name == "main",再呼叫函數。
例如如下hello.py檔:
print("first") def sayHello(): str = "hello" print(str); print(__name__+'from hello.sayhello()') if __name__ == "__main__": print ('This is main of module "hello.py"') sayHello() print(__name__+'from hello.main')
運行結果:
first This is main of module "hello.py" hello __main__ from hello.sayhello() __main__ from hello.main
懂我意思吧?先執行的第一行print再執行「入口」中的東西
話說回來,if name == "main"這句話是個什麼意思呢?
name__其實是內建屬性,指示目前py檔案呼叫方式的方法。當上述例子運作的時候,整個程式中不管是哪個位置的__name__屬性,值都是__main,當這個hello.py檔案作為模組被導入到另一個.py檔案中(即import)比如說world .py,而你執行的是world.py,此時hello.py中的__name__屬性就會變成hello,所謂的入口因為if判斷失敗就不執行了
所以if語句的判斷成功虛擬了一個main()方法。
說到了phthon是逐行執行的,所以當它讀到import hello的時候,也會執行hello.py,例如運行如下world.py檔:
import hello#上一个例子的hello.py if __name__ == "__main__": print ('This is main of module "world.py"') hello.sayHello() print(__name__)
執行結果:
first This is main of module "world.py" hello hellofrom hello.sayhello() main
可以看到hello.py中的第一行print(‘first’)直接被執行了,並且hello.py中的__name__輸出的也是hello,world.py中的name輸出的是__main__
#以上是Python中的main方法怎麼使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!