Python: 内联if语句否则不做任何操作
在Django模型中,如果某个字段满足特定条件,怎么给它赋值。
g = Car.objects.get(pk=1234)
g.data_version = my_dict['dataVersion'] if my_dict else expression_false # Do nothing??
那如果不想做任何事情,该怎么处理呢?我们不能用 if conditional else pass
这种写法。
我知道我可以这样做:
if my_dict:
g.data_version = my_dict['dataVersion']
但我在想,是否有办法用一行代码来写 expression_true if conditional else do nothing
。
1 个回答
9
不,你不能完全按照你描述的那样做,因为这样没有意义。你是在给变量 g.data_version
赋值……所以你必须给它赋一些东西。你所描述的情况就像是写:
g.data_version = # There is nothing else here
这显然是语法错误。其实这样做也没有必要。你应该选择以下两种方式之一:
if my_dict:
g.data_version = my_dict['dataVersion']
或者
g.data_version = my_dict['dataVersion'] if my_dict else None # or 0 or '' depending on what data_version should be.
从技术上讲,你也可以这样做:
g.data_version = my_dict['dataVersion'] if my_dict else g.data_version
如果你只想在字典存在的情况下更新 g.data_version
,但这样写起来不如普通的 if 语句清晰和优雅。