Module trong Python là gì?

Module (mô-đun) đề cập đến một file chứa những câu lệnh Python và các định nghĩa. Một file chứa code Python, ví dụ tinhoccuaemcom.py được gọi là module và tên của module sẽ là tinhoccuaemcom.

Module thường được sử dụng khi muốn chia chương trình lớn thành những file nhỏ hơn để dễ quản lý và tổ chức. Phổ biến nhất là những hàm Python hay phải sử dụng sẽ được định nghĩa trong một module và nhập vào Python thay vì sao chép định nghĩa trong những chương trình khác nhau. Nhờ thế, module cho phép tái sử dụng code.

Giờ thử tạo một module bằng cách nhập code sau vào file và lưu với tên tinhoccuaemcom.py.

#Ví dụ về module Python def them(p, q):     """Module này thêm 2 số     và trả về kết quả 
    by tinhoccuaem.com"""     ket_qua = p + q     return ket_qua

Ở đây, chúng ta định nghĩa hàm them() trong module tinhoccuaemcom. Hàm sẽ lấy vào 2 số và trả về tổng của chúng.

Làm sao để nhập module trong Python?

Chúng ta có thể nhập các định nghĩa từ module này vào module khác hoặc vào trình thông dịch trong Python. Chúng ta sử dụng từ khóa import để thực hiện việc này. Để nhập một module đã được định nghĩa, chúng ta nhập lệnh sau tại dấu nhắc của Python.

>>> import tinhoccuaemcom

Lệnh này không nhập tên của hàm được định nghĩa trong tinhoccuaem.com một cách trực tiếp trong bảng hiện tại, nó chỉ nhập tên của module mà thôi. Sử dụng tên module để truy cập vào hàm với toán tử (.). Ví dụ:

>>> tinhocuaemcom.them(4.5,5.5)
10.0

Hãy chắc chắn bạn đã gõ đúng tên module, tên hàm (phân biệt chữ hoa, chữ thường) nếu bạn nhận được thông báo sau: “ModuleNotFoundError: No module named…”

Có rất nhiều cách để nhập module như dưới đây:

Sử dụng lệnh import

Chúng ta có thể sử dụng lệnh import để nhập module và truy cập vào các định nghĩa bên trong nó, sử dụng toán tử . như mô tả bên trên. Đây là ví dụ:

# Lệnh import để nhập module có sẵn trong Python
# tinhoccuaem.com
import math
print("Giá trị của pi là: ", math.pi)

Khi chạy code Python trên ta được kết quả:

Giá tr ca pi là: 3.141592653589793

Nhập module và sửa tên khi nhập

# Nhập module và sửa tên nó
# tinhoccuaem.com
import math as m
print("Giá trị của pi là: ", m.pi)

Chúng ta đã đổi tên module math là m, điều này có thể giúp tiết kiệm thời gian trong một số trường hợp. Chú ý, việc đổi tên này chỉ áp dụng trong phạm vi lệnh, chứ không thực sự đổi tên module trong Lib. Khi đã đổi tên, bạn phải gõ đúng tên module, math lúc này không được công nhận trong phạm vi lệnh nữa, mà bạn phải dùng m mới đúng.

Lệnh from…import trong Python

Chúng ta có thể nhập một tên cụ thể từ module mà không cần nhập toàn bộ module như ví dụ dưới đây:

# Chỉ nhập pi từ module math
# tinhoccuaem.com
from math import pi
print("Giá trị của pi là: ",pi)

Code trên chỉ nhập thuộc tính pi từ module math. Trong trường hợp này không cần sử dụng toán tử “.”. Chúng ta có thể nhập nhiều thuộc tính của module như ví dụ dưới đây:

# Nhập nhiều thuộc tính từ module math
# tinhoccuaem.com
>>> from math import pi, e
>>> pi
3.141592653589793
>>> e
2.718281828459045

Nhập tất cả tên

Ta có thể nhập tất cả tên (các định nghĩa) từ một module sử dụng code sau:

# Nhập tất cả tên từ module math
# tinhoccuaem.com
form math import *
print("Giá trị của pi là: ",pi)

Chúng ta nhập tất cả các định nghĩa từ module math nên tất cả tên đều có thể nhìn thấy trong phạm vi này, ngoại trừ những tên bắt đầu bằng dấu gạch dưới _.

Nhập mọi thứ với dấu hoa thị * không phải là một thói quen lập trình tốt. Vì nó có thể dẫn đến những định nghĩa bị trùng lặp cho cùng một định danh và khiến cho việc đọc code trở nên khó khăn hơn.

Đường dẫn tìm kiếm module Python

Khi nhập module, Python sẽ tìm một vài nơi. Trình thông dịch tìm các module có sẵn, nếu không thấy nó sẽ vào danh sách các thư mục được định nghĩa trong sys.path. Thứ tự tìm kiếm sẽ là:

  • Thư mục hiện tại.
  • PYTHONPATH (một biến môi trường với danh sách thư mục).
  • Thư mục mặc định có vị trí phụ thuộc vào chọn lựa trong quá trình cài đặt.

Nhập lần lượt các lệnh sau để xem đường dẫn:

>>> import sys
>>> sys.path

Chúng ta có thể chỉnh sửa danh sách này để thêm các path tùy chỉnh theo mong muốn.

Nạp lại module

Trình thông dịch Python chỉ nhập một module trong một phiên. Điều này làm cho mọi thứ trở nên hiệu quả hơn. Dưới đây là ví dụ minh họa cho cách hoạt động này.

Bạn viết code sau trong file mới, đặt tên là module_1:

print("Code đã hoạt động") 

Giờ ta thử nhập module module_1 để xem sự hiệu quả của việc nhập module nhiều lần.

>>> import module_1
Code đã hot động
>>> import module_1
>>> import module_1
>>> import module_1
>>>

Bạn có thể thấy rằng code trên chỉ thực hiện một lần, nghĩa là module_1 chỉ được nhập 1 lần trong 1 phiên làm việc đó. Bây giờ nếu bạn sửa đổi code trong module_1bạn phải nạp lại nó. Để làm điều này bạn phải khởi động lại trình thông dịch, nhưng cách này có vẻ không ổn lắm.

Python cung cấp cách thông minh hơn để làm điều này. Bạn có thể sử dụng hàm reload() trong module imp để nạp lại module_1, như dưới đây:

>>> import module_1
Code đã hot động
>>> import module_1
>>> import module_1
>>> import module_1
>>> import imp
>>> imp.reload(module_1)
Code đã hot động
<module 'module_1' from 'C:/Users/tinhoccuaemcom/Python/Python36-32\\module_1.py'>

Hàm dir() trong Python

Hàm dir() trong Python được sử dụng để tìm ra các tên được định nghĩa trong một module. Ví dụ, bạn định nghĩa hàm them() trong ví dụ ban đầu.

Bạn nhập lần lượt các lệnh sau:

>>> import tinhoccuaemcom
>>> dir(tinhoccuaemcom)

Và kết quả trả về:

['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'them']
>>>

Kết quả đầu ra là danh sách các tên được định nghĩa trong module, được sắp xếp theo thứ tự (cùng với them). Tất cả các tên bắt đầu với dấu gạch dưới là các thuộc tính Python mặc định, được liên kết với module. Ví dụ, __name__ chứa tên module.

>>> import tinhoccuaemcom
>>> tinhoccuaemcom.__name__
'tinhoccuaemcom'
>>>

Tất cả các tên được xác định trong không gian tên (namespace) có thể được tìm thấy bằng cách sử dụng dir() mà không cần tham số nào.

>>> a=10
>>> b=15
>>> tinhoccuaem.com=20
>>> import math
>>> dir()
['tinhoccuaem.com', '__annotations__', '__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'b', 'math', 'tinhoccuaemcom', 'them', 'vidu']
>>>

Bài module này đến đây là tạm kết thúc ạ, xin cảm ơn các bạn đã theo dõi bài viết.

195 BÌNH LUẬN

  1. Very nice post. I just stumbled upon your weblog and wanted to say that I have truly enjoyed browsing your blog posts. After all I will be subscribing to your rss feed and I hope you write again soon!

  2. Wonderful work! That is the type of info that should be shared around the internet. Shame on Google for no longer positioning this put up upper! Come on over and consult with my website. Thank you =)

  3. It’а†s actually a great and useful piece of information. I am glad that you just shared this useful info with us. Please stay us up to date like this. Thanks for sharing.

  4. This very blog is definitely awesome as well as informative. I have found a bunch of handy stuff out of it. I ad love to visit it every once in a while. Cheers!

  5. XEvil – tốt nhất mã xác nhận giải quyết công cụ không giới hạn số giải pháp, mà không đề số giới hạn và cao nhất, chính xác!
    XEvil 5.0 hỗ trợ hơn 12.000 loại hình ảnh-mã xác nhận, bao gồm ReCaptcha, xác nhận Google Phím mã xác nhận, Microsoft mã xác nhận, Hơi mã xác nhận, SolveMedia, ReCaptcha-2 (VÂNG!!!) ReCaptcha-3 quá.

    1.) Linh hoạt: bạn có thể điều chỉnh logic cho cơ khí của bạn!
    2.) Dễ dàng: chỉ cần bắt đầu XEvil, nhấn phím 1 nút – và nó sẽ tự động nhận dễ dàng trực từ ứng dụng của bạn hoặc kịch bản
    3.) Nhanh: 0,01 giây cho đơn giản dễ dàng trực khoảng 20..40 giây cho ReCaptcha-2, và khoảng 5…8 giây cho ReCaptcha-3

    Bạn có thể sử dụng XEvil với bất kỳ SEO VỪA phần mềm, bất kỳ phân tích của mật khẩu-kiểm tra, bất kỳ tích ứng dụng, hoặc bất kỳ chỉnh kịch bản:
    XEvil hỗ trợ hầu hết nổi tiếng anti-dịch vụ mã xác nhận API: 2Captcha, RuCaptcha.Com, AntiGate.com (Anti-Captcha), DeathByCaptcha, etc.

    Quan tâm? Chỉ cần tìm kiếm ở Google “XEvil” để biết thêm thông tin
    Bạn đọc này – sau đó nó hoạt động! 🙂

    Liên quan, Lolitapag2845

    XEvil.Net

  6. XEvil – tốt nhất mã xác nhận giải quyết công cụ không giới hạn số giải pháp, mà không đề số giới hạn và cao nhất, chính xác!
    XEvil 5.0 hỗ trợ hơn 12.000 loại hình ảnh-mã xác nhận, bao gồm ReCaptcha, xác nhận Google Phím mã xác nhận, Microsoft mã xác nhận, Hơi mã xác nhận, SolveMedia, ReCaptcha-2 (VÂNG!!!) ReCaptcha-3 quá.

    1.) Linh hoạt: bạn có thể điều chỉnh logic cho cơ khí của bạn!
    2.) Dễ dàng: chỉ cần bắt đầu XEvil, nhấn phím 1 nút – và nó sẽ tự động nhận dễ dàng trực từ ứng dụng của bạn hoặc kịch bản
    3.) Nhanh: 0,01 giây cho đơn giản dễ dàng trực khoảng 20..40 giây cho ReCaptcha-2, và khoảng 5…8 giây cho ReCaptcha-3

    Bạn có thể sử dụng XEvil với bất kỳ SEO VỪA phần mềm, bất kỳ phân tích của mật khẩu-kiểm tra, bất kỳ tích ứng dụng, hoặc bất kỳ chỉnh kịch bản:
    XEvil hỗ trợ hầu hết nổi tiếng anti-dịch vụ mã xác nhận API: 2Captcha.com, RuCaptcha, AntiGate (Anti-Captcha.com), DeathByCaptcha, etc.

    Quan tâm? Chỉ cần tìm kiếm ở YouTube “XEvil” để biết thêm thông tin
    Bạn đọc này – sau đó nó hoạt động! ;)))

    Liên quan, Lolitapag7494

    XEvil.Net

  7. XEvil – tốt nhất mã xác nhận giải quyết công cụ không giới hạn số giải pháp, mà không đề số giới hạn và cao nhất, chính xác!
    XEvil 5.0 hỗ trợ hơn 12.000 loại hình ảnh-mã xác nhận, bao gồm ReCaptcha, xác nhận Google Phím mã xác nhận, Microsoft mã xác nhận, Hơi mã xác nhận, SolveMedia, ReCaptcha-2 (VÂNG!!!) ReCaptcha-3 quá.

    1.) Linh hoạt: bạn có thể điều chỉnh logic cho cơ khí của bạn!
    2.) Dễ dàng: chỉ cần bắt đầu XEvil, nhấn phím 1 nút – và nó sẽ tự động nhận dễ dàng trực từ ứng dụng của bạn hoặc kịch bản
    3.) Nhanh: 0,01 giây cho đơn giản dễ dàng trực khoảng 20..40 giây cho ReCaptcha-2, và khoảng 5…8 giây cho ReCaptcha-3

    Bạn có thể sử dụng XEvil với bất kỳ SEO VỪA phần mềm, bất kỳ phân tích của mật khẩu-kiểm tra, bất kỳ tích ứng dụng, hoặc bất kỳ chỉnh kịch bản:
    XEvil hỗ trợ hầu hết nổi tiếng anti-dịch vụ mã xác nhận API: 2Captcha, RuCaptcha.Com, AntiGate.com (Anti-Captcha), DeathByCaptcha, etc.

    Quan tâm? Chỉ cần tìm kiếm ở Google “XEvil” để biết thêm thông tin
    Bạn đọc này – sau đó nó hoạt động! 🙂

    Liên quan, Lolitopag4326

    XEvil.Net

  8. XEvil – tốt nhất mã xác nhận giải quyết công cụ không giới hạn số giải pháp, mà không đề số giới hạn và cao nhất, chính xác!
    XEvil 5.0 hỗ trợ hơn 12.000 loại hình ảnh-mã xác nhận, bao gồm ReCaptcha, xác nhận Google Phím mã xác nhận, Microsoft mã xác nhận, Hơi mã xác nhận, SolveMedia, ReCaptcha-2 (VÂNG!!!) ReCaptcha-3 quá.

    1.) Linh hoạt: bạn có thể điều chỉnh logic cho cơ khí của bạn!
    2.) Dễ dàng: chỉ cần bắt đầu XEvil, nhấn phím 1 nút – và nó sẽ tự động nhận dễ dàng trực từ ứng dụng của bạn hoặc kịch bản
    3.) Nhanh: 0,01 giây cho đơn giản dễ dàng trực khoảng 20..40 giây cho ReCaptcha-2, và khoảng 5…8 giây cho ReCaptcha-3

    Bạn có thể sử dụng XEvil với bất kỳ SEO VỪA phần mềm, bất kỳ phân tích của mật khẩu-kiểm tra, bất kỳ tích ứng dụng, hoặc bất kỳ chỉnh kịch bản:
    XEvil hỗ trợ hầu hết nổi tiếng anti-dịch vụ mã xác nhận API: 2Captcha, RuCaptcha, AntiGate (Anti-Captcha), DeathByCaptcha, etc.

    Quan tâm? Chỉ cần tìm kiếm ở Google “XEvil” để biết thêm thông tin
    Bạn đọc này – sau đó nó hoạt động! ;)))

    Liên quan, Lolitapag7618

    XEvil.Net

  9. XEvil – tốt nhất mã xác nhận giải quyết công cụ không giới hạn số giải pháp, mà không đề số giới hạn và cao nhất, chính xác!
    XEvil 5.0 hỗ trợ hơn 12.000 loại hình ảnh-mã xác nhận, bao gồm ReCaptcha, xác nhận Google Phím mã xác nhận, Microsoft mã xác nhận, Hơi mã xác nhận, SolveMedia, ReCaptcha-2 (VÂNG!!!) ReCaptcha-3 quá.

    1.) Linh hoạt: bạn có thể điều chỉnh logic cho cơ khí của bạn!
    2.) Dễ dàng: chỉ cần bắt đầu XEvil, nhấn phím 1 nút – và nó sẽ tự động nhận dễ dàng trực từ ứng dụng của bạn hoặc kịch bản
    3.) Nhanh: 0,01 giây cho đơn giản dễ dàng trực khoảng 20..40 giây cho ReCaptcha-2, và khoảng 5…8 giây cho ReCaptcha-3

    Bạn có thể sử dụng XEvil với bất kỳ SEO VỪA phần mềm, bất kỳ phân tích của mật khẩu-kiểm tra, bất kỳ tích ứng dụng, hoặc bất kỳ chỉnh kịch bản:
    XEvil hỗ trợ hầu hết nổi tiếng anti-dịch vụ mã xác nhận API: 2Captcha.com, RuCaptcha.Com, AntiGate (Anti-Captcha), DeathByCaptcha, etc.

    Quan tâm? Chỉ cần tìm kiếm ở Google “XEvil” để biết thêm thông tin
    Bạn đọc này – sau đó nó hoạt động! ;)))

    Liên quan, Lolitapag9426

    XEvil.Net

  10. Where I am from we don at get enough of this type of thing. Got to search around the entire globe for such relevant stuff. I appreciate your effort. How do I find your other articles?!

  11. You can definitely see your skills within the work you write. The arena hopes for even more passionate writers such as you who are not afraid to say how they believe. All the time go after your heart.

  12. I think other site proprietors should take this website as an model, very clean and great user friendly style and design, as well as the content. You are an expert in this topic!

  13. Wow, wonderful blog layout! How long have you been blogging for? you make blogging look easy. The overall look of your site is great, as well as the content!. Thanks For Your article about sex.

  14. Thank you for another magnificent post. Where else could anyone get that type of information in such an ideal way of writing? I have a presentation next week, and I am on the look for such info.

  15. Wow! This can be one particular of the most useful blogs We ave ever arrive across on this subject. Actually Wonderful. I am also a specialist in this topic therefore I can understand your hard work.

  16. So pleased to possess discovered this submit.. I appreciate you posting your perspective.. Recognize the value of the entry you available.. So pleased to get identified this post..

  17. Merely a smiling visitor here to share the love (:, btw great style and design. Justice is always violent to the party offending, for every man is innocent in his own eyes. by Daniel Defoe.

  18. You can definitely see your skills within the work you write. The sector hopes for more passionate writers such as you who are not afraid to say how they believe. Always go after your heart.

  19. You can certainly see your enthusiasm in the paintings you write. The world hopes for more passionate writers like you who aren at afraid to mention how they believe. Always go after your heart.

  20. Im no professional, but I believe you just made an excellent point. You obviously know what youre talking about, and I can actually get behind that. Thanks for staying so upfront and so honest.

  21. I think other web site proprietors should take this website as an model, very clean and magnificent user genial style and design, as well as the content. You are an expert in this topic!

  22. Very nice post and right to the point. I am not sure if this is actually the best place to ask but do you folks have any thoughts on where to get some professional writers? Thx

  23. Ia??a?аАа’аАТ‚аЂ ve recently started a site, the information you provide on this site has helped me tremendously. Thanks for all of your time & work.

  24. Thanks for another great article. Where else could anybody get that kind of info in such an ideal method of writing? I have a presentation subsequent week, and I am at the search for such info.

THOÁT KHỎI BÌNH LUẬN

Please enter your comment!
Please enter your name here