Python 错误 TypeError: Function Object Is Not Subscriptable
本文讨论了为什么我们会收到 TypeError: 'function' object is not subscriptable 错误,以及我们如何在 Python 中修复此错误。
修复 Python 中的函数对象类型错误
如果您是编程初学者,您可能会在运行程序时遇到错误。 有时您尝试修复此错误但发现很难,因为您没有尝试理解为什么在执行过程中会出现此错误。
例如,假设我们有一个员工列表,并希望将其包装在函数中以便稍后在类或模块中重用它。 当我们调用这个函数时,我们得到一个错误,说 TypeError: 'function' object is not subscriptable。
示例代码:
Employee_Name=['Max','Harry','Ben','Simon','Thomas']
def Employee_Name(n):
for i in range(5):
print(n[i])
Employee_Name(Employee_Name)
输出:
在上面的 Python 脚本中,我们循环了项目列表,错误发生是因为我们在函数内部传递了一个函数而不是列表。
n 变量包含一个函数,在循环内部,当我们尝试访问 n 变量的索引时,我们会收到错误,因为我们无法从不可订阅或不可迭代的对象访问索引。
初学者倾向于修复它,但其他人可能会遇到不同的错误,如以下输出所示。
示例代码:
def Employee_Name(n):
for i in range(5):
print(n[i])
Employee_Name=['Max','Harry','Ben','Simon','Thomas']
Employee_Name(Employee_Name)
输出:
认为如果在定义函数后声明列表,即使函数和列表具有相同的名称,也可以修复错误。 运行代码后,用户收到另一个错误。
原因是在变量声明时,Employee_Name 函数名被一个列表变量覆盖,我们不能调用列表。 简单的解决方案是永远不要使用与您用于函数的另一个对象相同的名称。
示例代码:
def Employee_Name(n):
for i in range(5):
print(n[i])
Employee_Names=['Max','Harry','Ben','Simon','Thomas']
Employee_Name(Employee_Names)
我们将变量名称 Employee_Name 更改为 Employee_Names。
输出:
Max
Harry
Ben
Simon
Thomas
在 Python 中使用空列表修复函数对象类型错误
另一个原因是当我们出于任何原因尝试创建列表的空列表时出现 TypeError: 'function' object is not subscriptable 。 让我们看一个例子。
示例代码:
Empty_List=[]
def Employee_Name(n):
for i in range(5):
Empty_List.append(n[i])
return Empty_List
Employee_Names=['Max','Harry','Ben','Simon','Thomas']
print(Employee_Name[Employee_Names])
输出:
我们在调用函数的时候,一定要在函数名中加上函数的左括号和右括号((function))
。 假设我们在其中放入方括号([function])
,这与使用方括号调用它的函数的行为相反。
有些用户犯了另一个错误,因为他们想要一个列表的列表。 当他们试图在左括号和右括号内修复它时,他们在方括号内传递一个列表并得到另一个错误。
示例错误:
Empty_List=[]
def Employee_Name(n):
for i in range(5):
Empty_List.append(n[i])
return Empty_List
Employee_Names=['Max','Harry','Ben','Simon','Thomas']
print(Employee_Name([Employee_Names]))
输出:
出现此错误的一个原因是传递了一个长度为 1 的列表,当我们在 for 循环中对其进行迭代时,其索引超出了范围。 简单的解决方案不是在函数 ([Employee_Names])
中使用方括号,而是需要在返回它的 Empty_List 变量中放置方括号。
示例代码:
Empty_List=[]
def Employee_Name(n):
for i in range(5):
Empty_List.append(n[i])
return [Empty_List]
Employee_Names=['Max','Harry','Ben','Simon','Thomas']
print(Employee_Name(Employee_Names))
输出:
[['Max', 'Harry', 'Ben', 'Simon', 'Thomas']]
相关文章
解决 Python中错误 TypeError: Not All Arguments Converted During String Forma
发布时间:2023/05/30 浏览次数:139 分类:Python
-
模 (%) 运算符就是其中一种方法。 它是 Python 中最古老的字符串格式化方法之一,以错误的方式使用它可能会导致 TypeError: not all arguments converted during string formatting。
解决 Python中 TypeError: Nonetype Object Is Not Subscriptable 错误
发布时间:2023/05/30 浏览次数:162 分类:Python
-
在本文中,我们将讨论为什么 TypeError: NoneType object is not subscriptable 在 Python 中出现以及如何修复它。 我们将学习如何对序列数据类型错误地使用 append()、sort() 和 reverse() 等方法导致
Python 错误 TypeError: Unhashable Type: List
发布时间:2023/05/17 浏览次数:112 分类:Python
-
本文将讨论 TypeError: unhashable type: 'list' 以及如何在 Python 中修复它。因为 Python 字典只接受可散列数据类型作为它们的键,而列表是不可散列的。
Python 错误 TypeError: __str__ Returned Non-String but Printing Output
发布时间:2023/05/17 浏览次数:142 分类:Python
-
本文旨在解决当我们尝试打印字符串而不是在函数中使用 return 语句时出现的问题。Python 错误TypeError: __str__ Returned Non-String but Printing Output
解决 Python 中 TypeError: An Integer Is Required 错误
发布时间:2023/05/16 浏览次数:149 分类:Python
-
在 Python 代码中发生的另一个最常见的错误是 TypeError。本文将展示我们如何在 Python 中得到 TypeError。 此外,我们将通过使用必要的示例和解释来讨论该主题,以使该主题更容易理解。
Python 中错误 TypeError: Must Be Real Number, Not STR
发布时间:2023/05/16 浏览次数:168 分类:Python
-
TypeError: must be real number, not str 错误涉及使用错误的类型和非实数,在本例中为 str 类型。使用 float() 或 int() 解决Python 中 TypeError: must be real number, not str
Python 错误 TypeError: Iteration Over Non-Sequence
发布时间:2023/05/16 浏览次数:69 分类:Python
-
当您尝试迭代不可迭代的对象时,会出现错误 TypeError: iteration over non-sequence 。 现在您已经了解了 TypeError 的原因,让我们在 Python 中重新创建非序列错误的迭代。
Python 中解决 TypeError: Can't Multiply Sequence by Non-Int of Type STR 错误
发布时间:2023/05/15 浏览次数:202 分类:Python
-
本篇文章着重于并旨在为 TypeError: can't multiply sequence by non-int of type 'str' 错误提供解决方案。Python 提供了多种数据类型,str 数据类型就是其中之一。 Python 中的字符串表示一系列 Unicode 字符,用
Python 中 TypeError: Can't Convert 'List' Object to STR 错误
发布时间:2023/05/15 浏览次数:127 分类:Python
-
我们将使用示例将列表对象转换为 Python 中的字符串。 我们还将通过示例介绍如何在 Python 中将字符串与列表对象连接起来。