Trong bài viết này, chúng ta sẽ nói về lỗi “TypeError: ‘module’ object is not callable” trong Python.
Chúng ta sẽ bắt đầu bằng cách xác định một số từ khóa được tìm thấy trong thông báo lỗi — module
và callable
.
Sau đó, bạn sẽ thấy một số ví dụ gây ra lỗi và cách khắc phục.
Vui lòng bỏ qua hai phần tiếp theo nếu bạn đã biết mô-đun là gì và ý nghĩa của việc gọi hàm hoặc phương thức.
Mô-đun trong lập trình là gì?
Trong lập trình mô-đun, mô-đun đơn giản là các tệp chứa các chức năng tương tự cần thiết để thực hiện một tác vụ nhất định.
Các mô-đun giúp chúng tôi tách và nhóm mã dựa trên chức năng. Ví dụ: bạn có thể có một mô-đun tên là math-ops.py
mà sẽ chỉ bao gồm mã liên quan đến hoạt động toán học.
Điều này giúp dễ đọc, sử dụng lại và hiểu mã hơn. Để sử dụng một mô-đun trong một phần khác của cơ sở mã của bạn, bạn phải nhập mô-đun đó để có quyền truy cập vào tất cả các chức năng được xác định trong mô-đun.
Trong Python, có nhiều mô-đun tích hợp sẵn như os
, math
, time
và như thế.
Đây là một ví dụ cho thấy cách sử dụng math
mô-đun:
import math
print(math.sqrt(25))
//5.0
Như bạn có thể thấy ở trên, điều đầu tiên chúng tôi làm trước khi sử dụng math
mô-đun là để nhập nó: import math
.
Sau đó, chúng tôi đã sử dụng mô-đun sqrt
phương thức trả về căn bậc hai của một số: math.sqrt(25)
.
Tất cả những gì chúng tôi cần để lấy căn bậc hai của 25 là hai dòng mã. Trong thực tế, các math
riêng mô-đun đã có hơn 3500 dòng mã.
Điều này sẽ giúp bạn hiểu module là gì và nó hoạt động như thế nào. Bạn cũng có thể tạo các mô-đun của riêng mình (chúng ta sẽ làm điều đó sau trong bài viết này).
làm gì callable
Có nghĩa là trong Lỗi “TypeError: đối tượng mô-đun không thể gọi được”?
Trong Python và hầu hết các ngôn ngữ lập trình, động từ “gọi” được liên kết với việc thực thi mã được viết trong một hàm hoặc phương thức.
Các thuật ngữ tương tự khác chủ yếu được sử dụng với cùng một hành động là “gọi” và “cháy”.
Đây là một hàm Python in “Smile!” đến bảng điều khiển:
def smile():
print("Smile!")
Nếu bạn chạy đoạn mã trên, sẽ không có gì được in ra bàn điều khiển vì chức năng smile
vẫn chưa được gọi, gọi hoặc kích hoạt.
Để thực thi hàm, chúng ta phải viết tên hàm theo sau dấu ngoặc đơn. Đó là:
def smile():
print("Smile!")
smile()
# Smile!
Không có dấu ngoặc đơn, hàm sẽ không được thực thi.
Bây giờ bạn nên hiểu những gì thuật ngữ callable
có nghĩa là trong thông báo lỗi: “Đối tượng TypeError: ‘module’ không thể gọi được”.
Lỗi “TypeError: đối tượng mô-đun không thể gọi được” có nghĩa là gì trong Python?
Hai phần trước đã giúp chúng tôi hiểu một số từ khóa được tìm thấy trong thông báo lỗi “TypeError: ‘module’ object is not callable”.
Nói một cách đơn giản, lỗi “TypeError: ‘module’ object is not callable” có nghĩa là các mô-đun không thể được gọi giống như các hàm hoặc phương thức.
Cách khắc phục lỗi “TypeError: module object is not callable” trong Python
Nói chung, có hai cách có thể gây ra lỗi “TypeError: ‘module’ object is not callable”: gọi một mô-đun bên thứ ba hoặc sẵn có và gọi một mô-đun thay cho một hàm.
Ví dụ lỗi #1
import math
print(math(25))
# TypeError: 'module' object is not callable
Trong ví dụ trên, chúng tôi gọi là math
mô-đun (bằng cách sử dụng dấu ngoặc đơn ()
) và chuyển 25 làm tham số với hy vọng thực hiện một phép toán cụ thể: math(25)
. Nhưng chúng tôi đã nhận lỗi.
Để khắc phục điều này, chúng ta có thể sử dụng bất kỳ phương pháp toán học nào được cung cấp bởi math
mô-đun. Chúng tôi sẽ sử dụng sqrt
phương pháp:
import math
print(math.sqrt(25))
# 5.0
Ví dụ lỗi #2
Đối với ví dụ này, tôi sẽ tạo một mô-đun để tính toán hai số:
# add.py
def add(a,b):
print(a+b)
Tên của mô-đun trên là add
có thể bắt nguồn từ tên tệp thêm.py.
Hãy nhập khẩu add()
chức năng từ add
mô-đun trong một tệp khác:
# main.py
import add
add(2,3)
# TypeError: 'module' object is not callable
Chắc hẳn bạn đang thắc mắc tại sao chúng tôi gặp lỗi mặc dù chúng tôi đã nhập mô-đun.
Chà, chúng tôi đã nhập mô-đun chứ không phải chức năng. Đó là lý do tại sao.
Để khắc phục điều này, bạn phải chỉ định tên của hàm trong khi nhập mô-đun:
from add import add
add(2,3)
# 5
Chúng tôi đang cụ thể: from add import add
. Điều này giống như nói, “từ mô-đun add.py, hãy nhập add
chức năng”.
Bây giờ bạn có thể sử dụng add()
chức năng trong chính.py tập tin.
Tóm lược
Trong bài viết này, chúng ta đã nói về lỗi “TypeError: ‘module’ object is not callable” trong Python.
Lỗi này chủ yếu xảy ra khi chúng ta gọi hoặc gọi một mô-đun như thể đó là một hàm hoặc phương thức.
Chúng tôi bắt đầu bằng cách thảo luận về mô-đun trong lập trình và ý nghĩa của việc gọi một hàm – điều này giúp chúng tôi hiểu nguyên nhân gây ra lỗi.
Sau đó, chúng tôi đã đưa ra một số ví dụ cho thấy lỗi được nêu ra và cách khắc phục.
Chúc mừng mã hóa!