我正在使用继承的Python程序,该程序运行正常,但没有正确的Python缩进。Python if语句无缩进
if not arg_o:
print >> sys.stderr, 'Output file needed.'
print >> sys.stderr, usage
exit()
这是怎么回事?如果缩进,以下的代码不应该缩进吗?
解决
见接受的答案。事实证明,TextMate没有正确显示标签,这是一个担心。当在Vim中打开时,它被正确缩进。
我正在使用继承的Python程序,该程序运行正常,但没有正确的Python缩进。Python if语句无缩进
if not arg_o:
print >> sys.stderr, 'Output file needed.'
print >> sys.stderr, usage
exit()
这是怎么回事?如果缩进,以下的代码不应该缩进吗?
解决
见接受的答案。事实证明,TextMate没有正确显示标签,这是一个担心。当在Vim中打开时,它被正确缩进。
检查文件 - MPprimer.py
- 从代码找到here。
我可以看到以下行吧 -
if not arg_o:
print >> sys.stderr, 'Output file needed.'
print >> sys.stderr, usage
exit()
始于线175。问题是这个脚本混合了制表符和空格。
175行 - if not arg_o:
- 使用4个空格作为缩进。
而下一行第176行 - print >> sys.stderr, 'Output file needed.'
- 使用制表符作为缩进。
在Python 2.x中,制表符和空格可以混合使用,但制表符由8个空格内部表示。
但是在某些编辑器(如Notepad ++,在我的系统中)中,选项卡仅被解释为4个空格。所以即使在这些编辑器中,他们看起来好像没有正确缩进,但根据python的说法,它们实际上是正确缩进的。
请注意,如果您将它们混合在同一个脚本中,混合制表符和空格,Python 3.x将不会出错。
感谢您花时间检查。我只看到每一行的标签。我正在使用TextMate。 – ardochhigh
检入其他编辑器。 –
你是对的!在Linux上的Vim上打开它看起来很好。非常感谢你解决这个问题。 – ardochhigh
Python documentation说这是不正确的。它应该是这样的:
if not arg_o:
print >> sys.stderr, 'Output file needed.'
print >> sys.stderr, usage
exit()
也许你的输出来自另一部分的代码。
那不是问题。 – putvande
OP询问代码*如何工作*。不是如何解决它 - 它已经修复了......显然。 –
Python的缩进需要4个空格,所以如果以后如果要有4个空格
而且打印>>的整块似乎并没有被Python代码,以便参考https://docs.python.org/2.7/tutorial/introduction.html
它不需要_four_,它只需要_some_。四是公约,但这不是要求。 –
['print >>'是有效的Python 2代码。](https://docs.python.org/2.7/reference/simple_stmts.html#the-print-statement)它用于指定要打印的文件句柄。 – jwodder
在你的情况下, if
之前的空格是4个空格,在print
之前是空格。您的编辑器可能会将选项卡显示为Python解释它的其他内容。
是你的问题的简短答案是If语句后面的代码应该缩进以适应python的缩进。
当你试图运行它时,你没有得到一个错误吗? – putvande
你确定这是Python代码?什么是“>>”? –
程序运行并产生输出。我不知道是否涉及到这个分支。在我尝试重构它之前,我想了解它如何工作。 – ardochhigh