交互式¶
用于设置交互式 SymPy 会话的辅助模块。
会话¶
用于设置交互式会话的工具。
- sympy.interactive.session.enable_automatic_int_sympification(shell)[源代码][源代码]¶
允许 IPython 自动将整数文字转换为整数。
- sympy.interactive.session.init_ipython_session(
- shell=None,
- argv=[],
- auto_symbols=False,
- auto_int_to_Integer=False,
构建新的 IPython 会话。
- sympy.interactive.session.init_session(
- ipython=None,
- pretty_print=True,
- order=None,
- use_unicode=None,
- use_latex=None,
- quiet=False,
- auto_symbols=False,
- auto_int_to_Integer=False,
- str_printer=None,
- pretty_printer=None,
- latex_printer=None,
- argv=[],
初始化一个嵌入的 IPython 或 Python 会话。IPython 会话使用 –pylab 选项启动,不包含 numpy 导入,以便 matplotlib 绘图可以交互。
- 参数:
- pretty_print: boolean
如果为 True,使用 pretty_print 进行字符串化;如果为 False,使用 sstrrepr 进行字符串化。
- order: 字符串或None
这个参数有几个不同的设置:lex(默认),即词典顺序;grlex,即分级词典顺序;grevlex,即反向分级词典顺序;old,用于兼容性原因和长表达式;None,设置为lex。
- use_unicode: 布尔值或None
如果为 True,使用 Unicode 字符;如果为 False,不使用 Unicode 字符。
- use_latex: 布尔值或None
如果为 True,在使用 IPython GUI 时使用 LaTeX 渲染;如果为 False,则不使用 LaTeX 渲染。
- quiet: boolean
如果为 True,init_session 将不会打印关于其状态的消息;如果为 False,init_session 将打印关于其状态的消息。
- auto_symbols: 布尔值
如果为 True,IPython 将自动为您创建符号。如果为 False,则不会。默认值为 False。
- auto_int_to_Integer: boolean
如果为 True,IPython 会自动将整数文字包装为 Integer,因此像 1/2 这样的操作会得到 Rational(1, 2)。如果为 False,则不会。默认值是 False。
- ipython: 布尔值或None
如果为 True,打印将初始化为 IPython 控制台;如果为 False,打印将初始化为普通控制台;默认值为 None,它会自动判断我们是否在 ipython 实例中。
- str_printer: 函数, 可选, 默认=None
自定义字符串打印函数。这应该模仿 sympy.printing.sstrrepr()。
- pretty_printer: 函数, 可选, 默认=None
一个自定义的漂亮打印机。这应该模仿 sympy.printing.pretty()。
- latex_printer: 函数, 可选, 默认=None
一个自定义的 LaTeX 打印机。这应该模仿 sympy.printing.latex()。这应该模仿 sympy.printing.latex()。
- argv: IPython 的参数列表
参见 sympy.bin.isympy 以了解可用于初始化 IPython 的选项。
参见
sympy.interactive.printing.init_printing
有关示例和其他参数。
示例
>>> from sympy import init_session, Symbol, sin, sqrt >>> sin(x) NameError: name 'x' is not defined >>> init_session() >>> sin(x) sin(x) >>> sqrt(5) ___ \/ 5 >>> init_session(pretty_print=False) >>> sqrt(5) sqrt(5) >>> y + x + y**2 + x**2 x**2 + x + y**2 + y >>> init_session(order='grlex') >>> y + x + y**2 + x**2 x**2 + y**2 + x + y >>> init_session(order='grevlex') >>> y * x**2 + x * y**2 x**2*y + x*y**2 >>> init_session(order='old') >>> x**2 + y**2 + x + y x + y + x**2 + y**2 >>> theta = Symbol('theta') >>> theta theta >>> init_session(use_unicode=True) >>> theta θ
- sympy.interactive.session.int_to_Integer(s)[源代码][源代码]¶
用 Integer 包装整数文字。
这是基于 https://docs.python.org/3/library/tokenize.html 中的 decistmt 示例。
只有整数文字被转换。浮点文字保持不变。
示例
>>> from sympy import Integer # noqa: F401 >>> from sympy.interactive.session import int_to_Integer >>> s = '1.2 + 1/2 - 0x12 + a1' >>> int_to_Integer(s) '1.2 +Integer (1 )/Integer (2 )-Integer (0x12 )+a1 ' >>> s = 'print (1/2)' >>> int_to_Integer(s) 'print (Integer (1 )/Integer (2 ))' >>> exec(s) 0.5 >>> exec(int_to_Integer(s)) 1/2
打印¶
用于在交互式会话中设置打印的工具。
- sympy.interactive.printing.init_printing(
- pretty_print=True,
- order=None,
- use_unicode=None,
- use_latex=None,
- wrap_line=None,
- num_columns=None,
- no_global=False,
- ip=None,
- euler=False,
- forecolor=None,
- backcolor='Transparent',
- fontsize='10pt',
- latex_mode='plain',
- print_builtin=True,
- str_printer=None,
- pretty_printer=None,
- latex_printer=None,
- scale=1.0,
- **settings,
根据环境初始化漂亮的打印机。
- 参数:
- pretty_printbool, 默认=True
如果
True
,使用pretty_print()
来字符串化或提供的漂亮打印机;如果False
,使用sstrrepr()
来字符串化或提供的字符串打印机。- 顺序字符串或None,默认=’lex’
这个参数有几个不同的设置:
'lex'``(默认),按字典顺序;
’grlex’,按等级字典顺序;
’grevlex’,按反向等级字典顺序;
’old’,用于兼容性和长表达式;``None
,设置为字典顺序。- use_unicode布尔值或无,默认=无
如果
True
,使用 Unicode 字符;如果False
,不使用 Unicode 字符;如果None
,根据环境进行猜测。- use_latex字符串、布尔值或无,默认=无
如果
True
,在GUI界面中使用默认的LaTeX渲染(png和mathjax);如果False
,不使用LaTeX渲染;如果None
,根据环境进行猜测;如果'png'
,启用带有外部LaTeX编译器的LaTeX渲染,如果外部编译失败则回退到matplotlib;如果'matplotlib'
,启用matplotlib的LaTeX渲染;如果'mathjax'
,启用LaTeX文本生成,例如在IPython笔记本中使用MathJax渲染或在LaTeX文档中进行文本渲染;如果'svg'
,启用带有外部LaTeX编译器的LaTeX渲染,无回退- wrap_line布尔
如果为 True,行将在末尾换行;如果为 False,行将不换行而是继续作为一行。这只在
pretty_print
为 True 时相关。- num_columnsint 或 None, 默认=None
如果
int
,则在换行前设置为 num_columns 列;如果None
,则在换行前设置为终端宽度。仅当pretty_print
为True
时,此设置才相关。- no_globalbool, 默认=False
如果
True
,设置将变为系统范围;如果False
,仅用于此控制台/会话。- ip交互式控制台
这可以是 IPython 的一个实例,或者是一个从 code.InteractiveConsole 派生的类。
- 欧拉bool, 可选, 默认=False
在 LaTeX 预处理中加载 euler 包以使用手写风格字体(https://www.ctan.org/pkg/euler)。
- 前景色字符串或无,可选,默认=无
前景色的DVI设置。
None
表示将根据对IPython终端颜色设置的猜测选择'Black'
、'White'
或'Gray'
。请参阅注释。- 背景颜色string, 可选, 默认=’Transparent’
背景颜色的DVI设置。请参阅注释。
- 字体大小字符串或整数,可选,默认值为’10pt’
传递给 LaTeX 文档类函数的前言中的字体大小。请注意,选项受文档类的限制。建议使用 scale 代替。
- latex_mode字符串,可选,默认=’plain’
LaTeX 打印机中使用的模式。可以是以下之一:
{'inline'|'plain'|'equation'|'equation*'}
。- print_builtin布尔值, 可选, 默认=True
如果
True
,那么浮点数和整数将被打印。如果False
,打印机将只打印 SymPy 类型。- str_printer函数, 可选, 默认=None
自定义字符串打印函数。这应该模仿
sstrrepr()
。- pretty_printer函数, 可选, 默认=None
一个自定义的漂亮打印机。这应该模仿
pretty()
。- latex_printer函数, 可选, 默认=None
一个自定义的 LaTeX 打印机。这应该模仿
latex()
。- 比例float, 可选, 默认=1.0
在使用
'png'
或'svg'
后端时缩放 LaTeX 输出。对高 dpi 屏幕很有用。- 设置
latex
和pretty
命令的任何额外设置都可以用来微调输出。
注释
在使用
'png'
或'svg'
LaTeX 渲染时,可以选择前景色和背景色。请注意,在执行init_printing
命令之前,LaTeX 渲染由 IPython 控制台处理,而不是 SymPy。颜色可以从
dvips
所知的68种标准颜色中选择,列表见 [1]。此外,背景颜色可以设置为 ``’Transparent’``(这是默认值)。当使用
'Auto'
前景色时,猜测基于 IPython 控制台中的colors
变量,参见 [2]。因此,如果该变量在您的 IPython 控制台中正确设置,输出很可能是可读的,尽管可能需要手动设置。参考文献
示例
>>> from sympy.interactive import init_printing >>> from sympy import Symbol, sqrt >>> from sympy.abc import x, y >>> sqrt(5) sqrt(5) >>> init_printing(pretty_print=True) >>> sqrt(5) ___ \/ 5 >>> theta = Symbol('theta') >>> init_printing(use_unicode=True) >>> theta \u03b8 >>> init_printing(use_unicode=False) >>> theta theta >>> init_printing(order='lex') >>> str(y + x + y**2 + x**2) x**2 + x + y**2 + y >>> init_printing(order='grlex') >>> str(y + x + y**2 + x**2) x**2 + x + y**2 + y >>> init_printing(order='grevlex') >>> str(y * x**2 + x * y**2) x**2*y + x*y**2 >>> init_printing(order='old') >>> str(x**2 + y**2 + x + y) x**2 + x + y**2 + y >>> init_printing(num_columns=10) >>> x**2 + x + y**2 + y x + y + x**2 + y**2