从运行的interp启用Sympy常符号模式

2024-04-25 10:01:55 发布

您现在位置:Python中文网/ 问答频道 /正文

isympy命令启动导入sympy的解释器。我还可以提供以下选项,以“交互模式”启动解释器:

  -a, --auto-symbols    automatically construct missing symbols
  -i, --int-to-Integer  automatically wrap int literals with Integer
  -I, --interactive     equivalent to -a -i

在标准Python或IPython解释器中导入Sympy之后,是否有方法启用此模型? 这对于使用Jupyter笔记本特别有用。你知道吗


Tags: to命令auto选项模式integerconstruct解释器
2条回答

我根据Ondrej的答案对代码进行了进一步的挖掘,找到了一种绕过bug的方法:

尽管呼叫:

ipython.interactive.init_session(ipython=None, auto_symbols=True, auto_int_to_Integer=True)

在运行IPython时不起作用, 在标准的Python控制台中,它启动IPython会话并按预期初始化它。你知道吗

它不能从IPython工作的原因是init_session中的大部分初始化工作是在对ipython.interactive.session.init_ipython_session的调用中完成的。 但是,init_session检查它是否已经在IPython会话中,如果已经在,则跳过init_ipython_session调用。 由于init_ipython_sessioninit_ipython可以做的第一件有意义的事情,因此可以通过显式调用init\u ipython\u session ` first:

from sympy.interactive import init_session
from sympy.interactive.session import init_ipython_session
init_ipython_session(auto_symbols=True, auto_int_to_Integer=True)
init_session(ipython=None, auto_symbols=True, auto_int_to_Integer=True)

这将使正在运行的Ipython会话进入所需模式。 然而,初始化只在下一个“单元”生效。 例如,将上述代码与依赖于初始化的代码一起粘贴到IPython控制台将失败。 初始化和依赖它的代码必须分别粘贴。 在jupyter笔记本中,上述代码必须位于单独的单元格中。你知道吗

如果您查看isympy的源代码,就会发现它实际上只是将命令行选项解析为sympy.interactive.init_session()函数的参数。因此,您可以在Jupyter笔记本会话(也是suggested in the docs)中使用所需的参数运行该函数。你知道吗

相关问题 更多 >