Trong quá trình viết code, chúng ta có thể sẽ cần đến một số mô-đun cụ thể. Thông thường, chúng ta hay nạp các mô-đun này vào dự án bằng 1 câu lệnh duy nhất.
Vậy thì sẽ thế nào nếu ta chỉ biết được tên của mô-đun này tại runtime? Chúng ta sẽ nạp mô-đun đó vào dự án như thế nào? Hàm __import__() được tích hợp sẵn của Python có thể giúp bạn giải quyết được các băn khoăn này, nó giúp nạp các mô-đun vào dự án tại runtime.
Cú pháp: __import__(name, globals, locals, fromlist, level)
Giải thích các tham số:
– name: Tên của mô-đun muốn nạp vào dự án
– globals và locals: Các tên diễn giải
– formlist: Các đối tượng hoặc mô-đun phụ được nạp vào (dưới dạng một danh sách)
– level: Chỉ định liệu rằng sẽ sử dụng nạp vào tuyệt đối hay nạp vào tương đối. Mặc định là -1 (tuyệt đối và tương đối).
Ví dụ 1. Nạp vào mô-đun numpy, điều này tương tự với việc thực thi câu lệnh “import numpy”
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#
# importing numpy module
# it is equivalent to "import numpy"
np = __import__('numpy', globals(), locals(), [], 0)
# array from numpy
a = np.array([1, 2, 3])
# prints the type
print(type(a))
Kết quả in ra là:
<class 'numpy.ndarray'>
Ví dụ 2. Cả hai câu lệnh sau đây đều có cùng một ý nghĩa, và thực hiện cùng một chức năng
# from numpy import complex as comp, array as arr
np = __import__('numpy', globals(), locals(), ['complex', 'array'], 0)
comp = np.complex
arr = np.array
Về việc ứng dụng hàm __import__()
Hàm __import__() không thực sự cần thiết trong lập trình Python. Việc trực tiếp sử dụng nó là rất hiếm thấy. Nhưng thi thoảng, khi cần nạp các mô-đun vào dự án tại runtime thì hàm này khá tiện dụng.
Nguồn và Tài liệu tiếng anh tham khảo:
Tài liệu từ cafedev:
- Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
- Ebook về python tại đây.
- Các series tự học lập trình khác
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!