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寻求有关分号使用的某种声明。
PEP 8是官方样式指南,其中说:
通常不建议使用复合语句(同一行上的多个语句)。
(另请参阅PEP之后的示例。)
尽管我不同意PEP 8所说的一切,但是如果您正在寻找权威的资料,那就足够了。您只能将多语句行用作最后的选择。(这python -c
是最后选择的一个很好的例子,因为在这种情况下,您无法使用实际的换行符。)
问题内容: 与 我看到越来越多的JavaScript库在处理字符串时使用单引号。为何一个使用另一个原因?我认为它们几乎可以互换。 问题答案: 在不同的库中使用单一或双重的最可能原因是程序员的偏爱和/或API一致性。除了保持一致之外,请使用最适合该字符串的那个。 使用其他类型的引号作为文字: 这可能会变得复杂: ES6中的另一个新选项是使用以下字符的Template文字: 模板文字为以下内容提供了一
问题内容: 我怎么能说: 为什么函数调用中不需要括号,而最后一行呢? 问题答案: 是一个功能 调用该函数并产生该函数返回的任何值。 setTimeout的目的是在一段时间后运行代码。你需要的功能只是传递给它(这样的setTimeout可以自称在适当的时候函数),因为如果你将它传递给setTimeout的前调用的函数(用括号),将执行 现在 而不是1秒后,。
问题内容: 奇怪的是: 似乎或多或少被定义为。通过这种方式很容易产生错误: 一些fname意外地以else块结尾。修复很简单,我们应该改用它,但是从表面上看,这似乎是一种不错的pythonic方式,并且比“正确”的方式更具可读性。 由于字符串是不可变的,所以为什么字符串错误是什么技术细节?什么时候进行身份检查更好,什么时候进行平等检查更好? 问题答案: 据我所知,检查对象身份是否相等。由于没有强制
已弃用。这种方法本质上是不安全的。使用thread.Stop停止线程会导致它解锁它锁定的所有监视器(作为未检查的ThreadDeath异常向堆栈上传播的自然结果)。如果以前由这些监视器保护的任何对象处于不一致的状态,则损坏的对象将对其他线程可见,从而可能导致任意行为。stop的许多用法应该被简单修改某个变量以指示目标线程应该停止运行的代码所取代。目标线程应该定期检查这个变量,如果变量指示它要停止运
问题内容: 使用弱引用是我从未见过的实现方式,因此,我试图弄清楚它们的用例是什么以及实现将如何工作。你何时需要使用WeakHashMap或WeakReference以及如何使用它? 问题答案: 强引用的一个问题是缓存,尤其是对于非常大的结构(如图像)而言。假设你有一个必须处理用户提供的图像的应用程序,例如我正在使用的网站设计工具。自然地,你想缓存这些图像,因为从磁盘加载它们非常昂贵,并且你希望避免
问题内容: 我已经用python编程了大约两年了。主要是数据资料(熊猫,mpl,numpy),还有自动化脚本和小型Web应用程序。我试图成为一个更好的程序员,并增加我的python知识,而困扰我的一件事是我从未使用过一个类(除了为小型Web应用程序复制随机烧瓶代码外)。我通常理解它们是什么,但是我似乎无法为为什么在一个简单的函数中需要它们的问题而wrap之以鼻。 为了使我的问题更具针对性:我编写了