- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想知道为什么在交互式提示和程序作为可执行文件从 shell 运行时,Python 中的空行有不同的规则。
由于空行被忽略,我喜欢大量使用它们。但是,在交互式提示中,一个空行用于终止循环。因此,当我将一大块代码粘贴到交互式提示中时,我不断遇到缩进错误,因为我的循环中会有空行。因此,这使得交互式调试/开发过程有些乏味。用 # 代替空行会有所帮助,但我喜欢我的空行。
更烦人的是提示之间的不同行为(例如 python 和 ipython)。 python 交互式提示会在我期望的地方给我一个错误,ipython 会继续执行缩进代码,就好像它不是循环的一部分而不会提示。
我觉得有一个简单的解决方案,但我不知道。我正在使用 vi 进行编辑和 python/ipython 提示。谢谢。
最佳答案
...why is there a different rule for blank lines in Python between interactive prompt and when the program is run from shell
因为,解释器会在您按下回车键后立即执行,但它需要空行才能知道您的函数、循环、if 语句或其他缩进 block 已完成。如果写一个函数,如果在函数的最后一行之前添加空行,则不需要(实际上是行不通的)。在这种情况下,需要空行来表示函数结束。
例如,您可以从 shell 中执行一个没有空行的脚本
for i in range(3):
print i
a = 1000
print a
会产生
$ python test.py
0
1
2
1000
但是如果你把它粘贴到解释器中,你会得到
>>> for i in range(3):
... print i
... a = 1000
File "<stdin>", line 3
a = 1000
^
SyntaxError: invalid syntax
>>> print a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
如果添加一个空行表示循环结束
for i in range(3):
print i
a = 1000
print a
并将其粘贴到解释器中,
>>> for i in range(3):
... print i
...
0
1
2
>>> a = 1000
>>> print a
1000
并且那个空行必须是空的,即使是空格(可能是你的编辑器自动添加的)也会导致解释器失败。
如果您想将一个类粘贴到解释器中,那么您不希望任何行之间有任何空格,包括方法之间。这会引发与 PEP8 的冲突,但是,这意味着您可以遵守 PEP8,或者与解释器兼容,但不能两者兼而有之。
因此,如果您希望能够将您的代码复制并粘贴到标准的 Python 解释器中,您将需要一组略有不同的规则。
坚持这些,您将保留粘贴到解释器中的能力。然而,对于一个类,你不会严格地是 PEP8,因为空行是 required。方法前后。
关于python - 交互式提示中的空行规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8391633/
我想用 python 读取串行端口,并用 readline 打印结果,但我在所有结果行之间得到空行。你能告诉我如何删除所有空行吗? 我的代码: #!/usr/bin/python import ser
我正在编写一个程序,该程序存储用户输入的数字,但如果输入空白则退出。 我尝试将其设为字符数组并检查长度。如果长度大于0,则表示有输入,因此它将存储输入。如果长度为0,则表示没有输入,因此退出循环。 d
这个项目要求我通过取出所有注释、空行、额外的空格和括号中的信息来读取处理中的文件,然后将其打印到output.txt中。我在处理数据和删除所有注释、空行、额外的空格和括号中的信息时遇到了麻烦。 这是我
有没有办法从服务器响应中删除空行?我已经尝试过: trimSpaces true 和 这没有正确解决问题,因为在 init param 方法中它甚至删除了
你好, if('\t' == input [0] ||'\v' == input [0] ||'\r' == input [0] ||'\n' == input [0] || '\0' == in
我不知道如何用语言来解释这个场景。所以我在写例子: 我有一个名为 tblType 的表: type_id | type_name --------------------- 1 |
代码如下: <?php /* *读取文件内容至字符串中,同时去除换行、行首行尾空格。 */ header("Content-type: text/html; chars
我正在将行与两个文本文件的行进行比较,ref.txt (引用)和 log.txt .但是我想忽略任一文件中的任意数量的空行;我怎样才能做到这一点? ref.txt one two three end
关于删除jtable中未使用的行的问题我正在使用DefualtTableModel我的表已经有一些数据并且当我更新它时将一些列留空以稍后更新主题,以便它们是空列..我想在保存数据之前用按钮删除主题..
我看到列表,它有适量的行(根据 QStringList 中的元素数量),但行是空的。 我做错了什么? 在 C++ 中我的代码是: QStringList s; s.append("1"); s.app
我怎样才能从这些行中隐藏 UITableView 的行,什么是不使用的。例如,看截图: 我可以只显示 4 行并隐藏其他未使用的行吗?所以,我只显示 4 行,然后是白屏,而不是现在的行 最佳答案 喜欢将
对于我的 bash/html 中的 CGI,我有这个脚本(只是 awk 脚本,其余代码只是一个简单的 hmtl 代码): for fn in /var/www/cgi-bin/LPAR_MAP/*;
一直在尝试使用输出 html 方法转换 xml 文档,以便使用 xsl 样式表(使用 CSS)在浏览器中显示。想显示以下代码 Source A Co
我想在我的 LOG 语句之后添加一个空行,以使我的日志更加分隔和可读。 我该怎么做? 当前声明: LOGGER.info("Person's name is {} .", person.getNa
我正在执行以下假脱机语句: SET VERIFY OFF SET FEEDBACK OFF SET HEADING OFF SET TRIMSPOOL ON SET TERM OFF SPOOL &p
包含五个相关字段的表格; ID (Autoincrement,unique, etc) ID_customer - ties in each row to another table with cus
我有这样的风格: #cytoscape-container { width: 100%; height: 100%; margin: 0 aut
while((fscanf(datafile, " %127[^;] %[^\n]", name, movie)) == 2) { printf("%s\n", movi
我有这个two commands获取 SID 用户帐户 wmic useraccount where name='%username%' get sid | findstr /b /C:"S-1" >
我使用这段代码: window.removeDuplicateLines = function() { "use strict"; var bodyText = $('#text-area')
我是一名优秀的程序员,十分优秀!