其他的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魔术命令的使用可以在这里找到。
 
                         
                                

