Python 表达式在哪里转换为表达式树并求解?

Python 表达式在哪里转换为表达式树并求解?,python,expression-trees,sympy,Python,Expression Trees,Sympy,我正在调试Symphy模块,了解如何计算表达式 我使用了下面给出的一个简单代码: from sympy.abc import x,y,z ee = x+y+x print(ee) 在第二行保留一个断点,它的下一个功能是 def __sympifyit_wrapper(a, b): 将a作为x,b作为y,func作为Add的inside decorators.py。 谁能告诉我这里分配a和b的是哪个文件,以及后台运行的是什么。x、y和z都是sympy.core.

我正在调试Symphy模块,了解如何计算表达式 我使用了下面给出的一个简单代码:

    from sympy.abc import x,y,z
    ee = x+y+x
    print(ee)
在第二行保留一个断点,它的下一个功能是

    def __sympifyit_wrapper(a, b):
将a作为x,b作为y,func作为Add的inside decorators.py。
谁能告诉我这里分配a和b的是哪个文件,以及后台运行的是什么。

x
y
z
都是
sympy.core.symbol.symbol
对象
Symbol
s源于
sympy.core.expr.AtomicExpr
,后者又源于
sympy.core.expr.expr


调用
x+
(其中
是任何东西)调用关联的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
函数,该函数由
sympyfyit
修饰,它反过来是
sympy.core.decore.decore>的简单包装器(执行代码的第一位)

首先读取
symphy.abc
x
y
z
的定义(我假设它们都是一些抽象基类的实例)初始化为符号类的那些,我可以用x,y=symbols('xy')手动执行这里唯一合乎逻辑的飞跃是知道
foo+bar
调用
foo.\uu添加\uuu(bar)
。您试图做的是什么?您要么无法深入挖掘源代码,要么还没有了解dunder方法,但您试图解开sympy的内在魔力?是的,先生,现在您已经解释了这一点。但是,正如文档中所给出的,每个表达式都转换为表达式树,我认为我知道表达式将首先转换为树,代码遍历树以简化它或将其转换为规范形式。因此,我记住了这一点,不理解基本内容。