2013-11-15 111 views
2

得到了一個單獨運行的循環腳本,現在我想在第一個腳本里面添加另一個腳本,我在第一個文件的開始處插入了一個var,如果它是true,則加載第二個模塊。它工作,但我想知道他是否是一個好習慣?Python最佳實踐導入模塊

if abilitaPippo == True: 
    try: 
     import Pippo 
     Pippoabilitato = True 
    except ImportError: 
     Pippoabilitato = False 
else: 
    Pippoabilitato = False 
+0

沒有。可怕。使用功能。 – shx2

+0

請說明你的意思是「添加的第一個內的另一個劇本」 –

+0

也許幫助: http://stackoverflow.com/questions/5027352/how-to-test-if-one-python-module-has -been-imported – Farhadix

回答

1

Python模塊,其中「做事」在全球範圍內變得脆弱,因爲他們的工作方式不同,當直接運行到導入時。在Python進程中,一個模塊只會在第一次導入時執行一次。之後,import檢測到它已經被加載,不需要做任何事情。

看一看這樣的:http://plope.com/Members/chrism/import_time_side_effects

這避免副作用也是典型的Python的成語

if __name__ == '__main__': 
    main() 

,你會經常看到腳本命令行運行的原因。從命令行運行時,__name__全局變量是字符串'main',但是當導入模塊時,__name__是模塊的名稱,因此不直接運行任何內容。

1

Python是不是C與#ifdef等和,因此,你應該避免的代碼條件包含。換句話說,你可以做到這一點,但不建議在Python中練習。

相反,你應該弄清楚代碼應該做什麼,然後根據它編寫它。例如,您可以將命令行標誌傳遞給腳本,並根據傳遞的命令行標誌讓運行時行爲發生變化。

這已經在Python有人說是常見的有以下的可能會或可能不會被安裝的模塊:

try: 
    import mymodule 
except ImportError: 
    pass