Python:内联if语句别无效

use*_*703 5 python django conditional if-statement inline

如果Django Model的字段与条件匹配,则将其分配给值.

g = Car.objects.get(pk=1234)
g.data_version = my_dict['dataVersion'] if my_dict else expression_false # Do nothing??
Run Code Online (Sandbox Code Playgroud)

在那种情况下我怎么办?我们做不到if conditional else pass.

我知道我能做到:

if my_dict:
    g.data_version = my_dict['dataVersion']
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有办法进行内联expression_true if conditional else do nothing.

Joh*_*dt6 8

不,你不能完全按照你所描述的那样做,因为它没有意义.您正在分配变量g.data_version...所以您必须分配一些东西.你所描述的就像写作:

g.data_version =  # There is nothing else here
Run Code Online (Sandbox Code Playgroud)

这显然是无效的语法.实际上,没有理由这样做.你应该这样做:

if my_dict:
    g.data_version = my_dict['dataVersion']
Run Code Online (Sandbox Code Playgroud)

要么

g.data_version = my_dict['dataVersion'] if my_dict else None # or 0 or '' depending on what data_version should be.
Run Code Online (Sandbox Code Playgroud)

从技术上讲,你也可以这样做:

g.data_version = my_dict['dataVersion'] if my_dict else g.data_version
Run Code Online (Sandbox Code Playgroud)

如果你只想更新g.data_version你的dict是否存在,但这比仅使用普通的if语句更不易读和优雅.