Python 使用JupyterNotebook从ipywidget函数定义全局变量
我使用ipywidgets允许用户选择一些值,我希望将小部件内函数的结果分配给函数外的变量,并在笔记本的下一个单元格中使用它(我尝试使用全局变量,但无法使其工作): 将此函数调用为Python 使用JupyterNotebook从ipywidget函数定义全局变量,python,ipywidgets,Python,Ipywidgets,我使用ipywidgets允许用户选择一些值,我希望将小部件内函数的结果分配给函数外的变量,并在笔记本的下一个单元格中使用它(我尝试使用全局变量,但无法使其工作): 将此函数调用为result=issuer\u choice()并单击按钮时,代码每次都能正确打印ticker,这意味着在选择选项时更新函数中的值。但是,在下一个单元格中调用print(result)会打印None,这意味着ticker不会分配给result *data.csv只是一列数据框,其中存储了ID和名称列表 我想它应该是关于
result=issuer\u choice()
并单击按钮时,代码每次都能正确打印ticker
,这意味着在选择选项时更新函数中的值。但是,在下一个单元格中调用print(result)
会打印None
,这意味着ticker
不会分配给result
*data.csv只是一列数据框,其中存储了ID和名称列表
我想它应该是关于
ticker
变量的范围,但我不知道。非常感谢您的帮助。如果您要求使用global ticker
,请确保ticker
已经是您的全局范围中定义的名称,即使您将其设置为“无”,也可以稍后在您的全局范围中调用它
另外,如果你用一个简单的假数据框来代替像read\u csv
调用这样的东西,它会让你的例子更容易理解和使用
ticker=None
def issuer_选项():
从ipywidgets导入小部件
从IPython.display导入显示中,清除\u输出
作为pd进口熊猫
def myfunc(idnum):
返回数据。loc[idnum]['cod']
def on_按钮_单击(b):
全球股票行情
ticker=myfunc(w.value)
输出:
清除输出()
打印('Ticker CIQ:'+str(Ticker))
data=pd.Series({'A':1,'B':2,'C':3})
data=data.to_frame(name='cod')
w=widgets.Dropdown(options=list(data.index),description='Label:')
按钮=小部件。按钮(description=“获取ID”)
output=widgets.output()
显示器(w)
显示(按钮、输出)
按钮。单击时(单击时)
def issuer_choice():
from ipywidgets import widgets
from IPython.display import display, clear_output
import pandas as pd
def myfunc(idnum):
return data.loc[idnum]['cod']
def on_button_clicked(b):
global ticker
ticker = myfunc(w.value)
with output:
clear_output()
print('Ticker CIQ: ' + ticker)
data = pd.read_csv('data.csv', sep=',', index_col = 1)
w = widgets.Dropdown(options=list(data.index), description = 'Label:')
button = widgets.Button(description="Obtain ID")
output = widgets.Output()
display(w)
display(button, output)
button.on_click(on_button_clicked)
return ticker