Python 默认值与基于其他变量设置值的选择。用if else还是不用。

4 投票
4 回答
4110 浏览
提问于 2025-04-17 09:33

有时候,我会有一个变量,我想让它默认是某个值,如果有其他条件满足,就把它改成另一个值。

我的问题是,哪种方式更好呢?是先设置一个默认值,然后在条件满足时再改变它,还是根据初始检查只设置一次条件,并加上一个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]

如果你在处理字典,实际上已经有两种选择:

  1. 可以使用setdefault,比如 x.setdefault(some_key,some_default)=other
  2. 可以使用collections.defaultdict

你提到的其他方法也是可以的,但不太符合Python的风格,不过你会看到很多代码使用你引用的那种写法。

在我看来,只要程序可读性好、效率高,我们就不必过于纠结于让某些写法符合Python的风格,这样反而会分散注意力。

5

这样怎么样:

y = '%s-other' % x if x else 'some_default'

撰写回答