有没有一种方法可以在没有tab,缩进和&标签的Python中进行编码。空白标准?

时间:2008-09-15 13:55:14

标签: python

我想开始在小项目中使用Python,但错误的制表符或缩进可能引发编译错误的事实真的让我很紧张。是否有某种类型的设置可以关闭它?

我目前正在使用NotePad ++。可能有一个IDE会处理标签和缩进吗?

29 个答案:

答案 0 :(得分:42)

from __future__ import braces

答案 1 :(得分:35)

没有。压缩语法是Python语言中不可或缺的一部分,无论好坏。

答案 2 :(得分:10)

的Emacs!说真的,它使用“tab是命令而不是字符”,对于python开发来说绝对是完美的。

答案 3 :(得分:5)

我在启动Python时遇到的所有空白问题都是混合制表符和空格的结果。一旦我将所有内容配置为只使用其中一个,我就会遇到问题。

在我的情况下,我配置了UltraEdit& vim使用空格代替标签。

答案 4 :(得分:4)

  

我目前正在使用NotePad ++。是   可能会有一个IDE   关注标签和缩进?

我为此喜欢pydev eclipse的扩展。

答案 5 :(得分:3)

不,没有。缩进是Python的语法。你可以:

  1. 使用tabnanny.py检查您的代码
  2. 使用语法识别编辑器突出显示此类错误(vi就是这样,我敢打赌它会使用emacs,然后,大多数IDE也会这样做)
  3. (牵强)编写自己的预处理器,将大括号(或任何你喜欢的块分隔符)转换为缩进

答案 6 :(得分:3)

pybraces

它不受支持。

答案 7 :(得分:2)

我不相信,因为Python是一种以空格分隔的语言。也许文本编辑器或具有自动缩进功能的IDE会有所帮助。你目前在使用什么?

答案 8 :(得分:2)

当你使用Python时,你应该在编辑器中禁用制表符(总是,实际上,恕我直言,但尤其是当你使用Python时)。寻找像“为标签使用空格”这样的选项:任何体面的编辑都应该有一个。

答案 9 :(得分:2)

可以编写一个预处理器,它使用伪python关键字(如“endif”和“endwhile”)随机缩进代码并正确缩进。当使用python作为“类似ASP”的语言时,我不得不这样做,因为在这样的环境中,“缩进”的整个概念有点模糊。

当然,即使有这样的事情,你也应该理智地缩进,此时对流变得多余。

答案 10 :(得分:2)

我同意贾斯汀和其他人的观点 - 选择一个好的编辑器并使用空格而不是标签来缩进,而空白的东西变成了无问题。我最近才开始使用Python,虽然我认为空白问题会让人感到非常烦恼但事实证明并非如此。为了记录,我正在使用emacs,虽然我确信还有其他编辑可以做同样出色的工作。

如果你真的死定了它,你总是可以通过预处理器传递你的脚本,但这在很多层面都是个坏主意。如果您要学习某种语言,请接受该语言的功能,而不是尝试解决它们。否则,学习一门新语言有什么意义呢?

答案 11 :(得分:2)

通过将编辑器设置为使用空格而不是制表符,可以修复制表符和空格混淆。

要使空格完全直观,您可以使用更强大的代码编辑器或IDE(如果您只需要正确的自动代码缩进,则不需要完整的IDE)。

可以在Python wiki中找到编辑器列表,尽管这个编辑有点太累了: - http://wiki.python.org/moin/PythonEditors

这里已经有一个问题试图减少一点:

也许您应该添加一个更具体的问题:“您更喜欢在Windows上使用哪种Python编辑器或IDE?为什么?”

答案 12 :(得分:2)

当人们将此标记为Python问题时,我发现很难理解。我立刻接受了它并且实际上发现它是我最喜欢的语言之一:')

在其他语言中我有两份工作: 1.修复大括号,以便计算机可以解析我的代码 2.修复缩进,以便我可以解析我的代码。

所以在Python中,我有一半的担心; - )

(nb我唯一一次遇到压力问题就是当Python代码出现在博客和一个与白色空间混淆的论坛时,随着应用变得越来越聪明,这种情况越来越少)

答案 13 :(得分:1)

如果您正在寻找Python IDE的建议,经过广泛的研究,我对Wing Software的WingIDE非常满意:

http://www.wingware.com/products

有一个免费试用版,所以你没有什么可失去的。它支持所有主要操作系统,完整版只需60美元左右。

我也很喜欢SciTE,这是免费的,免费的,免费的!

http://scintilla.sourceforge.net/SciTEDownload.html

答案 14 :(得分:1)

我很惊讶没有人提到IDLE是一个优秀的默认python编辑器。漂亮的语法颜色,句柄缩进,智能感知,易于调整字体,并附带默认的python下载。哎呀,我主要写的是IronPython,但它太棒了。易于在IDLE中编辑并从命令提示符运行ipy。

哦,关于空白的重要事项是什么?最易于阅读的C或C#也是缩进的,python只是强制执行一个非常简单的格式化规则。

答案 15 :(得分:1)

如果您不想使用具有自动缩进功能的IDE /文本编辑器,则可以使用Tools \ Scripts目录中的pindent.py脚本。它是一个可以转换代码的预处理器:

def foobar(a, b):
if a == b:
a = a+1
elif a < b:
b = b-1
if b > a: a = a-1
end if
else:
print 'oops!'
end if
end def foobar

成:

def foobar(a, b):
   if a == b:
       a = a+1
   elif a < b:
       b = b-1
       if b > a: a = a-1
       # end if
   else:
       print 'oops!'
   # end if
# end def foobar

哪个是有效的python。

答案 16 :(得分:1)

让您的缩进正常工作对您使用的任何语言都很重要。

即使它不会影响大多数其他语言的程序执行,但对于任何试图阅读程序的人来说,不正确的缩进都会让人感到困惑,所以你需要花时间搞清楚如何配置你的编辑器正确对齐事物。

Python在缩进方面非常自由。您可以在制表符和空格之间进行选择(但您确实应该使用空格)并且可以选择多少空格。它唯一需要的是你是一致的,无论你使用什么语言,最终都很重要。

答案 17 :(得分:1)

不是真的。有几种方法可以修改给定代码行的空格规则,但是仍然需要缩进级别来确定范围。

您可以使用;终止语句,然后在同一行开始新语句。 (golfing.)

时,人们经常会这样做

如果要将一行拆分为多行,可以使用\字符完成一行,这意味着当前行有效地从下一行的第一个非空白字符继续。 视觉出现违反了通常的空白规则,但是合法。

我的建议:如果您有标签/空格混淆,请不要使用标签。使用空格,并选择2或3个空格作为缩进级别。

一位优秀的编辑会做到这一点,所以你不必担心这一点。 (例如,emacs,的python-mode,你可以使用tab键,它会让你诚实)。

答案 18 :(得分:0)

许多Python IDE和通用功能的文本/源编辑器可以为您处理空白区域。

但是,最好只是“放手”并享受Python的空白规则。通过一些练习,它们根本不会影响你的方式,你会发现它们有许多优点,其中最重要的是:

  1. 由于强制空格,Python代码更容易理解。你会发现,当你阅读其他人编写的代码时,比Perl或PHP中的代码更容易理解。
  2. Whitespace可以为您节省很多控制字符的按键,例如{和},这些垃圾代码是用C语言编写的。较少的{s和} s意味着更少的RSI和手腕疼痛。这不是一件轻描淡写的事。

答案 19 :(得分:0)

在Python中,缩进是一个语义元素,并提供可视化分组以便于阅读。

空格和制表符都可以表示缩进。这很不幸,因为:

  • 标签的解释各不相同 在编辑器和IDE中经常出现 可配置(并经常配置)。

  • OTOH,有些编辑不是 可配置但应用自己的 缩进规则。

  • 不同的序列 空格和标签可以是视觉上的 没有什么区别。

  • 剪切和粘贴可以改变空格。

因此,除非您知道给定的代码片段只能由您自己使用单个工具和不变的配置进行修改,否则您必须避免使用缩进标签(配置IDE)并确保在出现这些代码时发出警告介绍(在前导空格中搜索制表符)。

只要将任意语义应用于控制字符,你仍然可以期待偶尔被咬。

答案 20 :(得分:0)

您问题的真正答案是,如果您打算使用您需要的语言来学习它的语法。正如缩进python中的错误可以生成编译器错误一样,使用各种其他语言中的大括号的错误也会生成编译器错误。

更糟糕的是,编译器可能会默默地误解它做错误的事情。当缩进与期望的含义不匹配时,这尤其危险。即在许多其他语言中:

If(first condition)
   if (second condition)
      do something interesting;
else
  do something different;

会导致令人不快的意外。

Python强迫您编写看起来像的代码。对于需要阅读代码的其他程序员来说,这是一件好事,或者在您尝试在一个月左右之后阅读自己的代码时对您来说是一件好事。

答案 21 :(得分:0)

没有。如果有办法禁用它,Python会如何解析你的脚本?

答案 22 :(得分:0)

由于标签,我有点不愿意学习Python。但是,当我使用Vim时,我几乎没有注意到它。

答案 23 :(得分:0)

检查编辑器的选项或找到允许您将TAB转换为空格的编辑器/ IDE。我通常设置我的编辑器的选项,用4个空格替换TAB字符,我从来没有遇到任何问题。

答案 24 :(得分:0)

奇怪 - 没有人提到过GEdit(Gnome)或OpenKomodo(Windows,Mac,GNU / Linux ......)。他们俩都很棒!

OpenKomodo特别处理标签和空格。并且 - 它是免费的。 Whee!当我需要更轻的东西时,我只使用GEdit。

在这里下载OpenKomodo - http://www.openkomodo.com/

答案 25 :(得分:0)

不,没有办法绕过它,而且它是设计的:

>>> from __future__ import braces
  File "<stdin>", line 1
SyntaxError: not a chance

大多数Python程序员根本不使用制表符,而是使用空格来缩进,这样就没有编辑器到编辑器的不一致。

答案 26 :(得分:0)

是的,有办法。我讨厌这些“不可能”的答案,直到你找到答案才有办法。

在这种情况下,不管它有什么价值,都有一个。

我曾经读过一篇关于设计一种编码方式的人,以便一个简单的脚本可以正确地重新缩进代码。我今天没有设法找到任何链接,但我发誓我读了它。

主要技巧是始终在函数末尾使用return总是在{{pass结束时使用if 1}}或在类定义的末尾,并始终在continue的末尾使用while。当然,任何其他无效指令都符合目的。

然后,一个简单的 awk 脚本可以通过读取pass / continue / return指令来获取代码并检测块的结束,并使用if / def / while / ...来启动代码。指令。

当然,因为你将开发你的缩进脚本,你会发现在if内部返回后你不必使用continue,因为返回会触发缩进机制。这同样适用于其他情况。只是习惯它。

如果您勤奋,您将能够剪切/粘贴并添加/删除if并自动更正缩进。顺便说一下,从网上粘贴代码需要你理解它,以便你可以适应那种“非经典”设置。

答案 27 :(得分:0)

任何体面的编程编辑都会将这种烦恼减少到零。我看到Notepad ++有语法高亮,你可能只需要为自动缩进等设置你的首选项。

答案 28 :(得分:-4)

只使用Ruby,它比Python好得多。

http://www.ruby-lang.org