python在启动的时候,有一个-i 参数。此参数的功能是,在运行完python代码后,直接进入interactive模式。
在某些时候,为了调试方便,或者少些一些through-away的代码,可以使用此参数。在有 -i 参数的情况下,python解释器先执行代码,然后不退出解释器,而是直接进入交互模式。此时,我们在交互模式下,就可以查看各种对象的状态,并可以在交互模式下调用调试。
使用python3 -h,查看 -i 参数的解释:
-i : inspect interactively after running script; forces a prompt even
if stdin does not appear to be a terminal; also PYTHONINSPECT=x
比如我有一个函数A,我不想在交互模式下写这个函数,因为写完就没了。因此我在一个文件中编写此函数,文件名为func_a.py:
def A(**kw):
print('i am function A')
然后,我想在交互模式下测试这个A函数。我以往的做法是先进入python解释器,然后 from func_a import A,有点费劲,因为每次A修改了之后,还要重新reload。
现在可以这样,使用 -i 参数:
$ python3 -i func_a.py
>>> dir()
['A', '__annotations__', '__builtins__', '__cached__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
>>> A()
i am in funcion A
func_a.py执行过程没有任何输出,然后我们就看到了>>>提示符,此时A函数在全局的namespace里面,可以直接调用。如果A函数有修改,退出python解释器,使用 -i 参数重新进一次!我理解python设计这个 -i 参数,主要是为了调试代码。
-- EOF --