Python 如何删除所有已定义的符号而不显式列出它们?
这里是SymPy和Python新手 我运行了一个脚本,它迭代了许多测试文件。每个文件定义一组要使用的符号。在每次循环迭代结束时,我想删除前面使用Python 如何删除所有已定义的符号而不显式列出它们?,python,sympy,Python,Sympy,这里是SymPy和Python新手 我运行了一个脚本,它迭代了许多测试文件。每个文件定义一组要使用的符号。在每次循环迭代结束时,我想删除前面使用symbols()语句创建的所有符号,因为我使用的是其他非符号变量 我不能做del(x)和del(y),因为每次迭代都会加载一组不同的符号 我可以将使用的符号列表放在列表或元组中,然后在每次迭代结束时,检查创建的符号列表,然后使用del一次删除一个符号,但我无法实现这一点 这里有一个例子 from sympy import * x,y = symbo
symbols()
语句创建的所有符号,因为我使用的是其他非符号变量
我不能做del(x)
和del(y)
,因为每次迭代都会加载一组不同的符号
我可以将使用的符号列表放在列表或元组中,然后在每次迭代结束时,检查创建的符号列表,然后使用del
一次删除一个符号,但我无法实现这一点
这里有一个例子
from sympy import *
x,y = symbols('x y')
symbolsToDelete = (x,y) #I also tried symbolsToDelete = ('x','y')
x=y**3
y=99
#now I want to delete all symbols defined above. But I can't
#use del(x) or del(y) explicitly. So I tried
for z0 in symbolsToDelete:
del(z0)
但上述方法不起作用,x
和y
仍然存在,其中x=y**3
和y=99
同样,我知道我可以在最后执行del(x)
和del(y)
,但我正在从文件中读取变量的名称,并且名称在列表中
我只能像上面那样将符号放在一个变量中,但不知道如何迭代这个元组,然后在每个条目上使用del()
,在迭代结束时使用symbols
命令删除上面定义的对应符号
我不知道正确的语法应该是什么
我正在使用Python3.6.5中解释了您的尝试不起作用的原因-在
[x,y]
上循环时,您删除了对对象的其他引用(在迭代过程中创建),而原始引用保持不变
您可以通过以下方式访问x
和y
来删除它们
symbolsToDelete = ('x', 'y')
for z0 in symbolsToDelete:
del globals()[z0]
顺便说一下:在
y=99
之后,Python变量y
不再是SymPy符号,它只是一个Python整数99。前面的赋值y=symbols('y')
被完全遗忘。将SymPy符号视为“变量”是不明智的,因为它们没有变化:它们是不可变的,不能“赋值”。