为什么sympy.init_printing会更改设置符号?

时间:2017-01-21 00:13:30

标签: python set sympy repr

当我致电sympy.init_printing()时,请将记事本从{a, b, c}更改为set([a, b, c])。为什么会这样?

In [1]: import sympy

In [2]: (x, y, z) = sympy.symbols("x y z")

In [3]: x+y**z
Out[3]: x + y**z

In [4]: (x+y**z).free_symbols
Out[4]: {z, y, x}

In [5]: sympy.init_printing()

In [6]: x+y**z
Out[6]: 
     z
x + y 

In [7]: (x+y**z).free_symbols
Out[7]: set([x, y, z])

In [8]: {1, 2, 3}
Out[8]: set([1, 2, 3])

(它还会更改所示项目的顺序)

1 个答案:

答案 0 :(得分:2)

这是Python 2 vs. 3的问题。在Python 2中,集合的打印方式与set([...])类似,因为在Python 2.7之前不会添加{...}集合文字。 SymPy打印机是在Python 3之前制作的。

在SymPy版本1.0之后,SymPy不再支持Python 2.6,因此在SymPy master中已修复此问题,以便始终使用{...}(即使在Python 2中)在https://github.com/sympy/sympy/pull/11116打印字符串打印机,但是显然我错过了漂亮的打印机也这样做。我在https://github.com/sympy/sympy/pull/12087处修了一下。

因此,简而言之,在这些更改之后(即,在SymPy的开发版本和所有未来版本中),SymPy打印将使用{...}表示法打印集合。