gpt4 book ai didi

python - 将变量传递回 Python 交互式控制台 session 的调用者

转载 作者:太空宇宙 更新时间:2023-11-04 10:46:10 24 4
gpt4 key购买 nike

我可以在 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

在 Windows 上按下 Ctrl+Z 时, session 返回到脚本并打印出发送到交互式 session 的变量值。

现在,我想以某种方式将对变量的修改从交互式 session 传送到我的脚本。我注意到这似乎只适用于在交互式 session 中就地修改可变对象。

例如,如果我在交互式 session 中键入以下内容:

>>> 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]

有没有办法消除可变对象的就地修改与所有其他类型的更改之间的区别?如何轻松地将交互式 session 中的变量传回脚本?我必须走 pickle-unpickle 路线吗?

最佳答案

您的 shareVars 字典是交互式 shell 在其中工作的命名空间;对该命名空间的任何分配都直接反射(reflect)在该字典中。

如果您需要往返某些变量,则需要从 shareVars 字典中设置这些变量:

a, b, c = shareVars['a'], shareVars['b'], shareVars['c']

与 Python 中的其他地方一样,在交互式 shell 中重新绑定(bind)变量不会更新对旧值的其他引用。

关于python - 将变量传递回 Python 交互式控制台 session 的调用者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17123409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com