Python 检查return是否为None
在python3中这样做有效吗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并根据结果执行操作的
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符合这些质量要求?!我就不能说是什么解决了问题并感谢大家吗?!我已经对所有帮助我的答案进行了投票。是的,这意味着函数将在两次后执行。如果解释器没有两次运行该函数,它怎么知道在第二次调用时返回相同的值?如果你想一想,你的问题基本上会自动回答。。。