当前位置: 首页 > 知识库问答 >
问题:

python 3中的函数注释获取“未定义名称”错误

韩瀚
2023-03-14

我试图使用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

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

共有3个答案

从渊
2023-03-14

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

fa(function=“Newton”)

薛楷
2023-03-14

正如错误消息告诉您的,没有定义name函数。如果要将提示作为函数,请将其置于引号中:

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

除了@johnrsharpe所说的之外,如果您不想使用名称函数

# from __future__ imports must occur at the beginning of the file. DO NOT CHANGE!
from __future__ import annotations
刘昌翰
2023-03-14

错误消息告诉您,名称函数没有定义。如果你想把提示作为一个函数,把它放在引号中:

def fa(func: 'function', *args):
 类似资料:
  • 问题内容: 我目前正在创建一个有趣的python线性代数模块,并使用该语言进行实践。我最近尝试将类型注释添加到模块中,如下所示: 但是,当我尝试导入它时,它吐出一个。我承认这个问题已经在这里以某种形式得到了回答,但似乎并不能完全解决我的情况。 我想知道的是: 我已经在该文件中按字面值定义了该类。为什么说未定义名称? 如何定义可用于注释的方式(作为)? 问题答案: 您有一份前瞻性声明;函数(作为方法

  • 我目前正致力于创建一个python线性代数模块,以获得乐趣并练习该语言。我最近尝试向模块添加类型注释,如下所示: 但是,当我尝试导入此内容时,它会抛出一个。我承认这个问题已经在这里以某种形式得到了回答,但它似乎并没有完全为我的情况提供答案。 我想知道的是: 我已经在这个文件中定义了这个类。为什么它说这个名字没有定义

  • 我得到一个错误,当我试图运行这个简单的脚本: 假设我输入“dude”,我得到的错误是: 我正在运行MacOSX10.9.1,我正在使用安装了Python3.3的PythonLauncher应用程序来运行脚本。

  • 问题内容: 我对python相对较新,并且在命名空间方面遇到一些问题。 问题答案: 由于不知道是谁,因此您看到的味精应该在调用时发生(调用很好),请将其更改为:

  • 问题内容: 我正在尝试在python3中编写一个简单的递归函数。在学习OO Java时,我还想编写涉及对象的Python代码。这是我的下面的代码。我提示用户输入一个数字,屏幕应该显示每个小到5的整数。 但是,当我在终端上运行它时,它说:“ NameError:未定义名称’recursive’”。错误如下所示: 是什么导致问题出在这里?我知道如何编写递归函数,给它一个参数,然后使其在终端上运行。但是