Cách nhóm các hàm trong python

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về phương thức groups[] trong Biểu thức chính quy trong Python. Chúng ta sẽ tìm hiểu biểu thức chính quy là gì và cách chúng ta có thể sử dụng chúng với sự trợ giúp của một ví dụ

Giới thiệu về biểu thức chính quy

Một biểu thức chính quy [RegEx] có thể được gọi là chuỗi văn bản đặc biệt để mô tả một mẫu tìm kiếm. Nó cho phép kiểm tra một loạt các ký tự cho phù hợp. Vì chúng tôi muốn sử dụng phương thức nhóm [] trong Biểu thức chính quy ở đây, do đó, chúng tôi cần nhập mô-đun cần thiết. Python đã có một mô-đun để làm việc với các biểu thức chính quy, đó là mô-đun re. Sau đây là một ví dụ để hiểu khái niệm này

import re

search = '^n....h$'     # it shows that word should be 6 letters
test1 = "nimish"
test2 = "nimisH"        # will not match as last letter is capital
result1 = re.match[search, test1]
result2 = re.match[search, test2]

if result1:
    print["Search successful"]
else:
    print["Search unsuccessful"]
if result2:
    print["Search successful"]
else:
    print["Search unsuccessful"]

đầu ra

Search successful
Search unsuccessful

phương thức nhóm [] trong Biểu thức chính quy trong Python

Phương thức groups[] trả về một bộ chứa tất cả các nhóm con của đối sánh, do đó, nó có thể trả về bất kỳ số lượng nhóm nào trong một mẫu. Vì có thể có một điều kiện trong đó không có nhóm nào theo mẫu nên nó trả về giá trị mặc định, tôi. đ, Không có. Không giống như các nhóm [], phương thức nhóm [] trả về toàn bộ kết quả khớp

Mã số

Sau đây là đoạn mã để hiểu khái niệm về phương thức groups[]

import re

m = re.match[r"[\d+]\.[\d+]", "13.2370"]
print[m.groups[]]
print[m.group[]]

đầu ra

['13', '2370']
13.2370

Giải trình

  • Phương thức match[] cố gắng khớp mẫu biểu thức chính quy với chuỗi đã nhập
  • Do đó, phương thức groups[] trả về bộ dữ liệu của các nhóm phù hợp
  • Phương thức nhóm trả về toàn bộ nhóm tại một thời điểm

Tôi hy vọng bạn có thể hiểu chủ đề này. Vui lòng bình luận về bất kỳ câu hỏi nào của bạn hoặc bất kỳ chủ đề nào khác mà bạn muốn biết về

Chỉ nên có một — và tốt nhất là chỉ một — cách rõ ràng để làm điều đó”, Zen of Python nói. Tuy nhiên, có những lĩnh vực mà ngay cả những lập trình viên dày dạn kinh nghiệm cũng tranh luận về cách làm đúng hay sai.

Một trong những lĩnh vực này là các lớp Python. Mượn từ Lập trình hướng đối tượng, chúng là những cấu trúc khá đẹp mắt mà bạn có thể mở rộng và sửa đổi khi viết mã

Vấn đề lớn là các lớp có thể làm cho mã của bạn phức tạp hơn mức cần thiết, khiến nó khó đọc và khó bảo trì hơn. Vậy khi nào bạn nên sử dụng các lớp và khi nào bạn nên sử dụng các hàm tiêu chuẩn để thay thế?

Nhận vé của bạn cho TNW Valencia vào tháng Ba

Trái tim của công nghệ đang đến với trái tim của Địa Trung Hải

Tham gia ngay

Câu chuyện này đi sâu hơn vào vấn đề. Vì vậy, nếu đang vội, bạn có thể bỏ qua hai phần sau và cuộn ngay xuống phần Khi nào nên sử dụng lớp học và Khi nào lớp học là một ý tưởng tồi

các lớp Python. những điều rất cơ bản

Các lớp là các đối tượng cho phép bạn nhóm các cấu trúc và thủ tục dữ liệu ở một nơi. Ví dụ: hãy tưởng tượng bạn đang viết một đoạn mã để sắp xếp hàng tồn kho của một cửa hàng quần áo

Bạn có thể tạo một lớp lấy từng mặt hàng quần áo trong cửa hàng và lưu trữ số lượng chính như loại quần áo, màu sắc và kích cỡ của nó. Chúng tôi cũng sẽ thêm một tùy chọn để thêm giá

Bây giờ, chúng ta có thể định nghĩa các thể hiện khác nhau của lớp và sắp xếp chúng ngăn nắp

Chúng tôi sẽ thêm hai dòng này mà không cần thụt lề, sau định nghĩa của lớp. Mã này sẽ chạy, nhưng nó không hoạt động nhiều lắm. Chúng ta có thể thêm một phương thức để đặt giá trực tiếp bên dưới hàm __init__, trong định nghĩa lớp

Chúng tôi cũng có thể thêm một số quy trình để cho chúng tôi biết giá hoặc để quảng cáo một mặt hàng bằng cách giảm giá

Bây giờ, chúng ta có thể thêm một số lệnh gọi các phương thức của mình sau các dòng mà chúng ta đã khởi tạo các thể hiện của lớp

Nếu bạn cần thêm nhiều thói quen hơn, bạn có thể đặt chúng trong định nghĩa lớp

Phần thú vị nhất của tất cả những điều này là bạn có thể thêm và xóa bao nhiêu đối tượng tùy thích. Xóa một thuộc tính diễn ra như vậy

Và nếu bạn muốn xóa toàn bộ đối tượng thì bạn làm như vậy

Tất cả điều này là gọn gàng, đơn giản và có thể mở rộng. Hãy thử thực hiện triển khai này với các chức năng tiêu chuẩn và có thể bạn sẽ gặp nhiều khó khăn hơn khi xử lý nó

Từ quan điểm lý thuyết, có nhiều lý do hơn khiến các lớp Python là một khái niệm đẹp trong nhiều tình huống

Các lớp học là những khái niệm mạnh mẽ khi được sử dụng đúng. Ảnh của Muhannad Ajjan trên Bapt

Các lớp học thật tuyệt vời - về lý thuyết

Tách mối quan tâm. giao cho mỗi lớp công việc riêng của mình

Nếu bạn đã tham dự các bài giảng về khoa học máy tính, rất có thể bạn đã tình cờ biết được nguyên tắc “tách mối quan tâm”. Về cơ bản, điều đó có nghĩa là bạn chia chương trình của mình thành các phần khác nhau xử lý các phần thông tin khác nhau

Các lớp học, về bản chất, cho phép bạn tuân theo nguyên tắc đó. Nói cách khác, khi bạn bắt đầu viết một chương trình và bạn đang nghĩ về các lớp, bạn có thể đang xây dựng một kiến ​​trúc tốt vì bạn đang đảm bảo rằng mỗi vấn đề đều có vị trí riêng của nó.

tách rời. làm cho bảo trì dễ dàng hơn

Suy nghĩ trong các lớp không chỉ giúp bạn tách biệt các tính năng mà còn độc lập với nhau. Điều này không chỉ giữ cho mọi thứ gọn gàng và ngăn nắp;

Giả sử bạn đã tìm thấy một lỗi trong một lớp học. bạn có thể sửa lỗi đó mà không phải lo lắng về các lớp khác vì không có kết nối giữa chúng. Tương tự như vậy, bạn có thể thêm các tính năng mới mà không sợ rằng bạn sẽ bị rối với các phần khác của phần mềm

thực hiện ẩn. xác định những gì lập trình viên có thể và không thể sử dụng

Bằng cách sử dụng các lớp, bạn đảm bảo rằng các phương thức chỉ được sử dụng trên một bộ dữ liệu. Điều này làm tăng tính bảo mật của mã vì bạn ít có khả năng sử dụng các hàm không thuộc về chúng

đóng gói. thay đổi mã nhưng không thay đổi trải nghiệm người dùng

Lưu trữ cấu trúc dữ liệu và phương thức cùng nhau còn được gọi là đóng gói. Vì tất cả những điều này được ẩn khỏi người dùng cuối, điều này cho phép bạn sửa đổi cấu trúc dữ liệu và phương pháp mà không ảnh hưởng đến trải nghiệm người dùng

Ví dụ: bạn có thể phải xây dựng một phương thức khá phức tạp. Ưu điểm của đóng gói là người dùng không cần hiểu bất kỳ sự phức tạp nào vì họ có thể sử dụng nó như một hộp đen

Hoàn toàn có thể xây dựng các hàm hộp đen mà không cần sử dụng các lớp. Tuy nhiên, với các lớp, loại chức năng này thực tế được đảm bảo

Di sản. viết DNA của một cấu trúc dữ liệu

Với các lớp, bạn chỉ phải xác định cấu trúc dữ liệu một lần. Khi bạn định nghĩa một thể hiện của một lớp, thể hiện đó sẽ tự động kế thừa cấu trúc đã cho

Ngoài ra, tính kế thừa giúp dễ dàng xóa hoặc sửa đổi các phần của một thể hiện hoặc toàn bộ lớp. Điều này làm cho toàn bộ cấu trúc linh hoạt hơn

Khi nào nên sử dụng các lớp

Với rất nhiều ưu điểm, việc sử dụng một lớp cho mọi thứ và mọi thứ có thể rất hấp dẫn. Tuy nhiên, trong thực tế, có những tình huống mà việc sử dụng các lớp có ý nghĩa hoàn hảo, và những tình huống khác thì không.

Kết hợp dữ liệu và phương thức với nhau

Theo nguyên tắc thông thường, khi bạn có một tập hợp dữ liệu với cấu trúc cụ thể và bạn muốn thực hiện các phương thức cụ thể trên đó, hãy sử dụng một lớp. Tuy nhiên, điều đó chỉ hợp lệ nếu bạn sử dụng nhiều cấu trúc dữ liệu trong mã của mình

Nếu toàn bộ mã của bạn sẽ không bao giờ xử lý nhiều hơn một cấu trúc. Nếu bạn chỉ có một cấu trúc dữ liệu, nó thực sự phụ thuộc vào vấn đề hiện tại. Bạn có thể có ý tưởng sơ bộ bằng cách phác thảo chương trình của mình có hoặc không có lớp;

Cẩn thận với các biến toàn cục

Một nguyên tắc nhỏ khác là   điều này. Nếu bạn muốn sử dụng các biến toàn cục để truy cập dữ liệu, có thể dễ dàng hơn để xác định một lớp và xây dựng một phương thức để truy cập từng phần dữ liệu.

Cách dễ dàng hơn việc xác định một lớp mới

Khi các lớp học là một ý tưởng tồi

Sử dụng heapq cho đống

Một đống, không giống như ngăn xếp, là một cách lưu trữ dữ liệu linh hoạt hơn vì nó có kích thước bộ nhớ không giới hạn và cho phép bạn thay đổi kích thước các biến. Mặt khác, việc truy cập các biến chậm hơn với một đống và bạn phải tự quản lý bộ nhớ.
Nếu heap phù hợp với mục đích của bạn hơn, thì bạn không cần xác định lớp. Thuật toán heapq hoặc heap queue sẵn có của Python sẽ thực hiện công việc cho bạn.

Cân nhắc sử dụng funcools. một phần[]

Bạn có thể muốn sử dụng một lớp vì bạn liên tục gọi một hàm có cùng đối số. Trong hầu hết các trường hợp, tốt hơn hết là sử dụng funcools. thay vào đó một phần[]

Nó khá đơn giản để thực hiện. Giả sử bạn có một hàm nhân hai giá trị, nhưng bạn tiếp tục sử dụng nó để nhân đôi giá trị. Để tránh mã trùng lặp, bạn có thể viết cái này

Cách dễ dàng hơn việc xác định một lớp mới

Lớp học “Vì tương lai”

Một số lập trình viên bị ám ảnh bởi các lớp học vì chúng rất linh hoạt và có thể mở rộng. Đó là lý do tại sao, ngay cả tại các công ty có uy tín và các nhà phát triển dày dặn kinh nghiệm, bạn vẫn có thể gặp phải những đoạn mã như thế này

Ý tưởng đằng sau nó là, khi mã phát triển, lớp này có thể cần thiết cho bất kỳ cấu trúc dữ liệu mới nào và các phương thức đi kèm với nó. Nhưng đây không phải là một thói quen tốt

Đoán xem ba dòng mã này làm gì? . Và những dòng đó không thực sự khó viết mã. Nếu bạn nghĩ rằng bạn sẽ cần một lớp học khác sau này và bạn thực sự nghĩ rằng bạn có thể quên điều đó trong tương lai, bạn luôn có thể để lại nhận xét như thế này

Điểm mấu chốt. Các lớp Python là một con dao hai lưỡi

Các lớp học chắc chắn là một khái niệm mạnh mẽ. Được sử dụng đúng cách, chúng có thể làm cho mã của bạn gọn gàng hơn, dễ đọc hơn và dễ bảo trì

Nhưng chúng   bị lạm dụng rất nhiều. Và khi sử dụng sai, chúng có thể làm ô nhiễm mã của bạn cho đến khi bạn không hiểu gì cả.

Đôi khi, đặc biệt là trong các chương trình đơn giản hơn, bạn có thể sử dụng một lớp hoặc một loạt các hàm chung và mã sẽ rất giống nhau về độ dài và độ phức tạp của nó. Khi các chương trình trở nên phức tạp hơn, sự khác biệt càng nổi bật hơn

Theo nghĩa này, Thiền của Python đã giữ nguyên phán quyết của nó. hầu hết thời gian, thực sự chỉ có một cách tốt để làm mọi việc, cho dù đó là có lớp học hay không. Tuy nhiên, không phải lúc nào nó cũng hoàn toàn rõ ràng. Cái khó là nhận ra cách nào là tốt

Chủ Đề