我可以在 Python 脚本中间设置一个交互式控制台,如下所示:
import code
a, b = 5, 7
c = [1, 2, 34]
shareVars = {'a':a, 'b':b, 'c':c}
shell = code.InteractiveConsole(shareVars)
print 'Before interacting, variables are: ', a, b, c
shell.interact('Available variables: %s' % ', '.join(shareVars.keys()))
print 'Done interacting, variables are: ', a, b, c
在窗口上按下Ctrl+Z
时,会话返回到脚本并打印出发送到交互式会话的变量的值。
现在,我想以某种方式将变量的修改从交互式会话传达给我的脚本。我注意到这似乎只适用于交互式会话中可变对象的就地修改。
例如,如果我在交互式会话中键入以下内容:
>>> c.append(5) # change will be carried over to the script
>>> c = [56, 67] # c will remain unchanged in the original script
>>> a+=3 # a will remain unchanged in the original script
退出到主脚本后,我得到以下输出:
Done interacting, variables are: ', 5, 7, [1, 2, 34, 5]
有没有办法消除可变对象的就地修改和所有其他类型的更改之间的这种区别?如何轻松地将变量从交互式会话传回脚本?我必须走这pickle-unpickle
条路吗?