没有制表符,缩进和空格条件,是否有办法在Python中进行编码?

时间:2020-03-05 18:53:32  来源:igfitidea点击:

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

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

解决方案

回答

否。如果有禁用此功能的方法,Python将如何解析脚本?

回答

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

回答

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

回答

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

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

回答

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

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

回答

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

回答

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

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

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

我的建议:如果我们遇到标签/空格混乱的情况,请不要使用标签。使用空格,然后选择2或者3个空格作为缩进级别。

优秀的编辑人员会做到这一点,因此我们不必为此担心。 (例如,用于emacs的python-mode,我们可以只使用Tab键,这样可以使我们保持诚实)。

回答

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

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

回答

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

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

回答

使用我们使用的任何语言,使缩进正确工作都将非常重要。

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

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

回答

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

我为此喜欢Eclipse的pydev扩展。

回答

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

为了使空白完全直观,我们可以使用功能更强大的代码编辑器或者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?为什么?"

回答

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

回答

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

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

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

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

回答

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

http://www.wingware.com/products

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

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

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

回答

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

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

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

回答

牙套

不支持。

回答

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

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

  • 选项卡的解释在不同的编辑器和IDE中有所不同,并且通常是可配置的(并且通常是配置的)。
  • OTOH,有些编辑器是不可配置的,但适用于它们自己的缩进规则。
  • 空格和制表符的不同顺序可能在视觉上无法区分。
  • 剪切和粘贴会改变空白。

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

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

回答

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

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

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

会导致不愉快的意外。

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

回答

如果我们不想使用具有自动缩进功能的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。

回答

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

回答

from __future__ import braces

回答

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

回答

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

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

在这里下载OpenKomodo

回答

http://www.openkomodo.com/

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

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

回答

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

是的,有办法。我讨厌这些"没有办法"的答案,除非找到一个答案,否则没有办法。

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

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

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

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

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

回答

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

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

回答

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

仅使用Ruby,它比Python更好。

回答

http://www.ruby-lang.org

段落数量不匹配