其他的IPython技巧
在前面提到,Sage使用了IPython作为它的前端,所有你可以使用任何IPython的命令以及特性。你可以阅读完整的IPython文档来了解这些。下面再介绍一些有趣的技巧,它们在IPython里被称作”魔术命令”。
- 你可以使用
%bg
来在后台执行命令,并使用jobs
来得到输出结果,就像下面这样。(注释中的not tested
表示%bg
语法没有通过Sage的自动测试过程,但在你自己实际使用时,它不会出现问题。这在执行耗时很久的命令时很有用。)
注意在后台运行的任务不会被Sage处理语法(参见预处理器:Sage与Python的差别)。另一种(很迷惑的)用法是sage: def quick(m): return 2*m
sage: %bg quick(20) # not tested
Starting job # 0 in a separate thread.
sage: jobs.status() # not tested
Completed jobs:
0 : quick(20)
sage: jobs[0].result # the actual answer, not tested
40
这样更便利、也更安全。而直接使用sage: %bg eval(preparse('quick(20)')) # not tested
%bg
时不会调用预处理器。 - 如果你想输入一些复杂的代码,可以使用
%edit
、%ed
、ed
来打开一个编辑器。需要在启动Sage前设置EDITOR
环境变量来指向一个你喜欢的编辑器(使用export EDITOR=/usr/bin/emacs
或export EDITOR=/usr/bin/vim
,或是其他的配置文件,如.profile
)。在Sage命令行中,执行%edit
会打开指定的编辑器,之后就可以在编辑器里定义一个函数了:
保存并退出编辑器。在之后的Sage会话中,就可以调用函数def some_function(n):
return n**2 + 3*n + 2
some_function
了。如果你需要再次修改它,只需在Sage命令行里输入%edit some_function
即可。 - 如果你希望将当前的运算结果进行编辑并用于其他的用途,只需在结果处输入
%rep
,这样会将之前的结果复制到命令行中,让你可以编辑它。
这时,在Sage命令行中输入sage: f(x) = cos(x)
sage: f(x).derivative(x)
-sin(x)
%rep
就会打开一个新的Sage命令行,在光标处就会出现-sin(x)
了。
要了解更多技巧,可以输入%quickref
来获得IPython的快速介绍。在编写此节时(2011年4月),Sage使用的IPython版本为0.9.1。在这里可以获得魔术命令的在线文档。更多高级的IPython魔术命令的使用可以在这里找到。