在Python中不在一行上编写简单的if-else语句是否是错误的做法?

问题描述 投票:1回答:2

在我的实习期间,我注意到我的另一位同事已经通过执行此操作来操纵我的一项功能...

if isSinglesMatch:
    name1 = GetName(1, “BUG”)
    name2 = GetName(2, "BUG")
else:
    name1 = GetName(1, "Short")
    name2 = GetName(2, "Short")

到此...

name1 = GetName(1, "BUG" if isSinglesMatch else "Short")
name2 = GetName(2, "BUG" if isSinglesMatch else "Short")

我看到他的代码更短,但是像它解释得更快一样,有什么好处吗?首先保留它的方式不好吗,因为在我看来,调试代码更容易(在此示例中省略了一些额外的变量分配)。

实习生没有人告诉我应该改变做事的方式,我只是注意到这是我的同事喜欢做的方式。

python if-statement interpreter
2个回答
4
投票

我认为,在两行中具有相同的条件是上帝。您的代码更容易理解。最好是

mode = "BUG" if is_singles_match else "Short"
name1 = get_name(1, mode)
name2 = get_name(2, mode)

注意命名约定。


0
投票

更短的意思不是更好或更快速。当您编写代码时,有时还需要考虑其他一些事项,而不仅仅是性能。例如,编写清晰易懂的代码就是其中之一。

您也可以将其写为

name1, name2 = (GetName(1, "BUG"), GetName(2, "BUG")) if isSinglesMatch else (GetName(1, "Short"), GetName(2, "Short"))

但是如果使用的行数没有多大变化,但是就清晰度而言,这会使情况变得更糟。

© www.soinside.com 2019 - 2024. All rights reserved.