python - 用于检查赋值的pythonic方法,如果没有则退出

时间:2014-03-16 17:38:35

标签: python coding-style nonetype

我正在寻找类似于(C)

的python
 if ((p = malloc(N * sizeof(*p))) == NULL) return 1;

user = getUser() or return这样的东西不起作用,也不会if (user = getUser() is None) return - 什么是pythonic方式?

2 个答案:

答案 0 :(得分:2)

如果您正在寻找一种方法来分配和检查指定的值,那么就没有一种方法,Python会阻止您创建一个。

user = get_user()
if user is None:
    return None

答案 1 :(得分:2)

您可以在两种情况下使用context management

  • get_user()会返回您可以调整的课程类型

  • 您愿意在get_user返回的类中定义两个特殊函数,即

    __enter__(self)
    __exit__(self, exception_type, exception_value, traceback)
    

现在,让我们假设您的User课程已经完成并准备就绪,然后您可以编写以下内容

with get_user() as user:
    # do what you need to do 

因此,这种分配发生在with语句中,该语句在进入和退出上下文管理范围时调用您的特殊方法。在这些方法中,您可以指定检查以及失败或成功的行为以符合您的规范