没有选项卡,缩进和空格条件,是否有办法在Python中进行编码?

没有选项卡,缩进和空格条件,是否有办法在Python中进行编码?

Is there a way around coding in Python without the tab, indent & whitespace criteria?

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

我当前正在使用NotePad ++。 是否可能有一个IDE可以处理选项卡和缩进?


1
from __future__ import braces

不行。无论好坏,缩进语法都是Python语言不可或缺的一部分。


埃马克斯!认真地说,它对" tab是命令而不是字符"的使用对于python开发而言绝对是完美的。


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

就我而言,我将UltraEdit&vim配置为使用空格代替制表符。


I'm currently using NotePad++. Is
there maybe an IDE that would take
care of the tabs and indenting?

我为此喜欢Eclipse的pydev扩展。


当人们将其标记为Python问题时,我很难理解。我立即研究了它,实际上发现它是我最喜欢的语言"特征"之一:)

用其他语言,我有两项工作:
1.固定花括号,以便计算机可以解析我的代码
2.修复缩进,以便我可以解析我的代码。

因此在Python中,我只需要担心一半;-)

(nb唯一一次我对外观没有问题的地方是,当Python代码出现在博客和论坛中,并且混乱了空白,但是随着应用变得越来越智能,这种情况越来越少了)


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

  • 使用tabnanny.py检查您的代码
  • 使用可识别此类错误的语法感知编辑器(vi会这样做,我敢打赌emacs,然后大多数IDE也会这样做)
  • (牵强)编写您自己的预处理器,以将大括号(或您喜欢的任何块定界符)转换为缩进

  • bra骨

    不支持。


    我不这么认为,因为Python是用空格分隔的语言。带有自动缩进的文本编辑器或IDE可能会有所帮助。您目前正在使用什么?


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


    可以编写一个预处理器,该预处理器使用带有伪Python关键字(例如" endif"和" endwhile")的随机缩进代码并正确缩进事物。当使用python作为"类似ASP的"语言时,我必须这样做,因为在这种环境下,整个"缩进"概念变得有些模糊。

    当然,即使发生这种情况,您也应该理智地缩进,此时,对流器变得多余了。


    我同意Justin和其他人的看法-选择一个好的编辑器,并使用空格而不是制表符进行缩进,并且空格问题不再是问题。我只是最近才开始使用Python,尽管我认为空白问题确实令人讨厌,但事实并非如此。为了记录,我正在使用emacs,尽管我确定还有其他编辑器在做同样出色的工作。

    如果您真的对此感到僵硬,则始终可以通过预处理器传递脚本,但这在许多层面上都是个坏主意。如果您要学习一种语言,请接受该语言的功能,而不要尝试解决这些功能。否则,学习一种新语言有什么意义?


    通过将编辑器设置为使用空格而不是制表符,可以解决制表符和空格的混淆问题。

    为了使空白完全直观,可以使用功能更强大的代码编辑器或IDE(尽管您只需要适当的自动代码缩进,就不需要完整的IDE)。

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

    这里已经有一个问题试图将其缩小:

    • https://stackoverflow.com/questions/60784/poll-which-python-ideeditor-is-the-best

    也许您应该对此添加一个更具体的问题:"在Windows上,您更喜欢哪个Python编辑器或IDE?为什么?"


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

    您可以使用;终止语句,然后在同一行上开始一个新语句。 (打高尔夫球的人经常这样做。)

    如果要将单行分成多行,可以用\字符结束一行,这意味着当前行有效地从下一行的第一个非空白字符开始。这种外观看起来违反了通常的空白规则,但是是合法的。

    我的建议:如果您对标签页/空格感到困惑,请不要使用标签页。使用空格,然后选择2或3个空格作为缩进级别。

    优秀的编辑器将使其成为现实,因此您不必为此担心。 (例如,用于emacs的python-mode,您可以只使用Tab键,这样会使您保持诚实)。


    无论您使用哪种语言,都必须使缩进正确地起作用。

    即使它不会影响大多数其他语言的程序执行,但对于任何试图阅读程序的人来说,不正确的缩进都可能造成很大的混乱,因此您需要花费时间来弄清楚如何配置编辑器以正确对齐内容。

    Python在让您缩进方面相当自由。您可以在制表符和空格之间进行选择(但实际上应该使用空格),并可以选择多少个空格。它唯一需要的是保持一致,无论您使用哪种语言,这最终都非常重要。


    如果您正在寻找有关Python IDE的建议,经过大量研究,我对Wing Software的WingIDE感到最满意:

    http://www.wingware.com/products

    有一个免费的试用版,因此您没有损失。它支持所有主要的操作系统,完整版仅售60美元。

    我也非常喜欢SciTE,它完全免费,免费,免费!

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


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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    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

    变成:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    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。


    我很惊讶,没有人提到IDLE是一个很好的默认python编辑器。不错的语法颜色,处理缩进,具有智能感知,易于调整字体,并且它带有python的默认下载。哎呀,我主要写的是IronPython,但是在IDLE中编辑并在命令提示符下运行ipy是如此好用且容易。

    哦,空白有什么大不了的?最易于阅读的C或C#的缩进也很好,python只是强制执行一个非常简单的格式设置规则。


    否。如果可以禁用此功能,Python将如何解析脚本?


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


    任何体面的编程编辑器都可以将这种烦恼减少到零。我看到Notepad ++突出显示了语法,很可能您只需要为自动缩进等适当设置首选项即可。


    在Python中,缩进是一个语义元素,并且提供了可视化分组以提高可读性。

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

    • 标签的解释不同
      在编辑器和IDE之间,并且经常
      可配置(并且经常配置)。

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

    • 不同的顺序
      空格和制表符可能在视觉上
      难以区分。

    • 剪切和粘贴会改变空白。

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

    而且,只要将任意语义应用于控制字符,您仍然可以时不时地被咬住。


    问题的真正答案是,如果您要使用该语言,则需要学习其语法。正如缩进python的错误会产生编译器错误一样,使用其他各种花括号的错误也会产生编译器错误。

    更糟糕的是,编译器可能会默默地将其误解为做错了事。当缩进与所需含义不匹配时,这特别危险。即其他许多语言:

    1
    2
    3
    4
    5
    If(first condition)
       if (second condition)
          do something interesting;
    else
      do something different;

    会导致不愉快的意外。

    Python强迫您编写看起来像它的代码。对于必须阅读您的代码的其他程序员,或者当您在一个月左右的时间里尝试阅读自己的代码时,这是一件好事。


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


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

    OpenKomodo特别擅长处理制表符和空格。而且-它是免费的。呜!当我需要较轻的东西时,只需使用GEdit。

    在此处下载OpenKomodo-
    http://www.openkomodo.com/


    不,没有办法解决,这是设计使然:

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

    大多数Python程序员只是不使用制表符,而是使用空格来缩进,这样就不会出现编辑器与编辑器之间的不一致。


    是的,有办法。我讨厌这些"没有办法"的答案,只有找到一个答案,才有办法。

    在那种情况下,无论它值多少,都只有一个。

    我曾经读过一个关于设计编码方式的家伙的信息,以便一个简单的脚本可以正确地缩进代码。虽然今天我没有找到任何链接,但是我发誓我读了它。

    主要技巧是始终在函数末尾使用return,始终在if末尾或类定义的末尾使用pass,并始终在a末尾使用continue while。当然,任何其他无效的指令都可以达到目的。

    然后,一个简单的awk脚本可以通过读取pass / continue / return指令以及if / def / while / ...指令的代码开始来获取您的代码并检测块的结尾。

    当然,由于您将开发缩进脚本,因此您将看到在if内返回后不必使用continue,因为返回将触发缩进机制。其他情况也一样。只是习惯它。

    如果您勤奋工作,则可以剪切/粘贴和添加/删除if,并自动纠正缩进。顺便说一句,从网络上粘贴代码将需要您对其有所了解,以便您可以将其调整为适用于"非经典"设置。


    许多Python IDE和通用的文本/源代码编辑器都可以为您处理空白。

    但是,最好只是"放手"并享受Python的空白规则。通过一些实践,他们将完全不会介入您的工作,您将发现它们有很多优点,其中最重要的是:

  • 由于存在强制空格,因此Python代码更易于理解。您会发现,当您阅读他人编写的代码时,比起Perl或PHP中的代码,编写代码更容易。
  • 空格为您节省了许多诸如{和}之类的控制字符的按键操作,这些击键以类C语言编写的代码。 {s和}减少意味着RSI和腕部疼痛减轻。这不是掉以轻心的事情。

  • 仅使用Ruby,它比Python更好。

    http://www.ruby-lang.org


    推荐阅读