保存和读取完整的会话

Sage可以非常灵活的保存和读取会话。

命令save_session(sessionname)将所有当前会话中定义的变量保存为字典,并以sessionname命名。(很少有变量不能保存的情况,这时该变量就不会保存到字典中去。)会话保存到.sobj文件中,可以象之前保存的那些对象一样重新读取。当你读取一个会话中的对象时,你会得到一个字典,索引是变量的名字,值是对象。

你可以用load_session(sessionname)命令把定义在sessionname中的变量读取到当前会话。注意,这不会清除你在当前会话中已经定义的那些变量;或者说,合并了两个会话。

首先我们打开Sage并定义一些变量。

  1. sage: E = EllipticCurve('11a')
  2. sage: M = ModularSymbols(37)
  3. sage: a = 389
  4. sage: t = M.T(2003).matrix(); t.charpoly().factor()
  5. _4 = (x - 2004) * (x - 12)^2 * (x + 54)^2

下面保存我们的会话,这将上面每一个变量都保存到一个文件中。查看这个文件,大小是3K左右。

  1. sage: save_session('misc')
  2. Saving a
  3. Saving M
  4. Saving t
  5. Saving E
  6. sage: quit
  7. was@form:~/tmp$ls -l misc.sobj
  8. -rw-r--r-- 1 was was 2979 2006-01-28 19:47 misc.sobj

最后我们重新启动Sage,定义另外一个变量,并把我们保存的会话读进来。

  1. sage: b = 19
  2. sage: load_session('misc')
  3. Loading a
  4. Loading M
  5. Loading E
  6. Loading t

每一个保存的变量都再次可用,而且变量b也没有被覆盖。

  1. sage: M
  2. Full Modular Symbols space for Gamma_0(37) of weight 2 with sign 0
  3. and dimension 5 over Rational Field
  4. sage: E
  5. Elliptic Curve defined by y^2 + y = x^3 - x^2 - 10*x - 20 over Rational
  6. Field
  7. sage: b
  8. 19
  9. sage: a
  10. 389