【发布时间】:2020-01-22 06:21:03
【问题描述】:
我可以得到一个“未定义”符号的名称:
import sympy as sym
knodef = sym.Symbol('k_{nodef}')
print(type(knodef))
sym.pprint(knodef.name)
<class 'sympy.core.symbol.Symbol'>
k_{nodef}
但是一旦我将它定义为一个表达式,我就无法再得到它的名字了。
kdef = sym.Symbol('k_{def}')
kdef = sym.tan(b*x)
print(type(kdef))
sym.pprint(kdef.name) # AttributeError: 'tan' object has no attribute 'name'
tan
<Error raised>
如何获取 kdef 的名称?
函数也一样...
knodef2 = sym.Function('k_{nodef2}')
#display(disp.Math(knodef2.name), type(knodef2))
print(type(knodef2))
sym.pprint(knodef2.name)
<class 'sympy.core.function.UndefinedFunction'>
k_{nodef2}
...(在这种情况下是否有定义符号的等价物)?
【问题讨论】:
-
您重新定义了变量
kdef。它不再是Symbol。现在是tan表达式。sympy在 python 中运行,=是 python 运算符,而不是sympy。 -
@hpaulj - 所以你的意思是
kdef失去了与字符串'k_{def}'的所有关联,就好像它从未声明过一样? -
正确。在python中,您不声明变量。您为变量赋值,随后的赋值会覆盖之前的赋值。变量只是引用对象的方式。第二次赋值后
kdef指的是sympy.tan对象。 -
@hpaulj - 太棒了!多亏了你们的 cmets,我做了一些修改,学到了一些重要的东西。