我在orbital.py中有一个函数:
def get_data(stock):
yahoodata = pdr.get_data_yahoo(stock,start,end)
return yahoodata
!jupyter nbconvert --to script orbital.ipynb
在一个单独的笔记本中,我从上面导入模块:
import orbital
from orbital import *
start = dt.date(2007,1,1)
end = dt.date.today()
stock = ['AAPL','TSLA]
get_data(stock)
但是得到以下错误:
NameError: global name 'start' is not defined
不知道该怎么做,我的预期输出能够在第二个笔记本中灵活地改变开始和结束,并使用我从orbital.py文件导入的get_data函数。
答案 0 :(得分:1)
您的函数get_data
接受一个参数。它无权访问start
和end
,因为它们不在同一名称空间中,因此无法访问。您需要将这些变量作为参数传递给您的函数:
orbital.py
:
def get_data(stock, start, end): # receiving those variables here
yahoodata = pdr.get_data_yahoo(stock, start, end)
return yahoodata
Notebook
:
...
df = get_data(stock, start, end) # passing those variables here