问题描述
至少到目前为止,我已经找到解决问题的方法,但是我想知道是否有更好的方法,以及实际的逻辑是什么。 我正在学习金融应用程序的Python。我了解了如何通过pandas_datareader请求单引号或多引号的数据。今天,我试图将过程转换为功能。
对于单引号(例如Apple),代码如下:
stock_data = pandas_datareader.DataReader('AAPL',data_source = 'yahoo',start = '2000-1-1')
我想将其转换为一个函数,您可以在其中传递股票的代码作为参数并获取股票的数据,例如:
def stock(x):
stock_data = pandas_datareader.DataReader(x,start = '2000-1-1')
print(stock_data)
理由是stock('AAPL')
将返回Apple的数据,stock(FB)
将对FB执行相同的操作,依此类推。
我发现它无法通过这种方式工作,我想知道如何告诉函数它应该期望的参数是字符串?
现在这是我的解决方法,但是我并没有真正遵循特定的逻辑,我只是不断尝试:
def stock(x):
stock_data = pandas_datareader.DataReader(str(x),start = '2000-1-1')
print(stock_data)
我理解它的工作方式是在第2行中,我告诉它将x转换为字符串并从那里移动,因此当我最终编写stock('AAPL')
时,它可以按预期工作。我想我的问题是我是否总是需要将参数转换为字符串?为什么x作为参数不能是任何东西,包括字符串?
解决方法
stock(FB)无法工作,因为它不是字符串格式,尚未定义FB.Python会抛出类似错误:NameError:name'a'not defined 它应该是stock(“ FB”)。 在这里,我们将“ FB”作为字符串传递 或者你可以做
x = "FB"
stock(x)
您必须将格式更改为字符串,否则python会将其视为尚未定义的对象。