使用pycoingecko调用CoinGecko API返回异常,如何单独获取币种名称与美元价格?
代码问题根因
- 现有实现存在两处核心逻辑错误:
- 调用
cg.get_price()接口后,没有把返回的价格字典存入变量,哪怕之前单独写了一行带参数的接口调用,因为没有接收返回值,请求拿到的价格数据完全不会被后续代码使用,属于无效调用。 - 打印语句指向错误目标:直接
print(cg.get_price)是输出方法对象本身的内存标识,不是执行方法拿到的返回结果,因此才会输出绑定方法的那段提示文本,而非预期的价格数据。
- 调用
可实现需求的调整方案
按照「接收接口返回值-拆分提取字段-分开输出」的逻辑调整代码,就能实现单独输出代币名、单独输出对应美元价格的效果,完整可运行代码如下:
from pycoingecko import CoinGeckoAPI cg = CoinGeckoAPI() # 存储接口返回的结构化价格数据 price_data = cg.get_price(ids='bitcoin', vs_currencies='usd') # 从返回的字典中单独提取字段 # 字典第一层键即为查询的代币名称 token_name = list(price_data.keys())[0] # 顺着字典层级提取对应美元价格 usd_price = price_data[token_name]["usd"] # 分开展示结果 print(f"代币名称:{token_name}") print(f"美元价格:{usd_price}")
扩展说明
- 如果后续需要查询多个代币,只需要修改
ids参数的传值(用逗号分隔多个代币id,比如ids='bitcoin,ethereum,solana'),遍历price_data的键值对即可批量提取所有代币的对应价格,不需要逐行硬编码取值路径。 - 打印方法结果时必须在方法名后加括号完成调用,只要遗漏括号,本质都是在打印方法对象本身,和传入的参数没有关系。
内容的提问来源于stack exchange,提问作者BlueSky Trading
相关产品推荐
相关产品推荐

