2017-10-12 115 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)) 
    ...