我简直不敢相信,但是在 python 代码中可以混合使用制表符和空格:
if __name__ == '__main__':
for a in range(3): # indented with 4 spaces
print(a) # indented with 4 spaces and one tab
这背后的原因是什么?
测试于:
- Python 3.3.0 (CPython)
- Python 2.7.3 (CPython)
注意:stackoverflow 似乎用空格更改了制表符!
最佳答案
这是关于 Python 缩进的众多误解之一。
Python 实际上所做的是查看行与行之间的相对缩进,而不是固定数量。
- 当行与行之间的缩进增加时,它认为这是一个 block 的开始并将新的缩进级别压入堆栈。
- 当缩进减少时,它弹出缩进级别堆栈,直到找到匹配级别,为每个弹出关闭一个 block
它并不关心您是使用制表符、空格还是混合使用,只要您对 block 范围内的每个级别保持一致即可。
例如以下为有效文件(使用[ ]表示空格,[t]表示制表符)
if True:
[ ][ ][ ][ ]print ("Four spaces")
if True:
[t]print ("Tab")
[t]if True:
[t][ ][ ][ ]print ("Tab and three spaces")
if True:
[ ][t][ ]print ("Mixture")
话虽如此 - 大多数理智的人都坚持使用 4 个空格作为标准缩进,就像 Benevolent Dictator intended it 一样.
参见 Python: Myths about Indentation了解更多。
关于python - 为什么可以混合python缩进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14276849/