NameError: 函数未在 Python 中定义
NameError: function is not defined in Python
Python“NameError: function is not defined”发生在我们尝试调用未声明或声明之前的函数时。要解决此错误,请确保您没有拼错函数名称并在声明后调用它。
下面是错误如何发生的示例。
主程序
# ⛔️ NameError: name 'do_math' is not defined print(do_math(50, 50)) def do_math(a, b): return a + b
我们试图do_math
在声明它之前调用该函数,这导致了错误。
在我们调用该函数时,它没有在我们的程序中定义。
要解决这种情况下的错误,我们必须在函数声明后将调用移至该函数。
主程序
def do_math(a, b): return a + b print(do_math(50, 50)) # 👉️ 100
Python“NameError: function is not defined”的出现有多种原因:
- 调用一个不存在的函数。
- 在声明之前调用函数。
- 函数名称拼写错误(名称区分大小写)。
- 使用内置模块而不先导入它们。
- 从外部调用作用域函数。例如,声明一个嵌套函数并试图从外部调用它。
确保在调用函数之前定义了该函数,并且没有拼错函数名称。
主程序
def do_math(a, b): return a + b # ⛔️ NameError: name 'do_Math' is not defined. Did you mean: 'do_math'? print(do_Math(50, 50)) # 👈️ function name misspelled
我们拼错了M
导致错误的函数名称(使用了大写字母)。
函数名称区分大小写,因此请确保在调用函数时没有拼错函数名称。
如果您使用内置模块而不导入它,也会导致“NameError: function is not defined”。
主程序
# ⛔️ NameError: name 'math' is not defined print(math.floor(17.7))
我们使用
math
模块时没有先导入它,所以 Python 不知道math
指的是什么。要解决该错误,请确保导入您正在使用的所有模块。
主程序
import math print(math.floor(17.7)) # 👉️ 17
如果您尝试从外部调用作用域函数,也会发生该错误。
主程序
def outer(): def inner(): return 'hello world' print('success') outer() # ⛔️ NameError: name 'inner' is not defined. Did you mean: 'iter'? inner()
该inner
函数是在函数内部声明的outer
,所以我们不能从外部范围调用它。
如果我们必须从外部访问函数,最好的解决方法是在外部作用域中声明该函数。
主程序
def inner(): return 'hello world' def outer(): print(inner()) print('success') outer() inner()
在这种情况下,另一种方法是返回
inner()
从函数调用函数的结果outer()
。
主程序
def outer(): def inner(): return 'hello world' result = inner() return result print(outer()) # 👉️ "hello world"
结论
Python“NameError: function is not defined”发生在我们尝试调用未声明或声明之前的函数时。要解决此错误,请确保您没有拼错函数名称并在声明后调用它。