Python 3: "NameError: name 'function' is not defined" -


running

def foo(bar: function):     bar()  foo(lambda: print("greetings lambda.")) 

with python 3.6.2 yields

traceback (most recent call last):   file "<stdin>", line 1, in <module> nameerror: name 'function' not defined 

however, removing type annotation works expected.

pycharm additionally gives warning 'function' object not callable on line bar().


edit: stated in comment of pieters’ answer, question raised, because

def myfunction():     pass  print(myfunction.__class__) 

outputs <class 'function'>.

there no name function defined in python, no. annotations still python expressions , must reference valid names.

you can instead use type hinting bar callable; use typing.callable:

from typing import callable  def foo(bar: callable[[], any]):     bar() 

this defines callable type takes no arguments , return value can (we don't care).


Comments

Popular posts from this blog

angular - Ionic slides - dynamically add slides before and after -

minify - Minimizing css files -

Add a dynamic header in angular 2 http provider -