我有一個用作計算器的python程序。我決定學習如何將其導入到其他程序中,所以我說:導入我的模塊使程序自己運行
if __name__ == "__main__":
main()
我用盡我的導入模塊很多次,它是所有運行的主要功能只有在編輯器中的import語句。我所做的只是輸入計算器,它只是運行它。我不是很確定如果名稱聲明是這樣做的,所以如果有人會詳細說明它如何幫助導入我的程序,那就太好了。
我有一個用作計算器的python程序。我決定學習如何將其導入到其他程序中,所以我說:導入我的模塊使程序自己運行
if __name__ == "__main__":
main()
我用盡我的導入模塊很多次,它是所有運行的主要功能只有在編輯器中的import語句。我所做的只是輸入計算器,它只是運行它。我不是很確定如果名稱聲明是這樣做的,所以如果有人會詳細說明它如何幫助導入我的程序,那就太好了。
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!
獲取打印)只有當您將其作爲腳本運行時,而不是作爲模塊導入時。
see here對if __name__ == "__main__"
的更多信息,但快速的摘錄
執行代碼之前,它將定義幾個特殊變量。例如,如果python解釋器正在將該模塊(源文件)作爲主程序運行,則它會將特殊的
__name__
變量設置爲值"__main__"
。如果從另一個模塊導入此文件,__name__
將被設置爲模塊的名稱。
因此,if __name__ == "__main__"
塊中包含的任何代碼只有在您致電python mymodule.py
時纔會運行。它不會運行,如果你打電話python importsmymodule.py
。
至於你的具體問題,沒有看到計算器模塊的代碼,這是不可能告訴,但它似乎不言而喻在腳本中調用計算器啓動。
聽起來像你還有一些東西在'if __name__ =='__main __'之外,它總是運行代碼。 – user2357112
可能的重複[如果\ _ \ _ name \ _ \ _ ==「\ _ \ _ main \ _ \ _」:do?](https:// stackoverflow。com/questions/419163/what-do-if-name-main-do) – toonarmycaptain
@toonarmycaptain我不認爲這是一個騙局。這個問題是手動提出的問題,但是這個問題真的在問:「我的代碼在if __name__ ==」__main __「block」中執行時如何在導入時運行,而不是「if __name__ ==「__main __」「做」 –