【问题标题】:Why cant I pass a python variable to a jupyter magic function?为什么我不能将 python 变量传递给 jupyter 魔术函数?
【发布时间】:2019-07-18 18:15:04
【问题描述】:

我正在尝试创建一个小部件按钮,该按钮将收集其他小部件的值,然后使用 %run 执行具有这些值的另一个笔记本。我正在使用 %store 传递值,但它无法识别带有要传递的值的 python 变量并给出错误。

import ipywidgets as widgets
from IPython import get_ipython
ipython = get_ipython()

def on_button_clicked(_):
    path=srch_loc.value
    with out:            
        path= srch_loc.value #returns the value typed into widget srch_loc
        print('Something happens!')
        print(path)
        ipython.magic("store path")

button.on_click(on_button_clicked)

当我点击按钮时,结果如下:

Something happens!
/san-data/users/$USER/
UsageError: Unknown variable 'path'

打印函数将路径识别为变量,但下一行代码不识别

我希望不会收到未知变量消息,如果我运行 %store 以查看列出的路径,其中包含来自 srch_loc.value 的正确值

【问题讨论】:

  • 我尝试删除 $USER 以确保它不会导致问题但结果相同。

标签: ipython jupyter jupyter-lab ipywidgets


【解决方案1】:

您的 path 变量是您的函数的本地变量。 IPython 魔法尝试访问由笔记本代码定义的变量,其范围不同。

【讨论】:

  • 感谢罗兰的回复。如果我在函数末尾添加return path,那不应该把它放在与 IPython 魔法相同的范围内吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-04
  • 2013-01-02
  • 1970-01-01
  • 1970-01-01
  • 2020-08-24
  • 2012-01-15
  • 2011-02-05
相关资源
最近更新 更多