交互式

用于设置交互式 SymPy 会话的辅助模块。

会话

用于设置交互式会话的工具。

sympy.interactive.session.enable_automatic_int_sympification(shell)[源代码][源代码]

允许 IPython 自动将整数文字转换为整数。

sympy.interactive.session.enable_automatic_symbols(shell)[源代码][源代码]

允许 IPython 自动创建符号(isympy -a)。

sympy.interactive.session.init_ipython_session(
shell=None,
argv=[],
auto_symbols=False,
auto_int_to_Integer=False,
)[源代码][源代码]

构建新的 IPython 会话。

sympy.interactive.session.init_python_session()[源代码][源代码]

构建新的 Python 会话。

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_printTrue 时,此设置才相关。

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 屏幕很有用。

设置

latexpretty 命令的任何额外设置都可以用来微调输出。

注释

在使用 '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