以下有两段代码,都是发送API请求来获取需要的值,具体内容不深究,本文主要以如何提高自己的代码能力方面做学习记录。
代码一:
# 每5秒请求一次API返回p值import requests
import timeurl = "https://api.biyingapi.com/hsrl/ssjy/000004/52F1AC58-A19D-4C24-BDAA-2C8506610C93"while True:try:response = requests.get(url)data = response.json() # 解析JSON响应p_value = data.get("p") # 获取"p"的值print(f"p: {p_value}") # 打印"p"的值time.sleep(5) # 每5秒请求一次except Exception as e:print(f"请求失败: {e}")time.sleep(5) # 如果请求失败,等待5秒再重试
代码二:
# 每5秒请求一次API返回fundingRate值import requests
import timedef get_funding_rate():url = "https://aws.okx.com/api/v5/public/funding-rate?instId=BTC-USD-SWAP"response = requests.get(url)if response.status_code == 200:data = response.json()if data["code"] == "0" and data["data"]:funding_rate = data["data"][0]["fundingRate"]return funding_ratereturn Nonewhile True:funding_rate = get_funding_rate()if funding_rate is not None:print(f"Funding Rate: {funding_rate}")else:print("Failed to retrieve funding rate.")time.sleep(5)
这两段代码在格式和风格上有几个明显的区别:
-
函数封装:
第二段代码使用了一个函数get_funding_rate()
来封装请求逻辑。这种方式使得代码更模块化,便于重用和维护。而第一段代码将所有逻辑放在了主循环中,缺少封装。 -
错误处理:
- 第一段代码在
try-except
块中捕获所有异常,并在请求失败时等待 5 秒再重试。 - 第二段代码没有使用
try-except
进行异常处理,而是依赖response.status_code
来判断请求是否成功。虽然这样在某种程度上减少了代码复杂性,但可能在网络异常等情况时会导致未捕获的异常。
- 第一段代码在
-
返回值处理:
第二段代码清晰地返回funding_rate
或None
,使得主循环部分的逻辑更易于理解。第一段代码直接在循环中处理值,这样会使主逻辑更加复杂。 -
打印语句:
第一段代码在打印错误消息时包含了异常信息,而第二段代码则更关注于获取的值和请求是否成功。这使得第一段代码在调试时更为详尽。
总结来说,第二段代码在结构化和可维护性上做得更好,而第一段代码则更简单直接。选择使用哪种风格通常取决于具体需求和代码的复杂性。
这些内容主要涉及以下几个方面的学习:
-
Python 编程基础:
理解 Python 的基本语法、数据结构和控制流(如循环和条件判断)。 -
函数封装与模块化:
学习如何将代码封装在函数中,以提高代码的可读性和重用性。这是良好编程实践的重要部分,有助于维护和扩展代码。 -
错误处理:
理解如何处理异常和错误。这是确保程序在遇到问题时能够优雅地处理而不是崩溃的关键。 -
API 请求与响应处理:
学习如何使用requests
库与外部 API 进行交互,包括如何发送请求、解析 JSON 响应以及提取需要的数据。 -
代码可读性与风格:
理解代码的可读性和风格的重要性,学习如何使用合适的命名和结构使代码更易于理解和维护。 -
调试与日志记录:
学习如何在程序中添加调试信息,以帮助发现和修复问题。适当的日志记录可以提高代码的可维护性。
这些方面的学习对于提高编程能力、开发更复杂的项目以及在实际工作中进行有效的团队合作都是非常重要的。