运行
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'>
.
最佳答案
Python 中没有定义名称函数
,没有。注释仍然是 Python 表达式,并且必须引用有效的名称。
您可以改为使用类型提示来说明 bar
是一个可调用;使用 typing.Callable
:
from typing import Any, Callable
def foo(bar: Callable[[], Any]):
bar()
这定义了一个不带参数的可调用类型,其返回值可以是任何东西(我们不关心)。
关于 python 3 : "NameError: name ' function' is not defined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46163672/