一行‘if’/‘for’-语句是不是很好的Python风格?

2024-04-26 23:20:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我经常在这里看到某人的代码和看起来像“一行”的代码,这是一个以传统“if”语句或“for”循环的标准方式执行的单行语句。

我到处搜索,找不到你能表演的那种?有人能给我建议,最好举几个例子吗?

例如,我可以在一行中这样做吗:

example = "example"
if "exam" in example:
    print "yes!"

或:

for a in someList:
    list.append(splitColon.split(a))

Tags: 代码infor标准ifexample方式语句
3条回答

我发现在大多数情况下,在一行上做块子句是个坏主意。

它将再次作为一个通用性,降低代码形式的质量。高质量的代码形式是python的一个关键语言特性。

在某些情况下,python会提供在一行上完成某些事情的方法,而这些方法肯定更像python。比如尼克D在清单理解中提到的:

newlist = [splitColon.split(a) for a in someList]

尽管除非您需要一个可重用的列表,否则您可能需要考虑改用生成器

listgen = (splitColon.split(a) for a in someList)

请注意,这两者之间最大的区别是,您不能在生成器上重复,但它的使用效率更高。

在现代版本的python中还有一个内置的三元运算符,它允许您执行如下操作

string_to_print = "yes!" if "exam" in "example" else ""
print string_to_print

或者

iterator = max_value if iterator > max_value else iterator

有些人可能会发现这些代码比类似的if (condition):块更可读和可用。

归根结底,这是关于代码风格和你所在团队的标准。这是最重要的,但一般来说,我建议不要使用单行块,因为python中的代码形式非常重要。

好吧

if "exam" in "example": print "yes!"

这是进步吗?。您甚至可以用分号分隔if子句的主体来添加更多语句。不过,我建议不要这样做。

更一般地说,以下所有内容在语法上都是有效的:

if condition:
    do_something()


if condition: do_something()

if condition:
    do_something()
    do_something_else()

if condition: do_something(); do_something_else()

……等等

相关问题 更多 >