Python: 内联if语句否则不做任何操作

6 投票
1 回答
27371 浏览
提问于 2025-04-18 17:21

在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 语句清晰和优雅。

撰写回答