Function parameter with colon

Question:

I just came across this function:

def splitComma(line: str):
    splits = Utils.COMMA_DELIMITER.split(line)
    return "{}, {}".format(splits[1], splits[2])

I am aware that you can separate parameters by , or can set a value within a parameter like a=39 but I have not seen a colon like line:str. I have checked the function definition online but could not find anything like this. What does this colon mean?

Asked By: ruedi

||

Answers:

This is a type annotation used by static analysis tools to check, well, types. It helps ensure program correctness before you run the code.

Answered By: wbadart

It’s a function annotation; function arguments and the return value can be tagged with arbitrary Python expressions. Python itself ignores the annotation (other than saving it), but third-party tools can make use of them.

In this case, it is intended as type hint: programs like mypy can analyze your code statically (that is, without running it, but only looking at the source code itself) to ensure that only str values are passed as arguments to splitComma.

A fuller annotation to also specify the return type of the function:

def splitComma(line: str) -> str:
    ...

(Note that originally, function annotations weren’t assumed to have any specific semantics. This is still true, but the overwhelming assumption these days is that the annotations provide type hints.)

Answered By: chepner
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.