Function type in Python
UPD: Function type in Python is types.FunctionType.
Running in the Python interactive interpreter this:
def spam():
    pass
print(type(spam))
produces:
builtins.function
The function type is builtins.function, quite logically.
Now, consider the following code you want to annotate:
def spam():
    def eggs():
        pass
    return eggs
How do we annotate the type of the output function spam?
Well, the first thing to try is:
def spam() -> builtins.function:
    def eggs():
        pass
    return eggs
Which is the wrong answer. Your code will crash with a NameError, because there’s no builtins.function declared.
Using function, __builtin__.function, from builtins import function, and import builtins.function won’t help.
So, what to do?
For example, this:
def spam() -> type(lambda: _):
    def eggs():
        pass
    return eggs
In fact, this is a pretty good solution; it’s clear and easy to understand. In addition, nothing better came to me anyway.
Interesting fact: Visual Studio with the (awesome) Python Tools 2.0 crashes as soon as it meets this code. No, really, try it yourself. Create a file with type(lambda: _) and open it in VS with PTVS 2.0 installed.
UPD: Fixed in PTVS 2.1 Beta.