You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

错误原因

  1. market_data是函数get_latest_prices内部的局部变量,函数外部代码无法直接访问局部变量。
  2. 函数get_latest_prices没有return语句,调用后不会返回任何数据,外部自然无法获取market_data。
  3. 最后一行的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

错误原因

  1. 报错行return market_data = api.get_security_quotes(stock_codes)是语法错误,Python的return语句不能直接跟随赋值表达式(若需同时赋值和返回,需用海象运算符:=,但这并非常规写法)。
  2. 函数外部的return latest_prices属于语法错误,return只能在函数内部使用。
  3. 函数外部的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:50:09