如何简化if子句中的多个条件?

时间:2018-09-08 06:08:36

标签: python django python-3.x

我已经用Django编写了一个代码,例如:

phone = request.data.get("phone")
password = request.data.get("password")
age = request.data.get("age")
name = request.data.get("name")

if not phone or not password or not age or not name: #multiple not checks
    return Response({"status": False})

它需要进行多个not检查,有什么办法可以更简单地编写此代码?

2 个答案:

答案 0 :(得分:4)

您不允许在此处选择任何内容或将其保留为空,所以您可以这样做:

if not (phone and password and age and name):
    return Response({"status": False})

如果方括号内的任何变量为空/空/假,则整个条件为假。

答案 1 :(得分:1)

您的 request.data 似乎是输入有效负载/查询参数。因此,我假设 request.data 中的所有数据都是强制性的。

在这种情况下,您可以将Python的all()函数用作

if not all([True if v else False for k, v in request.data.items()]):
    return Response({"status": False})

如果您有大量的字段,例如phonepassword等,这将非常方便

假设您有诸如myfields = ['username','password','name','age']之类的特定字段,请使用all()函数作为

myfields = ['username', 'password', 'name', 'age']
if not all([True if request.data.get(k) else False for k in myfields]):
    return Response({"status": False})