如何从func中返回两种不同的类型?

时间:2017-10-06 15:39:35

标签: python python-3.x

我有以下方法:

is_pending_exists, email = await self.check_for_pending_status(comment.alert_id)
if is_pending_exists:
    comment['status'] = COMMENT_STATUS.PENDING
    if email is not None:
        comment['email'] = email

这就是我使用它的方式:

tuple

我是python中的新手。我不知道用一种方法返回True, comm.get('email') - False只返回一个值 - {{1}}。

有没有办法改进算法并以更加pythonic的方式重写它(我的意思是重写循环迭代)?

2 个答案:

答案 0 :(得分:3)

如果comm.get('email') 不能<{1}}本身,您只需返回待处理评论的电子邮件(如果有)或None否则

None

然后像这样检查:

async def check_for_pending_status(self, alert_id):
    alert_comments = await get_comments(alert_id)
    for comm in alert_comments:
        if comm['status'] == COMMENT_STATUS.PENDING.value:
            return comm.get('email')
    return None

您也可以使用pending_email = await self.check_for_pending_status(comment.alert_id) if pending_email is not None: comment['status'] = COMMENT_STATUS.PENDING comment['email'] = email 重写此内容,但是否更好可能是品味问题:

next

答案 1 :(得分:2)

从方法中返回tuple非常好。

如果您不喜欢仅返回False的事实,则可以随时返回False, None