python 3中的函数注释get"名称未定义"错误

时间:2014-12-13 16:25:39

标签: python-3.x typechecking

我正在尝试使用python3类型的注释功能。

以下是一些没有注释的玩具功能:

def fa(func, *args):
    return func(*args)
def fb(x:str):
    return x + " returned."
fa(fb, "Newton")

这些工作正常。但是,一旦我为fa添加了一些注释,就会出错:

def fa(func:function, *args):
    return func(*args)
def fb(x:str):
    return x + " returned."
fa(fb, "Newton")

Traceback (most recent call last):
  File "/usr/local/lib/python3.4/site-packages/IPython/core/interactiveshell.py", line 2883, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-17-193b74f82e47>", line 1, in <module>
    def fa(func:function, *args):
NameError: name 'function' is not defined

为什么会发生这种情况,我该如何解决?

2 个答案:

答案 0 :(得分:5)

正如错误消息所示,名称function未定义。如果要将其提示为函数,请将其放在引号中:

def fa(func: 'function', *args):

答案 1 :(得分:-1)

因为您在函数参数中定义了一个变量,但该参数不存在于函数之外。您必须编写

  

FA(功能=&#34;牛顿&#34)