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

Python3重复调用函数判空是否高效?最优实现方式咨询

关于Python中重复调用函数的效率问题

先直接给你明确答案:是的,Python解释器会两次执行request_link(requested_domain, requested_link)这个函数。因为if判断里是第一次调用,赋值语句里是第二次调用,这是两个完全独立的函数执行操作——如果这个函数是耗时的(比如发起网络请求、做大量计算),那这种写法的效率问题会非常明显。

这种写法显然低效,重复调用不仅会让执行时间直接翻倍,还可能带来额外的资源浪费(比如重复建立网络连接、重复读取文件等)。

更优的处理方式

核心思路就是只调用一次函数,把结果存到变量里,再基于变量做判断和处理,具体有两种常用写法:

写法一:先赋值再判断(兼容性好,适合所有Python3版本)

# 先调用一次函数,把结果存起来
link_result = request_link(requested_domain, requested_link)
# 对保存的结果做判断
if link_result is not None:
    domain_res, link_res, r_res = link_result
    parse_results(domain_res, r_res)

写法二:用赋值表达式(Python3.8+支持,代码更紧凑)

如果你的Python版本在3.8及以上,可以用海象运算符:=把赋值和判断合并成一行,同样只调用一次函数:

# 调用函数并赋值,同时判断结果是否非None
if (link_result := request_link(requested_domain, requested_link)) is not None:
    domain_res, link_res, r_res = link_result
    parse_results(domain_res, r_res)

额外提醒

如果request_link是你自己实现的函数,建议确保它的返回值格式稳定(比如确定返回None或者三元组),这样解构赋值的时候不会出错。另外,对于任何耗时的函数,都要避免无意义的重复调用,这是Python性能优化里最基础的原则之一。

内容的提问来源于stack exchange,提问作者michuhu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:58:09