Python 检查return是否为None

Python 检查return是否为None,python,python-3.x,if-statement,return,nonetype,Python,Python 3.x,If Statement,Return,Nonetype,在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) 这是否意味着解释器将检查同一函数两次 效率高吗?如果不是,那么检查函数是否返回none并根据结果执行操作的

在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)
这是否意味着解释器将检查同一函数两次

效率高吗?如果不是,那么检查函数是否返回none并根据结果执行操作的更好方法是什么

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)
谢谢大家!

说出结果

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)

可能只是将返回结果存储在if语句之前:

res = request_link(requested_domain, requested_link) 
如果res不是None:
domain\u res,link\u res,r\u res=res parse\u results(domain\u res,r\u res)

在我看来,您调用了同一个函数两次,并且可能没有效率,除非python神奇地检测到您之前调用过这个函数,并保留输出以防止重复调用。 据我所见,听起来您的request\u link函数返回一个None或一个包含domain\u res、link\u res、r\u 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]

这是一种不必两次调用函数的方法,将返回传递给变量似乎是最快、最自然的方法。非常感谢

案件结案!:)


顺便说一句,wtf符合这些质量要求?!我就不能说是什么解决了问题并感谢大家吗?!我已经对所有帮助我的答案进行了投票。

是的,这意味着函数将在两次后执行。如果解释器没有两次运行该函数,它怎么知道在第二次调用时返回相同的值?如果你想一想,你的问题基本上会自动回答。。。