35

Python 是一种“空格分隔”的语言。但是,允许使用分号。例如,以下工作,但不赞成:

print("Hello!");
print("This is valid");

我已经使用 python 好几年了,我唯一一次使用分号是用 python 生成一次性命令行脚本:

python -c "import inspect, mymodule; print(inspect.getfile(mymodule))"

或在 SO 的注释中添加代码(即“你应该尝试import os; print os.path.join(a,b)”)

我还注意到在这个对类似问题的回答中,分号也可以用来制作一个行if块,如

if x < y < z: print(x); print(y); print(z) 

这对于我给出的两个使用示例(命令行脚本和注释)很方便。


上面的示例用于以段落形式交流代码或制作简短的片段,但不是我在生产代码库中所期望的。

这是我的问题:在 python 中,有没有理由在生产代码中使用分号?我想它们被添加到语言中仅仅是出于我所引用的原因,但 Guido 总是有可能有一个更宏大的计划。请不要发表意见;我正在从现有代码中寻找分号有用的示例,或者从 python 文档或 Guido 中寻找关于使用分号的某种声明。

4

2 回答 2

24

PEP 8是官方风格指南,它说:

通常不鼓励复合语句(同一行上的多个语句)。

(另请参见 PEP 中紧随其后的示例。)

虽然我不同意 PEP 8 所说的所有内容,但如果您正在寻找权威来源,就是这样。您应该仅作为最后的手段使用多语句行。(python -c是这种最后手段的一个很好的例子,因为在这种情况下你无法使用实际的换行符。)

于 2013-10-14T17:50:23.057 回答
2

我一直在代码中使用分号。我们的代码非常频繁地跨行折叠,分号是一个声明正在结束的明确断言。

output, errors, status = generate_output_with_errors_and_status(
    first_monstrous_functional_argument(argument_one_to_argument
        , argument_two_to_argument)
    , second_argument);

看?它们对可读性很有帮助。

于 2016-07-01T19:35:47.503 回答