什么时候在Python中使用分号被认为是"好的"还是"可接受的"?

Set*_*ton 26 python

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

print("Hello!");
print("This is valid");
Run Code Online (Sandbox Code Playgroud)

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

python -c "import inspect, mymodule; print(inspect.getfile(mymodule))"
Run Code Online (Sandbox Code Playgroud)

或在SO的评论中添加代码(即"你应该尝试import os; print os.path.join(a,b)")

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

if x < y < z: print(x); print(y); print(z) 
Run Code Online (Sandbox Code Playgroud)

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


以上示例用于以段落形式传递代码或制作简短的代码段,但不是我在生产代码库中所期望的.

这是我的问题:在python中,是否有理由在生产代码中使用分号?我想他们仅仅因为我引用的原因而被添加到语言中,但是Guido总是有可能考虑到更为宏伟的计划.没有意见; 我正在寻找分号有用的现有代码中的示例,或者来自python docs或Guido关于分号使用的某种语句.

Bre*_*arn 18

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

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

(另请参阅PEP之后的示例.)

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

  • 虽然你确实有办法在`python -c $'print 6 \nprint 7'`中实际使用换行符,但它只适用于类UNIX操作系统,并且不是很整洁.所以在这种情况下使用`;`s更好. (7认同)
  • @glglgl这实际上是一个shell功能,`$'...'`。例如Bash支持它,而Dash不支持。 (3认同)