而不是
if foo is None:
foo = 'my-default'
我写
foo = foo or 'my-default'
因为它更短。后者是针对某些建议还是使用OR
运算符来保存一行可能会遇到严重问题?还是真的难以理解?还是其他什么真正的坏或邪恶?
我认为它更具可读性,特别是如果你有
if not foo:
foo = 1
if not bar:
bar = 2
if not uhj:
uhj = 3
我只是写
foo = foo or 1
bar = bar or 2
uhj = uhj or 3
我认为,这更容易
答案 0 :(得分:1)
请注意声明
foo = foo or 'my-default'
默认值是foo的每个false值,不仅是None。如果这是合适的话,我认为这个单线程比'if'更好。如果你把它看作一种自然语言,那听起来也很难理解。
答案 1 :(得分:1)
这两个不等价,因为第一个选择值None
,而第二个执行一般真值测试。例如,对于foo=0
或foo=[]
,只有第二个会将其替换为'my-default'
。你可以使第一个相当于第二个:
if not foo:
foo = 'my-default'
除此之外,我认为两者都很好。有些人主张反对第二种选择,因为它可能会使初学者感到困惑。但恕我直言,它是python中的常见模式,它可以更具可读性,所以我认为这是一个不错的选择。