2017-10-12 124 views
0

我寫了一個模塊,如果它被導入,它會自動更改我的程序的錯誤輸出。幾乎在我編寫的任何Python代碼中使用它都非常方便。從終端運行python程序時添加一個模塊

因此,我不希望將行import my_errorhook添加到我編寫的每個代碼中,但希望自動添加此行。我發現this answer,指出應該避免直接改變python的行爲。因此,我認爲有關更改命令行,像

python --importModule my_errorhook main.py 

,並在.bashrc中定義別名覆蓋python命令來自動添加參數。有什麼辦法可以實現這樣的行爲嗎?

+0

您可以像'python_err'或類似的東西定義自定義命令蟒蛇,並保持你的'python'命令了。 – Ankirama

+0

聽起來很方便,但請記住「顯式比隱式更好」。但是,如果您在閱讀主代碼時並不真正需要了解'my_errorhook',那麼我想這不是什麼大問題,因爲errorhook只會影響錯誤輸出。順便說一句,如果您經常使用Python REPL,則可以將'my_errorhook'添加到名爲PYTHONSTARTUP的啓動腳本中。 –

+0

@ PM2Ring這種方法聽起來也不錯!我如何編輯PYTHONSTARTUP腳本? – Jonas

回答

0

在python命令行中沒有像--importModule這樣的東西。您可以在沒有明確導入的情況下接受代碼的唯一方法是將您的函數放入builtins模塊中。但是,這是一種令人沮喪的做法,因爲如果沒有適當的設計,就會使代碼難以維護。

我們假設你的python文件main.py是整個程序的入口點。現在您可以創建另一個文件bootstrap.py,並將以下代碼添加到新文件中。

import main 

__builtins__.func = lambda x: x>=0 
main.main() 

然後可以從所有模塊調用功能func()而不被導入。例如,在main.py

def main(): 
    ... 
    print(func(1)) 
    ... 
相關問題