在Python中没有办法将try / except块压缩到一行。
另外,不知道Python中是否存在变量是一件坏事,就像在其他一些动态语言中一样。更安全的方式(和主流风格)是将所有变量设置为某种东西。如果它们可能未设置,请将它们设置为无首先(或0或“’或某事,如果它更适用)。
如果你首先分配你感兴趣的所有名字,你有选择。
>最好的选择是if语句。
c = None
b = [1, 2]
if c is None:
a = b
else:
a = c
>单线性选项是条件表达式。
c = None
b = [1, 2]
a = c if c is not None else b
>有些人滥用或做到这一点的短路行为。这是容易出错的,所以我从来不使用它。
c = None
b = [1, 2]
a = c or b
考虑以下情况:
c = []
b = [1, 2]
a = c or b
在这种情况下,一个可能应该是[],但它是[1,2],因为[]在布尔上下文中为false。因为有很多值可以是false,我不使用或技巧。 (这是同样的问题,人们遇到,当他们说如果foo:当他们意味着如果foo不是None :.)