澄清字符串如何在python函数中作为参数工作

澄清字符串如何在python函数中作为参数工作,python,python-3.x,yahoo-finance,Python,Python 3.x,Yahoo Finance,我已经找到了解决我的问题的方法,至少现在是这样,但我想知道是否有更好的方法,以及实际的逻辑是什么。 我正在学习Python的金融应用程序。我已经学会了如何通过pandas_datareader请求单个或多个引号的数据。今天我试着把这个过程变成一个函数 对于单引号(比如苹果),代码如下所示: stock_data = pandas_datareader.DataReader('AAPL', data_source = 'yahoo', start = '2000-1-1') 我想将此转换为一个函

我已经找到了解决我的问题的方法,至少现在是这样,但我想知道是否有更好的方法,以及实际的逻辑是什么。 我正在学习Python的金融应用程序。我已经学会了如何通过pandas_datareader请求单个或多个引号的数据。今天我试着把这个过程变成一个函数

对于单引号(比如苹果),代码如下所示:

stock_data = pandas_datareader.DataReader('AAPL', data_source = 'yahoo', start = '2000-1-1')
我想将此转换为一个函数,在该函数中,您可以将股票的符号作为参数传递,并获取股票的数据,例如:

def stock(x):
     stock_data = pandas_datareader.DataReader(x, data_source = 'yahoo', start = '2000-1-1')
     print(stock_data)
理由是
stock('AAPL')
将返回苹果的数据,
stock(FB)
也将返回FB的数据,以此类推

我发现它不是这样工作的,我想知道如何告诉函数它应该期望的参数是字符串

目前,我就是这样解决的,但我并没有真正遵循特定的逻辑,我只是不断尝试:

def stock(x):
    stock_data = pandas_datareader.DataReader(str(x), data_source = 'yahoo', start = '2000-1-1')
    print(stock_data)
我理解这一点的方式是,在第2行中,我告诉它使用x将其转换为字符串,然后从那里移动,因此当我最终编写
stock('AAPL')
时,它会按预期工作。我想我的问题是,我是否总是需要将参数转换为字符串?为什么x作为参数不能是任何东西,包括字符串?

stock(FB)不起作用,因为它不是字符串格式,FB还没有定义。Python将抛出一个错误,如:NameError:name'a'没有定义 它应该是股票(“FB”)。 这里我们将“FB”作为字符串传递 或者你也可以

x = "FB"
stock(x)

您必须将格式更改为String,否则Python会将其视为尚未定义的对象。

So.<代码>股票[ AAPL ] < /C>在您的第一次尝试中不起作用吗?错误消息或输出是什么?@rcriii我一定输入了错误,因为我一直收到一个我记不起来的错误,但现在它工作正常。真奇怪。def price(x):pr=wb.DataReader(x,data_source='yahoo',start='2000-1-1')打印(pr)price('AAPL')现在工作正常。很高兴它工作正常。将来,最好将您键入的命令和回溯复制到您的问题中。有时候,仅仅在不同的背景下看它,就能帮助你自己发现错误。这很有道理,我已经试过了。但我更愿意立即传递参数,而不必首先将其赋给变量。我找到的解决方案似乎允许我以这种方式工作,而不是每次调用函数并将股票符号作为参数时都必须更改x。这是我不明白的。正如你正确地说FB是未定义的,但为什么“FB”仍然未定义?我的意思是,即使有引用。函数不应该理解我在传递一个字符串吗?你能告诉我你是如何传递参数的吗?您是手动操作还是有其他代码可以执行?def stock():stock\u data=pandas\u datareader.datareader(输入(“回车”)、data\u source='yahoo',start='2000-1-1')打印(stock\u data)如果是手动操作,那么这应该可以工作。我是手动操作的,现在似乎可以工作了。我甚至不知道问题出在哪里,我浪费了一整天的时间想弄清楚。def price(x):pr=pandas\u datareader.datareader(x,data\u source='yahoo',start='2000-1-1')打印(pr)价格('AAPL'))