TypeError: ‘module’ 对象在 Python 中不可调用
TypeError: ‘module’ object is not callable in Python
Python“TypeError: ‘module’ object is not callable”发生在我们将模块导入为import some_module
但尝试将其作为函数或类调用时。要解决该错误,请在调用之前使用点表示法访问特定的函数或类,例如module.my_func()
.
下面是错误如何发生的示例。假设我们有 2 个文件 –
another.py
和main.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()
.