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 # Quantrimang.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 # Quantrimang.com >>> from math import pi, e >>> pi 3.141592653589793 >>> e 2.718281828459045
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 # Quantrimang.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.
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à:
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.
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 đã hoạt độ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_1
bạ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 đã hoạt động >>> import module_1 >>> import module_1 >>> import module_1 >>> import imp >>> imp.reload(module_1) Code đã hoạt động <module 'module_1' from 'C:/Users/Quantrimangcom/Python/Python36-32\\module_1.py'>
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 Quantrimangcom >>> dir(Quantrimangcom)
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 Quantrimangcom >>> Quantrimangcom.__name__ 'Quantrimangcom' >>>
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 >>> quantrimangcom=20 >>> import math >>> dir() ['Quantrimangcom', '__annotations__', '__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'b', 'math', 'quantrimangcom', 'them', 'vidu'] >>>
» Tin mới nhất:
» Các tin khác: