处理exec内部函数以进行符号计算

时间:2018-07-19 19:50:01

标签: python sympy

我试图将exec包含在创建变量的函数中,以便使用简单符号求解方程。但是,由于解决方案是在exec内部创建的,因此会产生错误:int

ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Centro Custo"). _
    CurrentPage = "(All)"
    With ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Centro Custo")
        .PivotItems(ThisWorkbook.Sheets("Macro").Range("B" & ºL).Value).Visible = True
    End With

我必须替换方程式中未知变量的原因是因为SymPy求解器无法处理可能带有下标的变量,例如.PivotItems("Blablabla").Visible = True 。无论如何,当我不使用函数时,只需将其作为脚本运行即可产生以下解决方案:

UnboundLocalError: local variable 'sol' referenced before assignment

1 个答案:

答案 0 :(得分:3)

您不能动态更新局部变量,包括exec。参见How does exec work with locals?

您需要做的是:

sol = sym.solve(eqn, sym.Symbol(some_symbol))

不需要exec,因为不需要创建与符号同名的变量。根据指向它们的变量名称,对象的行为不会有所不同。