Python 中 Function Is Not Defined 错误
通过这个解释,我们将了解当 Python 程序显示类似 NameError: name '<functionName>' is not Defined
的错误时会出现什么情况,即使脚本中存在该函数。
我们还了解当我们使用拼写错误的变量或未导入的内置函数时会发生什么,以及如何在 Python 中避免这些错误。
避免在 Python 中声明之前调用函数
Python 中出现 NameError: function is not Define 的原因有很多,我们将讨论出现此错误的最常见原因。 当我们在程序中定义函数之前调用该函数时,Python解释器将无法找到函数定义。
在这种情况下,该函数将是看不见的,并且Python解释器还没有遇到该函数定义。 因此,Python解释器会感到困惑并抛出错误,这意味着该函数尚未根据解释器定义。
让我们看一个简单的例子; 在这个程序中,我们在定义函数之前编写了一条调用语句。 由于解释器是逐行执行Python程序的,所以当它从第一行开始执行时,它会遇到一个特定的函数调用,但它不知道 Hello()
是什么。
Hello()
def Hello():
print('I will never be called')
当我们运行这个Python脚本时,它会混淆它是否是一个函数,并且Python解释器会停止并抛出错误。 这是因为该函数的定义是在函数调用之后出现的; 这就是为什么我们在定义函数之前永远不能调用它。
NameError: name 'Hello' is not defined
我们需要在调用函数之前定义该函数来修复此错误。
避免在 Python 中使用拼写错误的变量或函数名称
出现此错误的另一个原因是用户在定义函数的正确拼写时犯了错误; 这就是用户收到此类错误的原因。 Python 区分大小写,因此小写和大写将是不同的函数。
我们检查一个示例来演示解释器在收到拼写错误的变量时如何操作。
Orange='orange'
for i in orange:
print(i)
输出:
NameError: name 'orange' is not defined
当我们运行Python脚本时,我们得到一个错误,提示“orange”未定义,但这一次我们没有犯拼写错误,那么为什么即使我们已经定义了这个变量,我们也会得到这个错误呢? 这是因为我们定义了以大写字母开头的变量,并试图以小写字母访问它。
同样的场景也会应用到函数中。 如果我们用橙色覆盖 Orange 变量,它就会起作用。
orange='orange'
for i in orange:
print(i)
输出:
o
r
a
n
g
e
避免在 Python 中使用未导入的内置模块
假设当您编写 Python 程序时,如果您想使用任何内置函数,如 print()
、input()
等,您可以在代码中使用它。 当您需要使用 Python 中未内置但存在于某些模块中的函数时,会发生什么情况?
要使用属于某些模块的函数,必须首先将该模块导入到 Python 程序中。 有些初学者在尝试使用模块中的函数而不是导入该特定模块时会失败; 看一个例子。
在此程序中,用户尝试生成随机值,但是当用户运行此代码时,用户会遇到我们讨论的相同错误。 原因是用户失败,即尝试访问 random()
函数而不导入其随机模块。
Randome_Values=random.random()
print(Randome_Values)
输出:
NameError: name 'random' is not defined
当用户在 Python 脚本中导入随机模块时,它会起作用。
import random
Randome_Values=random.random()
print(Randome_Values)
输出:
0.07463088966802744
有时,用户自己编写 Python 模块,但会遇到问题并得到相同的错误。
这是因为用户在导入类后尝试从另一个文件调用函数,但用户可能没有在定义函数的位置保存该文件,这就是用户收到此错误的原因。 所以在调用这个函数之前一定要保存它。
修复 Python 中变量超出范围的问题
大多数初学者失败的另一个原因是当他们尝试访问超出范围的变量并得到相同的错误时。 让我们看一个例子,我们会得到更好的理解。
def take_order():
orders=input("Enter your orders and separate it using comma :").split(',')
return orders
def Delete_Orders():
deleted_orders=input("Enter your order name which you want to cancel :")
orders.remove(deleted_orders)
return orders
print(take_order())
print(Delete_Orders())
当我们运行这个Python脚本时,take_order()
函数将正常工作,但是当我们调用 Delete_Orders()
函数从订单列表中删除订单时,就会发生错误。
NameError: name 'orders' is not defined
这是因为 order 变量是在 take_order()
函数中定义的,并且我们尝试从 Delete_Orders()
函数访问它。 这就是为什么当执行控制到达我们从订单列表中删除该项目的位置时; 它会抛出错误,因为我们访问它超出了范围。
为了解决这个问题,我们必须声明一个存储空字符串的变量,变量名称为orders。 之后,我们需要使用 global
关键字(我们称之为订单变量)以使其可重用。
orders=''
def take_order():
global orders
orders=input("Enter your orders and separate it using comma :").split(',')
return orders
def Delete_Orders():
deleted_orders=input("Enter your order name which you want to cancel :")
orders.remove(deleted_orders)
return orders
print(take_order())
print(Delete_Orders())
输出:
Enter your orders and separate it using comma :pizza,drink,water
['pizza', 'drink', 'water']
Enter your order name which you want to cancel :water
['pizza', 'drink']
相关文章
修复 Python 中错误 TypeError: 'map' Object Is Not Subscriptable
发布时间:2023/07/05 浏览次数:183 分类:Python
-
本文将讨论 TypeError: 'map' object is not subscriptable,它是 TypeError 的子类。 当我们尝试执行与对象类型不兼容的操作时,我们会遇到类型错误。Python 中出现 TypeError: 'map' object is not subscriptable 错误的
修复 Python 中 TypeError: Decoding Unicode Is Not Supported 错误
发布时间:2023/07/05 浏览次数:60 分类:Python
-
本文将讨论如何解决Python中的 TypeError: decoding Unicode is not supported 错误。Python 中 TypeError: decoding Unicode is not supported 错误
修复 Python 中 SSL: CERTIFICATE_VERIFY_FAILED 错误
发布时间:2023/07/05 浏览次数:120 分类:Python
-
本文介绍了您在将 SSL 与网站或应用程序连接期间可能遇到的 SSL: CERTIFICATE_VERIFY_FAILED 错误的详细信息。
修复 Python 中错误 Pylint Unresolved Import
发布时间:2023/07/05 浏览次数:89 分类:Python
-
本文将讨论如何在 Python 中使用 Pylint 解决未解决的导入错误。修复 Python 中的 Pylint 无法解析的导入错误 要解决 Python 中未解决的导入错误,请在工作区设置中设置 Python 路径。
修复 Python 中 ImportError: Cannot Import Name 错误
发布时间:2023/07/05 浏览次数:142 分类:Python
-
通过这个解释,我们将了解为什么会收到 ImportError: Cannot import name 错误。 我们还将学习如何在 Python 中修复此类错误。Python 中 ImportError: cannot import name 错误的原因
修复 Python 中错误 AttributeError: 'module' Object Has No Attribute 'SSL_ST_
发布时间:2023/07/05 浏览次数:171 分类:Python
-
在 Python 中使用 SSL 模块时,会引发 AttributeError: 'module' object has no attribute 'SSL_ST_INIT' 错误,因为 SSL 模块在 Python 标准库中不可用。要解决此问题,您必须安装 openssl-devel 软件包。
修复 python 中 AttributeError: 'generator' Object Has No Attribute 'next'
发布时间:2023/07/05 浏览次数:72 分类:Python
-
本篇文章将介绍修复 Python 中的 AttributeError: 'generator' object has no attribute 'next'。修复 Python 中的 AttributeError: 'generator' object has no attribute 'next' 错误
Python 中错误 File<Stdin>, Line 1, in <Module>
发布时间:2023/07/05 浏览次数:134 分类:Python
-
在本文中,我们将讨论人们面临的最常见的语法错误,即文件“”,第 1 行, 错误。 让我们看看为什么会出现这个错误以及如何在 Python 中解决它。Python 错误 File<Stdin>, Line 1, in <Module&
Python 中错误 AttributeError: Module Enum Has No Attribute Intflag
发布时间:2023/07/05 浏览次数:65 分类:Python
-
本篇文章将介绍修复 Python 中的 AttributeError: module 'enum' has no attribute 'IntFlag'。卸载 enum34 包以修复 Python 中的 AttributeError: module 'enum' has no attribute 'IntFlag' 错误