检查返回是否不是

时间:2018-05-19 11:37:38

标签: 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)

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

有效吗?如果没有,检查函数是否返回并对结果起作用的更好方法是什么?

谢谢你!

4 个答案:

答案 0 :(得分:1)

命名结果?

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)

答案 1 :(得分:1)

将返回值传递给变量似乎是最快且最自然的方式。非常感谢!

案件结案! :)

顺便说一句,wtf符合那些质量要求?!我不能只说什么解决了问题并感谢人们?!我已经提出了所有帮助我的答案。

答案 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)

答案 3 :(得分: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]

这是您不必两次调用该功能的方式