Python 3:“NameError:name'function'未定义”

时间:2017-09-11 20:11:55

标签: python python-3.x pycharm

运行

def foo(bar: function):
    bar()

foo(lambda: print("Greetings from lambda."))

使用Python 3.6.2产生

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'function' is not defined

但是,删除类型注释会按预期工作。

PyCharm还在行'function' object is not callable上发出警告bar()

编辑:正如我对Pieters的回答所述,这个问题提出来了,因为

def myfunction():
    pass

print(myfunction.__class__)

输出<class 'function'>

1 个答案:

答案 0 :(得分:7)

Python中没有定义名称bar,没有。注释仍然是Python表达式,必须引用有效名称。

您可以改为使用类型提示来说from typing import Callable def foo(bar: Callable[[], Any]): bar() 可调用的;使用typing.Callable

max

这定义了一个不带参数的可调用类型,其返回值可以是任何值(我们不关心)。