2013-03-16 44 views

回答

28

你仍然需要通話功能。

def main(): # declaring a function just declares it - the code doesn't run 
    print("boo") 

main() # here we call the function 
+0

爲**** !!!! && $$$ $$$啊該死的拿它。我花了太多時間不知道我沒有打電話給main(),謝謝!我仍然生氣。 – 2015-09-18 18:23:49

4

你需要調用該函數,更新腳本

#! /usr/bin/python 

def main(): 
    print("boo") 

#call it 
main() 
13

我假設你想要做的是當腳本從命令行執行調用打印功能。

在Python中可以計算出,如果含有一段代碼腳本是相同的,將其通過檢查__name__變量針對__main__最初啓動的腳本。

#! /usr/bin/python 

if __name__ == '__main__': 
    print("boo") 

只需這行代碼:

def main(): 
    print("boo") 

你定義一個函數,而不是實際調用它。要調用函數main(),你需要調用它像這樣:

main() 
1

在Python中,如果你想編寫一個腳本來執行一系列小任務順序,那麼就絕對沒有需要編寫一個函數來包含它們。只要把它們放在一條線上;或使用像;表達式分隔符(並不推薦使用,但你可以做的是你願意的話),也同樣:

task1 
task2 
task3 
task4 

task1; task2; task3; (again **not** really recommended, and certainly not pythonic) 

你的情況,你的代碼可以變成像:

print('boo') 
print('boo2') 
print('boo3') 

,當你期望它,沒有main()方法,因爲他們得到中進行評價它仍然會採取行動。

請注意,原因,你可能要爲這些一系列的任務創建一個功能是:

  • 呈現一個漂亮的界面(以代碼的客戶端),
  • 或封裝重複的邏輯
  • 可能有更多的用途,但這是我能想出的第一個,並有助於證明我的觀點。

現在,如果你覺得有必要寫類似於main()方法在其他編程語言的代碼,那麼請使用以下蟒蛇成語(如至今由其他用戶說明):

if __name__ == '__main__': 
    doSomething() 

的上述工作如下:

  • 當你import一個Python模塊,它得到了string(通常,在其被導入的名稱)指定爲__name__屬性。當您直接執行腳本(通過調用蟒蛇VM和傳遞腳本的名稱作爲參數)
  • ,則__name__屬性設置爲__main__
  • 所以當你使用上面的成語,你既可以使用腳本作爲import的可插拔模塊,只需直接執行即可直接對if __name__ == '__main__':下的一系列表達式進行評估。

你應該覺得有必要通過更多的信息,去挖掘,我的消息來源有以下幾條: