Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the purpose of the colon before a block in Python?

Tags:

python

syntax

What is the purpose of the colon before a block in Python?

Example:

if n == 0:     print "The end" 
like image 694
Joshua Swink Avatar asked Oct 18 '08 21:10

Joshua Swink


People also ask

What is the purpose of the colon in Python?

A colon is used to represent an indented block. Another major use of the colon is slicing. In slicing, the programmer specifies the starting index and the ending index and separates them using a colon which is the general syntax of slicing. A colon is used to identify the keys in dictionaries.

What does :: mean in Python?

Artturi Jalli. In Python, [::-1] means reversing a string, list, or any iterable with an ordering. For example: hello = "Hello world"

What is colon used for in coding?

In the esoteric programming language INTERCAL, the colon is called "two-spot" and is used to identify a 32-bit variable—distinct from a spot (.) which identifies a 16-bit variable.


2 Answers

The colon is there to declare the start of an indented block.

Technically, it's not necessary; you could just indent and de-indent when the block is done. However, based on the Python koan “explicit is better than implicit” (EIBTI), I believe that Guido deliberately made the colon obligatory, so any statement that should be followed by indented code ends in a colon. (It also allows one-liners if you continue after the colon, but this style is not in wide use.)

It also makes the work of syntax-aware auto-indenting editors easier, which also counted in the decision.


This question turns out to be a Python FAQ, and I found one of its answers by Guido here:

Why are colons required for the if/while/def/class statements?

The colon is required primarily to enhance readability (one of the results of the experimental ABC language). Consider this:

if a == b      print a 

versus

if a == b:      print a 

Notice how the second one is slightly easier to read. Notice further how a colon sets off the example in this FAQ answer; it’s a standard usage in English.

Another minor reason is that the colon makes it easier for editors with syntax highlighting; they can look for colons to decide when indentation needs to be increased instead of having to do a more elaborate parsing of the program text.

like image 143
tzot Avatar answered Sep 29 '22 09:09

tzot


Consider the following list of things to buy from the grocery store, written in Pewprikanese.

pewkah lalala     chunkykachoo     pewpewpew skunkybacon 

When I read that, I'm confused, Are chunkykachoo and pewpewpew a kind of lalala? Or what if chunkykachoo and pewpewpew are indented just because they are special items?

Now see what happens when my Pewprikanese friend add a colon to help me parse the list better: (<-- like this)

pewkah lalala:   (<-- see this colon)     chunkykachoo     pewpewpew skunkybacon 

Now it's clear that chunkykachoo and pewpewpew are a kind of lalala.

Let's say there is a person who's starting to learn Python, which happens to be her first programming language to learn. Without colons, there's a considerable probability that she's going to keep thinking "this lines are indented because this lines are like special items.", and it could take a while to realize that that's not the best way to think about indentation.

like image 29
Yoo Avatar answered Sep 29 '22 09:09

Yoo