Syntax & Styling

  • No mandatory statement termination characters.
  • Indentation(4 spaces, no tabs).
  • Indent to begin a block, dedent to end one.
  • Statements that expect an indentation level end in a colon(:).
  • CamelCase for classes and lower_case_with_underscores for functions and methods.

  • Refer to PEP 8 for more styling guidelines.

Python Enhancement Proposals(PEP)

PEPs are Python Enhancement Proposals. They describe changes to Python itself, or the standards around it.


  • One unusual Python feature is that the whitespace indentation of a piece of code affects its meaning.
  • A logical block of statements such as the ones that make up a function should all have the same indentation, set in from the indentation of their parent function or “if” or whatever. If one of the lines in a group has a different indentation, it is flagged as a syntax error.
  • Indentation(4 spaces, no tabs).
  • Indent to begin a block, dedent to end one.


Boiler plate syntax

if __name__ == '__main__':

When the Python interpreter reads a source file, it executes all of the code found in it. Before executing the code, it will define a few special variables. For the main program(program you run), it sets the special __name__ variable to have a value __main__. If this file is being imported from another module, __name__ will be set to the module’s name.

The above mentioned boiler plate syntax avoids the imported module from being executed(Because the imported module’s __name__ is not __main__). It’s not mandatory to have the boiler plate syntax but it is a good practice incase you ever want to import the program you write as a module into other program.

TL:DR: Think about the boiler plate syntax as a piece of code that should just be there at the bottom of your python scripts.

Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
>>> __name__        # For the program you run, special variable __name__ is assigned value __main__
>>> import sys      # When you import a module/program, the __name__ variable is set to the module name not __main__
>>> sys.__name__

Further reading on this topic: