Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中使用空格是否存在任何陷阱?_Python_Whitespace - Fatal编程技术网

在Python中使用空格是否存在任何陷阱?

在Python中使用空格是否存在任何陷阱?,python,whitespace,Python,Whitespace,目前,我在Python中从未遇到过空格问题(尽管我只在两个项目中使用过它,而且我是唯一的程序员)。对于学习Python语言的人来说,Python中的空格和缩进有哪些潜在缺陷 在某些编辑器中,一行用空格缩进,下一行用制表符缩进,这可能会造成混淆。这令人困惑,因为缩进看起来相同,但会导致错误 另外,在复制代码时,如果编辑器没有缩进整个块的功能,那么修复所有缩进可能会很烦人 但是有了一个好的编辑和一点实践,这应该不是一个问题。我个人非常喜欢Python使用空白的方式。问题是,在Python中,如果在文

目前,我在Python中从未遇到过空格问题(尽管我只在两个项目中使用过它,而且我是唯一的程序员)。对于学习Python语言的人来说,Python中的空格和缩进有哪些潜在缺陷

在某些编辑器中,一行用空格缩进,下一行用制表符缩进,这可能会造成混淆。这令人困惑,因为缩进看起来相同,但会导致错误

另外,在复制代码时,如果编辑器没有缩进整个块的功能,那么修复所有缩进可能会很烦人


但是有了一个好的编辑和一点实践,这应该不是一个问题。我个人非常喜欢Python使用空白的方式。

问题是,在Python中,如果在文件的一个区域使用空格缩进基本块,在另一个区域使用制表符缩进,则会出现运行时错误。这与C中的分号有很大不同


不过,这并不是一个真正的编程问题,是不是?

让我暂时远离Python。我有着很强的C语言背景,我觉得自己开车时没有系安全带

当我试图用样板文件和常用类来填充编辑器中的代码片段库时,这让我很恼火。我通过例子学习得最好,所以我尽可能多地收集有趣的片段,目的是在学习的同时编写一个有用的程序

在我养成了重新格式化所有我借来的东西的习惯之后,情况并没有那么糟。但还是觉得很尴尬。我必须习惯一种动态输入的语言加上缩进来控制我的代码


这对我来说是一个很大的飞跃:)

空格块分隔符强制执行一定数量的代码格式,这似乎激怒了一些程序员。我们店里的一些人似乎认为他们太忙了,或者懒得去注意格式化标准,而一种迫使他们这么做的语言让他们感到不快。有时,当其他人不按照同样的模式在新行上放花括号时,同样的人会抱怨;)

我发现来自web的Python代码更容易“可读”,因为这一次要的格式要求已经到位。在国际海事组织,这项要求是一项非常有用的功能


IIRC,Haskell、OCaml(#light)和F#不是也以同样的方式使用空白吗?出于某种原因,我没有看到任何关于这些语言的抱怨。

很久以前,在遥远的环境中,有一些语言(如RPG)依赖于穿孔卡片的列结构。这是一个乏味而烦人的系统,并导致了许多错误,而诸如BASIC、pascal等较新语言的设计没有这种依赖性

一代程序员接受了这些语言的培训,并反复告诉他们,在任何地方都可以自由放置任何东西是新语言的一大特点,他们应该心存感激。多年来,自由被使用、滥用和校准(cf The)

现在,钟摆已经开始回荡,但许多人仍然记得,强制布局在某种程度上是不好的,模糊的,并抵制它


我的意思是,要做的事情是按照语言本身的术语来使用语言,而不是挂在口味上。一些人说他们不喜欢python缩进,因为它会导致错误,如果制表符和空格混合在一起,很难发现错误。例如:

1 if needFrobnicating:
2    frobnicate()
3 update()
根据选项卡宽度的不同,第3行可能与第2行位于同一块中,或者位于封闭块中。这不会导致运行时或编译错误,但程序会执行意外操作


虽然我用python编程已经10年了,从来没有看到过因混合制表符和空格而导致的错误

但我遇到的唯一问题是,当我使用我在决定是否喜欢制表符或空格之前编写的代码时,或者在网站上剪切和发布代码时,遇到了一些小麻烦

我认为现在大多数体面的编辑都有一个将标签转换为空格和后退的选项。Textmate当然有


除此之外,缩进从未给我带来任何麻烦。

当python程序员不遵循中定义的“每个缩进级别使用4个空格”的常见约定时。(如果您是python程序员,但尚未阅读,请阅读)


然后您会遇到复制粘贴问题。

选择一个好的编辑器。您可能需要以下功能:

  • 模拟最后缩进行的自动缩进
  • 可控制的自动缩进(制表符与空格)
  • 显示空白字符
  • 加载文件时检测和模拟空白约定
  • 例如,Vim允许我突出显示具有以下设置的选项卡:

    set list
    set listchars=tab:\|_
    highlight SpecialKey ctermbg=Red guibg=Red
    highlight SpecialKey ctermfg=White guifg=White
    
    可随时使用以下功能关闭:

    set nolist
    

    在我看来,我不喜欢将制表符转换为空格或将制表符转换为空格的编辑器设置,因为最终会出现制表符和空格的混合,这可能会很糟糕。

    我过去认为,空白问题只是一个适应它的问题

    有人指出了Python缩进的一些严重缺陷,我认为这些缺陷非常有效,而对这些缺陷的一些潜意识理解正是有经验的程序对整个问题感到紧张的原因:-

    • 剪切和粘贴不再有效!您不能从一个应用程序中剪切锅炉板代码并将其放入另一个应用程序中
    • 您的编辑器将无法帮助您。对于C/Jave等,有两种情况发生在“官方”花括号缩进和“官方”空白缩进上。大多数编辑器都能够重新格式化空白缩进以匹配花括号嵌套——这会给您一个字符串视觉线索,如果缩进不是您所期望的,则说明有问题。使用pythons的“空间就是语法”范例,编辑器无法帮助您
    • 在已经复杂的逻辑中引入另一个条件的痛苦。添加另一个if-then-else int