检查返回值是否不为None

5
这个在Python3中做是否有效率?
if request_link(requested_domain, requested_link) is not None
    domain_res, link_res, r_res = request_link(requested_domain, requested_link)
    parse_results(domain_res, r_res)

这是否意味着解释器会两次查看同一个函数?

这样做是否高效?如果不是,有更好的方法来检查函数返回空值并根据结果执行操作吗?

谢谢!


是的,这意味着该函数将被执行两次。 - DeepSpace
假设解释器没有运行该函数两次,它应该如何知道在第二次调用时返回相同的值?如果你仔细思考一下,你的问题基本上已经回答了自己... - Jeronimo
4个回答

4

给结果命名?

ret_value = request_link(requested_domain, requested_link)
if ret_value is not None
    domain_res, link_res, r_res = ret_value
    parse_results(domain_res, r_res)

2
将返回值传递给变量似乎是最快和最自然的方法。非常感谢!
问题解决了! :)
顺便说一句,那些质量要求是怎么回事?我不能只说解决了问题并感谢人们吗?我已经为所有帮助过我的答案点赞了。

0

或者在if语句之前存储返回结果:

res = request_link(requested_domain, requested_link) 

如果res不是None: domain_res,link_res,r_res = res parse_results(domain_res,r_res)


0
在我看来,你调用了相同的函数两次,除非Python神奇地检测到你之前调用过这个函数并保留了输出以防止重复调用,否则这可能不是很高效。 从我的角度来看,你的request_link函数返回了一个None或包含domain_res、link_res、r_res的列表,但如果我想这样做,我会像下面这样做:
def request_link(requested_domain, requested_link):
    ...
    if desired_otput:
        return True,domain_res, link_res, r_res
    else: 
        return False, None, None, None

接着在主函数中:

result = request_link(requested_domain, requested_link)
if result[0]:# this means that results are not none
    #do what you want with result[1], result[2] , result[3]

这是你不必调用函数两次的方法


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接