Mục lục[Ẩn giấu][Chỉ]
Bài giảng này sẽ xoay quanh các mô-đun và gói trong Python.
Chúng là một cách để tổ chức mã của bạn dưới dạng tệp và thực sự quan trọng nếu bạn có ý định xây dựng các ứng dụng web bằng Python
Modules
Mô-đun trong Python về cơ bản là một tệp với một số mã python mà chúng tôi sử dụng để tổ chức mã của chúng tôi thành tệp. Hãy nghĩ về nó giống như các khu vực trong siêu thị. Khi bạn đi đến siêu thị, có các khu vực khác nhau dành cho trái cây, rau củ, sản phẩm tẩy rửa, v.v. Bạn không thấy một khu vực có tất cả các sản phẩm.
Đó là khái niệm tương tự trong lập trình. Thay vì viết tất cả mã của chúng tôi với tất cả các hàm và lớp trong main.py, chúng tôi chia nhỏ mã của mình thành nhiều tệp. Mỗi tệp được coi là một mô-đun. Với điều này, mã của chúng tôi không chỉ được tổ chức và cấu trúc tốt hơn mà còn có khả năng sử dụng lại mã của mình. Hãy xem nó qua một ví dụ.
Hãy xác định hai hàm để chuyển đổi trọng lượng từ pound sang kilôgam và ngược lại.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Bây giờ, chúng ta có thể lấy hai chức năng này và đặt chúng trong một mô-đun riêng biệt được gọi là “bộ chuyển đổi”, và sau đó nó có thể được nhập vào bất kỳ chương trình nào cần các chức năng chuyển đổi này. Hãy để tôi chỉ cho bạn cách làm điều này.
Hãy mở bảng điều khiển dự án của chúng tôi và nhấp chuột phải vào dự án và thêm một tệp mới. Chúng tôi sẽ gọi tệp này là “Converters.py”.
Bây giờ sao chép mã từ tệp mặc định và dán vào “Converters.py”.
Với điều này, chúng tôi đã làm sạch mô-đun chính của mình và nó không bị cồng kềnh với các chức năng khác nhau. Khi chúng tôi viết nhiều hàm hơn với các lớp, chúng tôi đặt chúng vào các mô-đun tương ứng của chúng. Một mô-đun nên chứa tất cả các chức năng và lớp liên quan. Bây giờ, chúng tôi muốn nhập mô-đun bộ chuyển đổi vào mô-đun ứng dụng của chúng tôi. Để làm điều này, hãy viết import converters
ở trên cùng không có phần mở rộng “.py”.
Chúng ta có thể truy cập các thành viên của một mô-đun bằng cách sử dụng toán tử dấu chấm tương tự như các phương thức.
Hãy chuyển đổi 70 kg thành pound:
Ngoài ra còn có một cú pháp khác để nhập mô-đun. Thay vì nhập toàn bộ mô-đun, chúng ta có thể nhập các chức năng cụ thể từ mô-đun đó. Chúng ta có thể gõ from Converters import
và nhấn “control + space để hiển thị danh sách các chức năng khả dụng. Với điều này, chúng ta có thể gọi trực tiếp hàm này.
Tập thể dục
Đây là bài tập của bạn.
Điều này liên quan đến một bài tập trong bài giảng mà chúng ta đã thảo luận “cho vòng lặp”Nơi chúng tôi đã viết một chương trình để tìm ra con số lớn nhất từ danh sách
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
Mã này hiện không có tổ chức. Chúng tôi không có bất kỳ chức năng hoặc mô-đun nào và chương trình được viết trong một tệp duy nhất. Điều đó là ổn đối với các chương trình nhỏ nhưng khi chương trình của bạn phát triển, bạn cần tổ chức đúng mã của mình thành các lớp và mô-đun. Do đó, như một phần của bài tập này, tôi muốn bạn viết một hàm, gọi nó là find_max
. Hàm này sẽ lấy một danh sách và trả về số lớn nhất trong danh sách đó. Sau đó, hãy tiếp tục và đặt chức năng này trong một mô-đun riêng biệt, giải nén nó từ đây và đặt nó vào một mô-đun có tên là utils
. Mô-đun này nên chứa một loạt các chức năng tiện ích. Nhập utils
mô-đun vào mô-đun hiện tại và gọi find_max
hàm số. Cuối cùng, lấy kết quả và in nó trên thiết bị đầu cuối.
Bài tập này có một chút thách thức nhưng dễ dàng thực hiện được.
Dung dịch
Bắt đầu bằng cách xác định một chức năng find_max
và thêm một tham số được gọi là số. Bên trong hàm này, hãy viết thuật toán tìm số lớn nhất trong danh sách.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Lưu mã này trong tệp “utils.py” dưới dạng mô-đun.
Quay lại chương trình chính của chúng ta, chỉ cần nhập mô-đun bằng một trong hai cú pháp và chỉ cần thực thi logic.
Một điều, tôi cần chú ý đến bạn là max
. Lý do cho điều đó là max
là một hàm tích hợp sẵn trong Python và chúng tôi đang định nghĩa lại nó. Vì vậy, đây là một cảnh báo từ Trình biên dịch Python mà chúng ta không thể sử dụng max làm hàm tích hợp của nó nữa.
Mô-đun tích hợp trong Python
Python đi kèm với một thư viện tiêu chuẩn chứa một số mô-đun cho các tác vụ phổ biến như gửi email, làm việc với ngày và giờ, tạo các giá trị và mật khẩu ngẫu nhiên, v.v. Có rất nhiều mô-đun đã được tích hợp sẵn trong Python, có nghĩa là đã có rất nhiều chức năng mà chúng ta có thể sử dụng lại. Bạn có thể tìm thấy các mô-đun này tại đây.
Gói
Về cơ bản, các gói là một cách khác để tổ chức mã của chúng tôi trên đầu các mô-đun. Một dự án thực sự có thể chứa hàng trăm hoặc thậm chí hàng nghìn mô-đun và theo thời gian, thư mục của chúng ta sẽ bị cồng kềnh với rất nhiều tệp. Do đó, một cách tiếp cận tốt hơn là tổ chức các mô-đun có liên quan bên trong một gói làm cho gói trở thành một vùng chứa cho nhiều mô-đun.
Một thư mục mới được thêm vào dự án và tất cả các mô-đun liên quan được thêm vào thư mục đó. Ví dụ, hãy nghĩ đến một trung tâm mua sắm. Có các khu vực khác nhau dành cho nam giới, phụ nữ và quần áo trẻ em trong một trung tâm mua sắm giống như các gói hàng. Mỗi khu vực có các khu vực khác nhau cho các loại sản phẩm khác nhau như giày dép, áo phông và áo khoác. Hãy coi đây là những mô-đun.
Hãy xem, cách tạo và sử dụng các gói trong Python.
Đầu tiên, thêm một thư mục mới từ bảng điều khiển dự án. Hãy gọi nó là “Thương mại điện tử”. Gói này sẽ chứa tất cả các mô-đun liên quan đến một ứng dụng Thương mại điện tử.
Nó vẫn là một thư mục trống và để chuyển đổi nó thành một gói, chúng ta cần tạo một tệp đặc biệt trong đó. Thêm một tệp python mới trong thư mục này và đặt tên cho tệp đó là “__init__”. Đó là một quy ước đặc biệt trong Python và khi trình thông dịch Python nhìn thấy một tệp có tên này trong một thư mục, nó sẽ coi thư mục này như một gói.
Chúng tôi cũng có một phương pháp thay thế và ngắn gọn để tạo một gói. Chỉ cần nhấp chuột phải vào bảng điều khiển dự án và tạo một gói Python từ danh sách. Đặt tên cho nó là “Thương mại điện tử” và thế là xong. Nó sẽ tự động tạo một thư mục có tệp Python có tên “__init__”.
Bây giờ, hãy tạo một mô-đun trong gói và đặt tên cho nó là “shipping”. Trong mô-đun này, hãy tạo một hàm đơn giản để tính toán chi phí vận chuyển.
def calc_shipping():
print("calc_shipping")
Để truy cập chức năng này trong mô-đun chính của chúng tôi, chúng tôi phải truy cập nó thông qua gói thương mại điện tử. Một lần nữa, chúng tôi có hai phương pháp để nhập mô-đun này.
Trong phương pháp đầu tiên, chúng ta có thể nhập toàn bộ mô-đun và sau đó gọi một hàm một cách độc lập như sau:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
Tuy nhiên, với cách tiếp cận này, việc gọi một trong các chức năng tới mô-đun này yêu cầu tiền tố nó bằng eCommerce.shipping.
Điều đó rất dài dòng. Vì vậy, khi làm việc với các gói, chúng tôi thường sử dụng cách tiếp cận thứ hai và sử dụng from
tuyên bố.
from eCommerce.shipping import calc_shipping
calc_shipping()
Nếu bạn có nhiều chức năng trong một mô-đun, bạn có thể nhập tất cả chúng vào một dòng duy nhất bằng cách sử dụng dấu phẩy giữa chúng. Giả sử có một chức năng khác để tính thuế trong mô-đun vận chuyển của chúng tôi. Điều đó sẽ được nhập như thế này:
from eCommerce.shipping import calc_shipping, calc_tax
Bạn cũng có thể nhập các mô-đun riêng lẻ và để lại các chức năng sẽ được gọi ở giai đoạn sau của chương trình. Hãy nhập vận chuyển mô-đun và sau đó sử dụng toán tử dấu chấm để gọi hàm calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Gói (lại!
Gói và Mô-đun cực kỳ quan trọng trong Python. Đặc biệt, khi bạn muốn làm việc với một khuôn khổ như Django được sử dụng để xây dựng Ứng dụng web với Python. Chúng tôi sẽ xem xét Django trong một khóa học Python khác.
Đây là bài giảng thông thường cuối cùng trong loạt bài này. Bài giảng tiếp theo sẽ khác với định dạng thông thường của chúng ta và chúng ta sẽ tìm hiểu một số trường hợp sử dụng quan trọng trong Python. Điều đó sẽ đánh dấu sự kết thúc của loạt bài này và chúng ta sẽ chuyển sang loạt bài Python tiếp theo của mình. Hãy theo dõi điều đó.
Bình luận