Python:访问NoneType对象时变量赋值的更简洁语法

Python: A more concise syntax for variable assignment when accessing a NoneType object

我有下面的python代码

1
2
3
4
if obj is None:
  identifier = None
else:
  identifier = obj.id

其中obj是类定义不包括在内的python对象

我几乎不记得有更简洁的语法(比如一行代码?)也可以达到同样的效果。如果我不是在做梦,有人能告诉我简单的语法是什么吗?谢谢。


1
identifier = None if obj is None else obj.id


ZZU1


如果你使用一个没有条件表达式的旧Python版本,你可以放松对布尔表达式的语义评价:一个布尔表达式的价值是该术语在确定其最终价值的表达式中的价值。这声音是抽象的,但在你的案件中你可以说:

1
((obj is None and [None]) or [obj.id])[0]

如果你有

1
((True and [None]) or [obj.id])[0]

是什么

1
([None] or [obj.id])[0]

代表TrueValue,which can be ored with any expression without change the value of the orexpression the result is [None][0]which is None

如果你没有

1
((False and [None]) or [obj.id])[0]

是什么

1
2
3
4
5
(False or [obj.id])[0]

= ([obj.id])[0]

= obj.id

这是你如何模拟三元运算符AKA"条件式if expression"if former times.

一般模式是一样的。

1
(b and [a] or [c])[0]