【发布时间】:2013-07-11 01:30:32
【问题描述】:
我是 Python 新手。
简而言之:
在编写脚本期间,我不断地想通过将一些代码行从我的文本编辑器复制/粘贴到命令行 Python 解释器来测试我的程序的小片段。当这些行缩进时(例如因为它们是函数的一部分),我希望解释器忽略或不检查缩进,这样我就不必在复制/粘贴之前取消缩进。这可能吗?
更多详情:
这里是我的意思的简化示例:
假设我的文本编辑器包含以下正在开发的模块:
def MyFunc(arg):
.../...
if arg == 1:
print "This is my function called with value 1."
print "Done."
else:
print "This is my function called with value other than 1."
print "Nothing else to say."
.../...
假设我只是想立即测试前 2 行 print (上述代码的第 4 和 5 行),以便快速检查我的模块的至少该部分是否按预期运行。如果我同时选择两条线,我至少会沿着缩进选择第二条线(如果不是两条线)。在命令行粘贴时,我会收到该缩进的错误。
解释器的一个简单强制行为是它简单地忽略缩进。
更强大的行为是要求解释器不检查缩进。 IE。如果有缩进,那么解释器应该尝试使用它,以便我仍然可以复制/过去甚至是结构化的代码(例如上述代码的第 3 到 8 行)。但如果有缩进错误,它会忽略它们。
如果没有办法做我在这里要求的事情,那么有没有做类似事情的技巧:一种快速检查代码片段的简单方法,而无需在每次只想调整时运行整个程序这里和那里的一小部分。
注意 1:取消缩进 不是我正在寻找的解决方案。
注意 2:拥有解释器和复制/粘贴功能提供了一种非常强大的轻松测试代码的方法,但是如果周转无法解决,Python 的显式缩进机制对于使用此处描述的解释器是一个很大的缺点被发现。可惜了。
【问题讨论】:
-
缩进对于解释 Python 至关重要 - 缩进的块指示代码的哪些行属于哪些条件结构、循环等。它不能被忽略。它不像 Java 或其他缩进仅用于样式和约定的语言。
-
改用
ipython -
如果您希望解释器忽略缩进,那么它应该如何处理您的代码而无法理解其结构?
-
@JoelDaroussin:不过,我们可以向您保证,拥有您在此处描述的能力是非常荒谬的。如果你不能(或不会)使用 IPython 或像样的程序员编辑器(允许矩形选择),你有 falsetru 添加初始块打开
if的小技巧。 -
我相信你应该试试 IPython。请注意,它只是一种不同的交互式解释器,它不是一种新语言。它提供了更好的帮助机制、更好的格式化输出和错误,以及其他一些普通交互式解释器不做的有用的事情。它还附带一个 qtconsole,允许您进行真正的多行编辑(以及内联图形。)
标签: python testing text-editor indentation copy-paste