- Daniel Arbuckle's Mastering Python
- Daniel Arbuckle
- 308字
- 2021-07-02 21:09:41
Code indentation
As programmers, when we read code we look at how it's indented to tell us how the code blocks are nested. However, most other programming languages use actual symbols to tell the language parser where a block begins and ends. In coding, the same information in two different places is a violation of the basic best practices of any programming language. So, Python omits the beginning and ending block markers and uses indentation (as shown in the following code screenshot) to inform the parser as well as the programmer:

There is one problem that arises from that, though!
There are different ways of encoding indentation in a text file. These are as follows:
- Use Space characters
- Tab characters
- A combination of both
The codes we're looking at in the preceding code image mixes spaces and tabs, which, in Python 2 was valid, but a terrible idea, and which, in Python 3, is a syntax error. I've configured the editor to highlight tab characters in color, so we can easily see which indentation comes from spaces and which comes from tabs, to see why mixing spaces and tabs is not good, even when it's allowed.
All we have to do is change the tab width and it will look something like the following code image:

Even though the indentation looked good in the previous code image, now it's clearly wrong. There's no ambiguity if all indentation comes from tab characters. So, using only tabs is valid, even in Python 3. However, it is the recommendation of PEP 8 and the Python community that we always use exactly four spaces to indicate one level of indentation. Any halfway decent editor can insert those spaces for us when we press the Tab key. There are several more recommendations, which we're going to go through quickly in the next sub-section.
- 摩登創(chuàng)客:與智能手機和平板電腦共舞
- Developing Middleware in Java EE 8
- 樂高機器人設計技巧:EV3結構設計與編程指導
- Production Ready OpenStack:Recipes for Successful Environments
- Hadoop+Spark大數(shù)據分析實戰(zhàn)
- 高級C/C++編譯技術(典藏版)
- C語言程序設計
- Learning Concurrent Programming in Scala
- Getting Started with LLVM Core Libraries
- MySQL從入門到精通(軟件開發(fā)視頻大講堂)
- 深度學習:Java語言實現(xiàn)
- Visual Studio Code 權威指南
- Maker基地嘉年華:玩轉樂動魔盒學Scratch
- Building Web and Mobile ArcGIS Server Applications with JavaScript(Second Edition)
- Learning GraphQL and Relay