Python 默认值与基于其他变量设置值的选择。用if else还是不用。
有时候,我会有一个变量,我想让它默认是某个值,如果有其他条件满足,就把它改成另一个值。
我的问题是,哪种方式更好呢?是先设置一个默认值,然后在条件满足时再改变它,还是根据初始检查只设置一次条件,并加上一个else呢?
下面是代码示例。
if x:
y = '%s-other' % x
else:
y = 'some_default'
另一种选择是。
y = 'some_default'
if x:
y = '%s-other' % x
这并不总是作为参数传递给一个函数,所以我不想在这里依赖kwargs。
就我个人而言,第二种方式对我来说似乎更清晰,但我还没有找到任何人对此的看法。
4 个回答
0
对其他答案的补充:
y = x and '%s-other' % x or 'some_default'
不过这个可能会让人感到害怕,所以我建议使用Rob的那个 :)
4
正如Rob提到的,
y = '%s-other' % x if x else 'some_default'
这是在各种编程语言中非常常见的一种写法。
Python提供了一些其他的选择,具体用哪个要看用户的需求。
y = ['some_default','%s-other'][x!=None]
如果你在处理字典,实际上已经有两种选择:
- 可以使用setdefault,比如
x.setdefault(some_key,some_default)=other
- 可以使用collections.defaultdict
你提到的其他方法也是可以的,但不太符合Python的风格,不过你会看到很多代码使用你引用的那种写法。
在我看来,只要程序可读性好、效率高,我们就不必过于纠结于让某些写法符合Python的风格,这样反而会分散注意力。
5
这样怎么样:
y = '%s-other' % x if x else 'some_default'