为何使用Clear["Global`*"]无法清除K[r]?
为什么Mathematica中Clear["Global`*"]无法清除K[r]?
问题原因
核心在于K是Mathematica的内置系统符号,它归属System上下文,而非你当前操作的Global上下文:
- 当执行
K[r]=4r;时,实际是给内置符号K添加了一个函数定义(DownValue),这个定义虽在当前会话中创建,但符号本身属于系统上下文。 Clear["Global*"]仅负责清除Global上下文下所有自定义符号的定义、值等信息,不会触及System`上下文里的内置符号及其附加定义。- 而A[r]、B[r]是你在
Global上下文创建的自定义符号,因此Clear["Global*"]`可以完全清除它们的定义。
解决办法
- 若要清除K的自定义定义,直接使用
Clear[K],它会清除该符号的所有DownValues、UpValues等; - 或使用
ClearAll[K],除清除定义外,还会清除符号的属性、消息等附加信息。
原代码示例
In[1]:=$Context K[r]=4r; Clear["Global`*"]; K[r] Out[1]=Global` Out[4]=4r
内容的提问来源于stack exchange,提问作者matrixbud
相关产品推荐
相关产品推荐

