【问题标题】:Python: Inline if statement else do nothingPython:内联 if 语句 else 什么都不做
【发布时间】:2014-10-08 18:06:18
【问题描述】:

如果 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

【问题讨论】:

  • 不,在 Python 中做不到。
  • @univerio 啊,好吧。谢谢你的帮助。
  • 如果你愿意,你总是可以在同一行写上if my_dict: g.data_version = ...,但这违背了 Python 风格。
  • 您为什么要这样做? ...这没有意义...
  • “内联 if 语句”被恰当地称为条件表达式;这不是一个声明。

标签: python django if-statement conditional inline


【解决方案1】:

不,您不能完全按照您的描述进行操作,因为这没有任何意义。您正在分配给变量 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(如果您的 dict 存在),但这比仅使用普通 if 语句更具可读性和优雅性。

【讨论】:

    猜你喜欢
    • 2014-06-20
    • 1970-01-01
    • 2017-08-18
    • 2013-06-16
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    相关资源
    最近更新 更多