2017-01-21 12 views
3

sympy.init_printing()으로 전화하면 {a, b, c}에서 set([a, b, c])으로 표기가 변경됩니다. 왜 이런 일이 생길까요?sympy.init_printing이 표기법을 변경하는 이유는 무엇입니까?

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]) 

+0

세트에는 내장 명령이 없습니다. 어떤 순서로든 인쇄 할 수 있습니다. – DyZ

+0

@DYZ 주문과 관련이 없습니다. init_printing()을 사용하면'{1,2}'가'set ([1,2])'로 표시됩니다. (우리의 코멘트를 삭제하자) –

답변

2

이 파이썬 2 대 3 문제 (또한 도시 된 바와 같이 항목의 순서를 변경한다). Python 2에서, 세트 리터럴이 파이썬 2.7까지 추가되지 않았기 때문에, 세트는 set([...])과 같이 인쇄됩니다. SymPy 프린터 3.

SymPy 버전 1.0 이후 파이썬 전에 만들어진, SymPy는 더 이상 파이썬 2.6은 지원하지 않습니다, 그래서 이것은 항상 문자열 프린터 https://github.com/sympy/sympy/pull/11116에서 (심지어 파이썬 2) {...}를 사용하여 인쇄 SymPy 마스터에서 수정되었습니다 , 그러나 명백하게 나는 예쁜 프린터가 이것을 또한하는 것을 놓쳤다. 난 https://github.com/sympy/sympy/pull/12087에 수정을했습니다.

간단히 말해서 이러한 변경 사항 (즉, SymPy 개발 버전 및 이후 버전)을 변경하면 SymPy 인쇄물은 {...} 표기법을 사용하여 세트를 인쇄합니다.