Python代码遇NameError与SyntaxError,请求排查解决
Pytdx库获取股票数据的报错排查与解决
一、初始代码的NameError问题
初始代码
>>> from pytdx.hq import TdxHq_API >>> >>> def get_latest_prices(stock_codes): ... api = TdxHq_API() ... with api.connect('119.147.212.81', 7709): ... market_data = api.get_security_quotes(stock_codes) ... api.disconnect() ... >>> latest_prices = {} >>> for data in market_data: ... stock_code = data['code'] ... latest_price = data['price'] ... latest_prices[stock_code] = latest_price ... Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'market_data' is not defined >>> return latest_prices
错误原因
market_data是函数get_latest_prices内部的局部变量,函数外部代码无法直接访问局部变量。- 函数
get_latest_prices没有return语句,调用后不会返回任何数据,外部自然无法获取market_data。 - 最后一行的
return latest_prices写在函数外部,属于语法错误,return仅能在函数内部使用。
解决方法
修改函数使其返回数据,调用函数时接收返回值,再处理数据:
from pytdx.hq import TdxHq_API def get_latest_prices(stock_codes): api = TdxHq_API() with api.connect('119.147.212.81', 7709): market_data = api.get_security_quotes(stock_codes) api.disconnect() return market_data # 添加return返回数据 # 替换为实际股票代码列表,格式为(市场代码, 股票代码),深市0、沪市1 stock_codes = [(0, '000001'), (1, '600000')] market_data = get_latest_prices(stock_codes) latest_prices = {} for data in market_data: stock_code = data['code'] latest_price = data['price'] latest_prices[stock_code] = latest_price print(latest_prices)
二、修改后代码的SyntaxError问题
修改后代码及报错
from pytdx.hq import TdxHq_API def get_latest_prices(stock_codes): api = TdxHq_API() with api.connect('119.147.212.81', 7709): market_data = api.get_security_quotes(stock_codes) api.disconnect() return market_data latest_prices = {} for data in market_data: stock_code = data['code'] latest_price = data['price'] latest_prices[stock_code] = latest_price return latest_prices
报错信息:
Cell In[5], line 7 return market_data = api.get_security_quotes(stock_codes) ^ SyntaxError: invalid syntax
错误原因
- 报错行
return market_data = api.get_security_quotes(stock_codes)是语法错误,Python的return语句不能直接跟随赋值表达式(若需同时赋值和返回,需用海象运算符:=,但这并非常规写法)。 - 函数外部的
return latest_prices属于语法错误,return只能在函数内部使用。 - 函数外部的
for data in market_data中,market_data未被赋值,因为没有调用get_latest_prices函数并接收其返回值。
解决方法
修正语法错误,确保变量正确赋值,调整后代码如下:
from pytdx.hq import TdxHq_API def get_latest_prices(stock_codes): api = TdxHq_API() with api.connect('119.147.212.81', 7709): # 可直接返回接口调用结果,无需额外赋值 return api.get_security_quotes(stock_codes) # with块结束后连接自动关闭,api.disconnect()可省略 # 调用函数获取数据 stock_codes = [(0, '000001'), (1, '600000')] market_data = get_latest_prices(stock_codes) latest_prices = {} for data in market_data: stock_code = data['code'] latest_price = data['price'] latest_prices[stock_code] = latest_price print(latest_prices)
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

