检查返回是否不是

问题描述 投票:1回答:4

在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)

这是否意味着解释器将两次查看相同的函数?

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

谢谢!

python python-3.x if-statement return nonetype
4个回答
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
投票

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

案件结案! :)

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


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]

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

© www.soinside.com 2019 - 2024. All rights reserved.