TypeError:“模块”对象在 Python 中不可调用

TypeError: ‘module’ 对象在 Python 中不可调用

TypeError: ‘module’ object is not callable in Python

Python“TypeError: ‘module’ object is not callable”发生在我们将模块导入为import some_module但尝试将其作为函数或类调用时。要解决该错误,请在调用之前使用点表示法访问特定的函数或类,例如module.my_func().

typeerror 模块对象不可调用

下面是错误如何发生的示例。假设我们有 2 个文件 –
another.pymain.py.

另一个.py
def do_math(a, b): return a + b

这是 的内容main.py

主程序
import another # ⛔️ TypeError: 'module' object is not callable another(100, 100)

问题是,在main.py文件中,我们导入了another模块,但调用模块时就好像它是do_math()函数一样。

解决该错误的一种方法是在调用之前使用点表示法访问特定的函数或类。
主程序
import another print(another.do_math(100, 100)) # 👉️ 200


在调用函数之前,
我们使用点符号来访问该
do_math函数。another.py

或者,您可以直接导入特定的函数或类。

主程序
from another import do_math print(do_math(100, 100)) # 👉️ 200

此导入语句仅从模块导入do_math函数another.py

如果需要导入多个变量或函数,在导入语句中用逗号分隔,例如. from another import first, second, third

开始调试的一个好方法是print(dir(your_module))查看导入的模块具有哪些属性。

这是打印another.py模块属性的样子。

主程序
import another # 👇️ ['__builtins__', '__cached__', '__doc__', # '__file__', '__loader__', '__name__', # '__package__', '__spec__', 'do_math'] # 👈️ notice 'do_math' print(dir(another))

如果将模块对象传递给
dir()函数,它会返回模块属性名称的列表。

请注意do_math列表末尾的属性。

这意味着我们必须访问属性another.do_math以获取对函数的引用。

主程序
import another print(another.do_math(50, 50)) # 👉️ 100

或者,您可以直接导入do_math函数。

主程序
from another import do_math print(do_math(50, 50)) # 👉️ 100

“TypeError: ‘module’ object is not callable” 意味着我们正在尝试调用模块对象而不是函数或类。

为了解决这个错误,我们必须访问模块对象上指向特定函数或类的属性。

结论#

Python“TypeError: ‘module’ object is not callable”发生在我们将模块导入为import some_module但尝试将其作为函数或类调用时。要解决该错误,请在调用之前使用点表示法访问特定的函数或类,例如module.my_func().