Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何删除所有已定义的符号而不显式列出它们?_Python_Sympy - Fatal编程技术网

Python 如何删除所有已定义的符号而不显式列出它们?

Python 如何删除所有已定义的符号而不显式列出它们?,python,sympy,Python,Sympy,这里是SymPy和Python新手 我运行了一个脚本,它迭代了许多测试文件。每个文件定义一组要使用的符号。在每次循环迭代结束时,我想删除前面使用symbols()语句创建的所有符号,因为我使用的是其他非符号变量 我不能做del(x)和del(y),因为每次迭代都会加载一组不同的符号 我可以将使用的符号列表放在列表或元组中,然后在每次迭代结束时,检查创建的符号列表,然后使用del一次删除一个符号,但我无法实现这一点 这里有一个例子 from sympy import * x,y = symbo

这里是SymPy和Python新手

我运行了一个脚本,它迭代了许多测试文件。每个文件定义一组要使用的符号。在每次循环迭代结束时,我想删除前面使用
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符号视为“变量”是不明智的,因为它们没有变化:它们是不可变的,不能“赋值”。