如何在Python elif分支前赋值函数返回值以避免重复API调用?
Python API调用优化:避免重复函数调用
针对你遇到的重复调用function_3导致两次API请求的问题,有两种可行的实现方式:
方法一:使用海象运算符(Python 3.8+)
利用Python 3.8引入的海象运算符:=,可以在表达式内部完成赋值,既保留elif的短路求值逻辑,又只调用一次function_3:
for tickers in ticklist: if function_1(x, y): do task1 elif function_2(x, y): do task1 elif (var := function_3(x, y)) > a and var < b: do task1 else: do task2
海象运算符会先执行function_3(x, y),把结果赋值给var,再用var判断范围,确保仅触发一次API请求。
方法二:兼容旧版本Python(3.8以下)
如果你的Python版本不支持海象运算符,可以调整代码结构,在进入最终分支后再调用function_3:
for tickers in ticklist: if function_1(x, y): do task1 elif function_2(x, y): do task1 else: var = function_3(x, y) if var > a and var < b: do task1 else: do task2
这种写法同样保证只有前两个条件不满足时,才会调用一次function_3,避免了重复API请求,逻辑清晰且兼容所有Python版本。
内容的提问来源于stack exchange,提问作者Suman Raj Manandhar
相关产品推荐
相关产品推荐

