迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 错误 TypeError: Function Object Is Not Subscriptable

作者:迹忆客 最近更新:2023/05/30 浏览次数:

本文讨论了为什么我们会收到 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 中的函数对象类型错误

在上面的 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)

输出:

Python TypeError- 'list' object is not callable 错误

认为如果在定义函数后声明列表,即使函数和列表具有相同的名称,也可以修复错误。 运行代码后,用户收到另一个错误。

原因是在变量声明时,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])

输出:

Python 中 TypeError- 'function' object is not subscriptable 错误

我们在调用函数的时候,一定要在函数名中加上函数的左括号和右括号((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]))

输出:

Python 错误 IndexError: list index out of range

出现此错误的一个原因是传递了一个长度为 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 中OverflowError: Math Range Error错误

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Python 错误 TypeError: Unhashable Type: List

发布时间:2023/05/17 浏览次数:112 分类:Python

本文将讨论 TypeError: unhashable type: 'list' 以及如何在 Python 中修复它。因为 Python 字典只接受可散列数据类型作为它们的键,而列表是不可散列的。

解决 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 中重新创建非序列错误的迭代。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便