Mathematica 9 is now available

2.6.8 上下文

总是给变量或定义选用尽可能清楚的名称是一个好思想,但这样做有时会导致 变量名很长. 在 Mathematica 中可以用上下文来组织符号名. 在引入与其它符号 不冲突的变量名的 Mathematica 程序包中上下文特别有用. 在编写或调用程序包时, 就需要了解上下文.
其基本的思想是任何符号的全名为两部分:上下文和一个短名. 全名被写为 context`short,其中`是倒引号,在Mathematica 中称为 上下文标记.

这里是具有短名 x 和上下文 aaaa 的符号

可以像其它符号一样使用这一符号

例如,可定义这个符号的值

Mathematicaa`xb`x 当作两个完全不同的符号

典型的情况是让与一个特殊的主题相关的符号有相同的上下文. 例如,表示物理单位的符号具有上下文 PhysicalUnits`,这类符号 的全名可能是 PhysicalUnits`Joule, PhysicalUnits`Mole.
尽管总可以用全名来代表一个符号,但用短名常常很方便.
Mathematica 进程中的任何点,总有一个当前的上下文 $Context, 可以用短名简单地指代这个上下文中的符号.

Mathematica 进程的默认上下文是 Global`

在当前上下文中,短名就够用了

上下文在 Mathematica 中的工作在某种程度上类似于许多操作系统的文件目录, 可以通过路径和全名指定一个文件. 但在任何点,总有一个当前目录,这类似于 Mathematica 的当前上下文. 在当前目录下的文件就可以仅用它的短名指定.
与许多操作系统中的目录一样,Mathematica 中的上下文具有启发式的特性, 例如,符号的全名可以涉及到一系列形如  ` ` `name 的上下文名.

在不同上下文中指定符号

在上下文 a`b` 中的符号

开始了一个 Mathematica 进程后,默认当前上下文是 Global`. 引入的符号通常就在这个上下文中. 但内部符号 Pi 等在 System` `Context 中.
为了方便地处理 Global`System` 中的符号,Mathematica 支持 上下文搜索路径. 在 Mathematica 进程中的任一点,有当前 上下文 $Context 和当前上下文搜索路径 $ContextPath. 搜索路径的思想是在输入一个符号的短名后,Mathematica 在一系列 上下文中搜索去找到有这个短名的符号. Mathematica 中的 context 搜索路径与 Unix 和 MS-DOS 操作系统中搜索路径相似.

默认的上下文路径包括系统定义符号的 context

输入 PiMathematica 将它翻译为具有全名 System`Pi 的符号

找出上下文和上下文搜索路径

Mathematica 中使用上下文时,在两个不同的上下文中两个符号可以 有相同的短名. 例如,在 PhysicalUnits`BiologicalOrganisms` context 中都可以使用短名 Mole. 于是, 在输入短名 Mole 后,就产生了你实际上调用了哪一个符号的问题. 解决这个问题时要弄清楚在上下文搜索路径中哪一个上下文先出现.

这里引入两个具有 Mole 短名的符号

这里对 $ContextPath 添加了两个上下文

在这里输入 Mole 时,得到了在 PhysicalUnits` 中的符号

一般地,当输入一个符号的短名后,Mathematica 认为你需要在 上下文搜索路径中最早出现的上下文中的符号. 上下文出现晚的符号将被屏蔽, 为了调用这些符号必须用全名.
在引入的新符号屏蔽了当前 $ContextPath 中已经存在的符号时, Mathematica 就会发出警告. 如果在笔记本环境中,Mathematica 就提示你要保存哪一个符号.

这里在 Global`Context 中引入了有短名 Mole 的符号,Mathematica 警告新符号屏蔽了已经存在的短名为 Mole 的符号

如果在这里输入 Mole,就会得到在 Global`Context 中的符号

如果引入的符号屏蔽了已经存在的符号,则需要重新安排 $ContextPath,或直接删去这个符号. 仅清除这个符号的值是不够的,必须从 Mathematica 中全部删除这个符号,这可以用函数 Remove[s] 来实现.

清除或删除Mathematica中的符号

删除符号 Global`Mole

此时输入 Mole 后就会得到符号 PhysicalUnits`Mole

Mathematica 显示一个符号名时,它必须选择去显示全名或短名. 它所作的是给出所有你应该输入的名称以得到特定的符号,给出当前 $Context$ContextPath 的设置.

对第一个符号先显示短名,这就是输入短名后应该得到的符号

当输入了一个短名,它既不在当前上下文内,也不在上下文的搜索路径内, Mathematica 就产生一个具有该短名的新符号,且总是把新符号放在由 $Context 指定的当 前上下文中.

这里引入具有短名 tree 的符号

Mathematica 在当前上下文 Global` 内增加了tree



Any questions about topics on this page? Click here to get an individual response.Buy NowMore Information
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.