首页 > 后端开发 > Python教程 > 为什么 `example = list(...)` 有时会抛出 `TypeError: 'list' object is not callable`?

为什么 `example = list(...)` 有时会抛出 `TypeError: 'list' object is not callable`?

Mary-Kate Olsen
发布: 2024-12-07 09:35:12
原创
510 人浏览过

Why Does `example = list(...)` Sometimes Throw a `TypeError: 'list' object is not callable`?

为什么“example = list(...)”会导致“TypeError: 'list' Object Is Not Callable”?

在 REPL 中,当您尝试使用代码“example = list('easyhoss')”,期望示例变量保存字符串中的字符列表,但遇到错误:“TypeError: 'list' object is不可调用”。

出现这种情况是因为您无意中用列表的实例覆盖了内置的 Python 类“list”。当您稍后在“example = list('easyhoss')”中引用“list”时,Python 将其解释为实例,无法调用该实例。

要理解这一点,我们必须探索 Python 的命名空间和作用域机制。

命名空间:Python 使用嵌套命名空间来存储对象名称(包括类和函数)。每个模块都有自己的命名空间,包括内置函数和类。

范围:引用名称时,Python 首先检查本地命名空间。如果没有找到,它会向上移动到更高级别的命名空间,直到找到名称或不再遇到任何命名空间(导致名称错误)。

在您的情况下,您在不知不觉中将“list”的实例分配给了全局“list”变量:

example = list('easyhoss')  # "list" refers to the built-in class
list = list('abc')  # Creates a "list" variable referencing an instance of "list"
example = list('easyhoss')  # "list" refers to the instance, resulting in the error
登录后复制

此覆盖隐藏了内置“list”类,导致“TypeError。”

要避免此错误,请使用 PyCharm 或 Atom 等 IDE 以及突出显示名称隐藏的 Python 插件。

其他注意事项:

  • “list”是触发实例创建的可调用类。
  • 实例“list” (list[]) 不可调用。
  • 有关类和实例的更多信息,请参阅 Python 文档。

当您启动交互式 Python 会话时,您创建一个具有自己的命名空间的临时模块,这也会影响命名空间的行为。

以上是为什么 `example = list(...)` 有时会抛出 `TypeError: 'list' object is not callable`?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板