2017-10-13 17 views
0

我有一個用作計算器的python程序。我決定學習如何將其導入到其他程序中,所以我說:導入我的模塊使程序自己運行

if __name__ == "__main__": 
    main() 

我用盡我的導入模塊很多次,它是所有運行的主要功能只有在編輯器中的import語句。我所做的只是輸入計算器,它只是運行它。我不是很確定如果名稱聲明是這樣做的,所以如果有人會詳細說明它如何幫助導入我的程序,那就太好了。

+4

聽起來像你還有一些東西在'if __name__ =='__main __'之外,它總是運行代碼。 – user2357112

+0

可能的重複[如果\ _ \ _ name \ _ \ _ ==「\ _ \ _ main \ _ \ _」:do?](https:// stackoverflow。com/questions/419163/what-do-if-name-main-do) – toonarmycaptain

+0

@toonarmycaptain我不認爲這是一個騙局。這個問題是手動提出的問題,但是這個問題真的在問:「我的代碼在if __name__ ==」__main __「block」中執行時如何在導入時運行,而不是「if __name__ ==「__main __」「做」 –

回答

1

if __name__ == "__main__": main()條件檢查是否通過python解釋器運行腳本並調用main()函數。如需更詳細的說明,請參閱這個問題What does if name == 「main」: do?

如果你有這樣的

# script.py 
def hello_world(): 
    print "Hello World!" 

hello_world() 

if __name__ == "__main__": 
    main() 

Hello World!程序是否導入script.py或類似python script.py命令行運行它,會被打印,因爲執行函數hello_world()在這兩種情況下。

例1:從命令行中運行

$ python script.py 
Hello World! 
Traceback (most recent call last): 
    File "/path/to/tests/script.py", line 8, in <module> 
    main() 
NameError: name 'main' is not defined 

情況2:導入作爲模塊

>>> import script 
Hello World! 

如果要被打印停止它,然後包裹該執行部分代碼的主要功能是這樣的:

def hello_world(): 
     print "Hello World!" 

def main(): 
    hello_world() 

if __name__ == "__main__": 
    main() 

現在,hello_world()被調用(或Hello World!獲取打印)只有當您將其作爲腳本運行時,而不是作爲模塊導入時。

0

see hereif __name__ == "__main__"的更多信息,但快速的摘錄

執行代碼之前,它將定義幾個特殊變量。例如,如果python解釋器正在將該模塊(源文件)作爲主程序運行,則它會將特殊的__name__變量設置爲值"__main__"。如果從另一個模塊導入此文件,__name__將被設置爲模塊的名稱。

因此,if __name__ == "__main__"塊中包含的任何代碼只有在您致電python mymodule.py時纔會運行。它不會運行,如果你打電話python importsmymodule.py

至於你的具體問題,沒有看到計算器模塊的代碼,這是不可能告訴,但它似乎不言而喻在腳本中調用計算器啓動。

相關問題