gpt4 book ai didi

python - PyROOT 是如何改变 python 解释器的?

转载 作者:太空狗 更新时间:2023-10-30 02:57:15 25 4
gpt4 key购买 nike

如果我尝试在 python 中运行 .ls,毫不奇怪我会得到 SyntaxError

>>> .ls
File "<stdin>", line 1
.ls
^
SyntaxError: invalid syntax

但是如果我导入 PyROOT,它会以某种方式使此语法合法(并且表现与在 ROOT 中一样,列出当前文件的内容;在此处的示例中我没有打开任何文件。)

>>> import ROOT
>>> .ls
>>>

类似地,.q 在我导入 ROOT 后退出 Python 解释器,就像在普通 ROOT 解释器中一样。

这是如何工作的?

最佳答案

它可以在 lib/ROOT.py 中找到

有一个条件,如果不是 ipython,则 sys.excepthook 被重新定义:

sys.excepthook = _excepthook

依次包含以下内容:

### RINT command emulation     
------------------------------------------------------
def _excepthook( exctype, value, traceb ):
# catch syntax errors only (they contain the full line)
if isinstance( value, SyntaxError ) and value.text:
cmd, arg = split( value.text[:-1] )

# mimic ROOT/CINT commands
if cmd == '.q':
sys.exit( 0 )

或以下几行:

  elif cmd == '.ls':
return sys.modules[ __name__ ].gDirectory.ls()

如果这些都不起作用,它会恢复正常处理事情。

关于python - PyROOT 是如何改变 python 解释器的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37738012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com