129
|
quamrana Ryuzaki L · 技术社区 · 16 年前 |
|
1
99
答案就在政治公众人物会议上给出了[编辑:这篇文章已经在 2013 ]我引述:
你还需要什么其他的潜在原因? 更直截了当地说:还应考虑第一段中所述的政治公众人物的范围:
其目的是 所有进入官方python发行版的代码 格式一致(我希望我们能一致认为这是一个普遍的好东西)。 由于单个程序员的空格和制表符之间的决定是a)真正的品味问题,b)很容易通过技术手段(编辑器、转换脚本等)处理,所以有一个明确的结束所有讨论的方法:选择一个。 吉多是唯一的选择。他甚至不必给出理由,但他还是参考了经验数据。 对于所有其他目的,您可以将此PEP作为建议,或者忽略它——您的选择、您的团队或您的团队领导。 但是,如果我可以给你一个建议:不要混合它们;-)[ed:混合制表符和空格不再是一个选项。] |
![]() |
2
76
好吧,似乎每个人都对空间有强烈的偏见。 我只使用标签。我很清楚为什么。 标签实际上是一个很酷的发明 之后 空间。它允许您在不推空格数百万次或使用假选项卡(产生空格)的情况下进行缩进。 我真的不明白为什么每个人都歧视标签的使用。 这很像老年人歧视年轻人,因为他们选择了一种新的更有效的技术,并且抱怨脉冲拨号工作正常。 每电话 不仅仅是这些新奇的新产品。”单音拨号并不适用于每一部电话,这就是为什么它是错误的”。 您的编辑器无法正确处理选项卡?嗯,得到一个 现代的 编辑。也许是该死的时候,我们现在是在21世纪,而当一个编辑是一个高科技复杂的软件的时代已经过去很久了。我们现在有很多编辑器可供选择,所有支持选项卡的编辑器都很好。此外,您还可以定义选项卡的大小,这是您不能用空格操作的。 看不到标签?这是什么理由?好吧,你也看不到空间! 我能大胆地建议找一个更好的编辑吗?其中一个是10年前发布的高科技产品, 显示不可见字符 ?(挖苦) 使用空格会导致更多的删除和格式化工作。这就是为什么(以及所有其他知道这一点并同意我的人)将选项卡用于Python的原因。 把标签和空格混合在一起是一个没有争议的问题。这真是一团糟,永远不会奏效。 |
![]() |
3
36
我个人不同意标签上的空格。对我来说,标签是一种文档布局字符/机制,而在代码的情况下,空格用于内容或命令之间的描述。 我必须同意吉姆的意见,即标签并不是真正的问题,而是人们以及他们希望如何混合标签和空格。 也就是说,我强迫自己为了约定而使用空间。我重视一致性胜过个人偏好。 |
![]() |
4
27
空格的原因是选项卡是可选的。空格是标点符号中实际的最小公分母。 每一个像样的文本编辑器都有一个“用空格替换制表符”,许多人都使用这个。但并非总是如此。 虽然有些文本编辑器可能会用制表符替换一组空格,但这是非常罕见的。 底线 . 你不能在空格上出错。你 可以 标签出错。所以不要使用标签,减少出错的风险。 |
![]() |
5
25
标签的问题在于它们是不可见的,人们永远无法在标签的宽度上达成一致。当混合使用制表符和空格时,如果将tabstop设置为python之外的某个值(每8个空格使用tabstop),则会看到代码的布局与python看到的不同。因为布局决定了块,所以您将看到不同的逻辑。它会导致细微的错误。 如果您坚持不使用pep 8,并且使用制表符——或者更糟的是,混合制表符和空格——至少总是使用“-tt”参数运行python,这使得 不一致的 缩进(有时是制表符,有时是同一缩进级别的空格)错误。此外,如果可能,请将编辑器设置为以不同的方式显示选项卡。但实际上,最好的方法不是使用制表符,句号。 |
![]() |
6
22
缩进的主要问题发生在混合制表符和空格时。显然,这并不能告诉你应该选择哪一个,但这是一个很好的理由来推荐一个,即使你是通过掷硬币来选择的。 但是,imho有一些次要的理由支持空格而不是制表符:
显然,这是一个宗教性很深的问题,而编程却备受困扰。最重要的问题是我们应该选择一个——即使那不是你喜欢的那个。有时我认为重要的缩进最大的好处是,至少我们不需要设置支撑火焰战。 值得一读的是 this Jamie Zawinski关于这个问题的文章。 |
![]() |
7
11
注意,使用标签会混淆PEP 8的另一个方面:
假设你使用2的标签宽度,我使用8的标签宽度。你写了所有的代码,你的最长行达到79个字符,然后我开始处理你的文件。现在我很难阅读代码,因为(正如政治公众人物所说的):
如果我们都用4个空格,它总是一样的。任何一个编辑器支持80个字符宽度的人都可以轻松地阅读代码。 注意:80个字符的限制本身就是一场神圣的战争,所以我们不要在这里开始。 任何一个不烂的编辑器都应该有一个使用空格的选项,就像它们是制表符一样(插入和删除),所以这真的不应该是一个有效的参数。 |
![]() |
8
7
这个问题的答案是:PEP-8想要提出一个建议,并且已经决定,由于空间更受欢迎,它会强烈推荐空间而不是标签。 PEP-8注释
PEP-8说
'每个缩进级别使用4个空格。'
“对于不想弄乱的旧代码,您可以继续使用8个空格的制表符。”
“不要混合制表符和空格。”
'最流行的python缩进方式是只使用空格。第二种最流行的方法是只使用制表符。”
'对于新项目,强烈建议只在选项卡上使用空格。'
我在PEP-8中找不到一个很好的答案来回答我自己的问题。 我使用标签,这是我在其他语言中历史上使用过的。 python接受源代码,只使用制表符。这对我来说已经足够好了。 我原以为我会去太空工作。在我的编辑器中,我配置了一个文件类型以独占使用空格,因此如果我按Tab键,它将插入4个空格。如果我按Tab太多次,我必须删除空格! 阿格! 删除次数是选项卡的四倍!我的编辑说不出我用了4个空格来缩进(尽管一个编辑可能会这样做),而且显然坚持一次删除一个空格。
不能告诉python在读取缩进时将制表符视为n个空格吗?
如果我们可以就每个缩进4个空格和每个制表符4个空格达成一致,并允许Python接受这一点,那么就没有问题了。
|
![]() |
9
3
|
![]() |
10
3
我总是在代码中使用制表符。也就是说,我最近找到了使用空格的理由:在我的诺基亚N900互联网平板电脑上开发时,我现在有了一个没有制表键的键盘。这迫使我要么复制粘贴选项卡,要么用空格重新编写代码。 我在其他手机上也遇到了同样的问题。当然,这不是Python的标准用法,而是需要记住的一点。 |
![]() |
11
1
由于python依赖缩进来识别程序结构,因此需要一种明确的识别方法。这就是选择空格或制表符的原因。 但是,python也有一个很强的哲学,即只有一种方法可以做事情,因此应该有一个正式的推荐方法来做缩进。 空格和制表符都对编辑器作为缩进处理提出了独特的挑战。在编辑器甚至用户设置中,选项卡本身的处理并不统一。因为空间是不可配置的,所以它们提供了更合理的选择,因为它们保证结果在任何地方都是一样的。 |
![]() |
12
0
我能告诉你的最显著的优势是,很多程序员和项目使用一组列作为源代码,如果有人提交了一个改变,他们的tabstop设置为2个空格,而项目使用4个空格作为tabstop,那么长的行对于其他人的编辑器窗口来说太长了。我同意选项卡更容易使用,但我认为空间更容易协作,这对于像Python这样的大型开源项目很重要。 |
![]() |
13
0
你可以吃你的蛋糕。设置编辑器以自动将选项卡展开为空格。
(那将是
|
![]() |
14
-1
除了已经命名的所有其他原因(一致性、从不混合空格和制表符等),我认为还有其他一些原因需要注意4个空格的约定。这些只适用于python(可能还有其他一些缩进有意义的语言)。根据个人喜好,其他语言的标签可能更好。
|
![]() |
15
-3
选项卡的普遍问题是,它们可以在不同的环境中以不同的方式表示。
选项卡的另一个问题是如何在打印输出中表示它们。我相信大多数打印机都将标签解释为8个空格。 对于空间,毫无疑问。一切都会按作者的意愿排列。 |
![]() |
16
-4
关于双方的讨论 Jim and Thomas Wouters 在评论中。 问题是…由于制表符和空格的宽度都可以改变——而且由于程序员不能就两种宽度达成一致——为什么制表符要承担责任。 我同意吉姆的观点——标签本身并不邪恶。但有一个问题… 有了空间,我可以控制 “我自己的代码” 在世界上的每一位编辑看来。如果我使用4个空格——那么无论您在哪个编辑器中打开我的代码,它都将与左边距保持相同的距离。对于制表符,我可以随意使用编辑器的制表符宽度设置——甚至对于我自己的代码也是如此。我不喜欢这样。 因此,尽管确实,即使是空格也不能保证一致性——它们至少能让您更好地控制自己的代码在任何地方的外观——而制表符不能做到这一点。 我认为,不是程序员编写代码的一致性,而是显示代码的编辑器的一致性,空间更容易实现(和强制实施)。 |
![]() |
July · 如何定义数字间隔,然后四舍五入 1 年前 |
![]() |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
|
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
![]() |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
|
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
![]() |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |