Tôi có thể tìm ví dụ về các mẫu trong hệ sinh thái python ở đâu?
Cú pháp khớp mẫu được giới thiệu trong Python 3. 10 cho phép các kỹ thuật lập trình mới mạnh mẽ để ra quyết định trong ứng dụng Show
Nhà văn cao cấp, InfoWorld.
Mục lục
Cho xem nhiều hơn Python, với tất cả sức mạnh và sự phổ biến của nó, từ lâu đã thiếu một dạng kiểm soát luồng có trong các ngôn ngữ khác—một cách để lấy một giá trị và so khớp nó một cách tao nhã với một trong số các điều kiện có thể xảy ra. Trong C và C++, đó là cấu trúc from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()4; . ” Các cách truyền thống để làm điều này trong Python không đẹp. Một là viết một chuỗi from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()5 biểu thức. Cách khác là lưu trữ các giá trị để khớp dưới dạng các khóa trong từ điển, sau đó sử dụng các giá trị đó để thực hiện một hành động—e. g. , lưu trữ một hàm dưới dạng giá trị và sử dụng khóa hoặc một số biến khác làm đầu vào. Trong nhiều trường hợp, điều này hoạt động tốt, nhưng có thể cồng kềnh để xây dựng và bảo trì [ Theo dõi các video hướng dẫn về Python thông minh của Serdar Yegulalp để tìm hiểu các thủ thuật Python thông minh trong 5 phút hoặc ít hơn ]Sau khi nhiều đề xuất thêm một cú pháp giống như from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()4 vào Python không thành công, một đề xuất gần đây của nhà sáng tạo ngôn ngữ Python, Guido van Rossum và một số cộng tác viên khác đã được chấp nhận cho Python 3. 10. kết hợp mô hình cấu trúc. So khớp mẫu cấu trúc không chỉ giúp thực hiện khớp kiểu from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()4 đơn giản mà còn hỗ trợ nhiều trường hợp sử dụng hơn Giới thiệu khớp mẫu cấu trúc PythonKhớp mẫu cấu trúc giới thiệu câu lệnh from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()8 và cú pháp mẫu cho Python. Tuyên bố from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()8 tuân theo cùng một phác thảo cơ bản như from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()4. Nó nhận một đối tượng, kiểm tra đối tượng dựa trên một hoặc nhiều mẫu khớp và thực hiện hành động nếu tìm thấy khớp match command: case "quit": quit() case "reset": reset() case unknown_command: print (f"Unknown command '{unknown_command}') Mỗi câu lệnh from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()2 được theo sau bởi một mẫu để khớp với. Trong ví dụ trên, chúng tôi đang sử dụng các chuỗi đơn giản làm mục tiêu đối sánh của mình, nhưng có thể đối sánh phức tạp hơn Python thực hiện so khớp bằng cách đi qua danh sách các trường hợp từ trên xuống dưới. Trong lần khớp đầu tiên, Python thực thi các câu lệnh trong khối from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()2 tương ứng, sau đó bỏ qua đến cuối khối from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()4 và tiếp tục với phần còn lại của chương trình. Không có "sự thất bại" giữa các trường hợp, nhưng có thể thiết kế logic của bạn để xử lý nhiều trường hợp có thể xảy ra trong một khối from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()2. (Thêm về điều này sau. ) Cũng có thể chụp toàn bộ hoặc một phần trận đấu và sử dụng lại. Trong from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()6 trong ví dụ của chúng tôi ở trên, giá trị được "bắt giữ" trong biến from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()7 để chúng tôi có thể sử dụng lại nó Khớp với các biến bằng khớp mẫu cấu trúc PythonMột lưu ý quan trọng đáng được đưa lên đây. Nếu bạn liệt kê các tên biến trong một câu lệnh from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()2, điều đó không có nghĩa là phải so khớp nội dung của biến đã đặt tên. Các biến trong from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()2 được sử dụng để nắm bắt giá trị đang được so khớp Nếu bạn muốn khớp với nội dung của một biến, thì biến đó phải được thể hiện dưới dạng tên có dấu chấm, giống như một enum. Đây là một ví dụ from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset() Người ta không cần phải sử dụng enum; . Điều đó nói rằng, enums có xu hướng là cách quen thuộc và thành ngữ nhất để làm điều này trong Python So khớp với nhiều phần tử bằng khớp mẫu cấu trúc PythonChìa khóa để làm việc hiệu quả nhất với khớp mẫu không chỉ là sử dụng nó thay thế cho việc tra cứu từ điển. Đó là để mô tả cấu trúc của những gì bạn muốn khớp. Bằng cách này, bạn có thể thực hiện so khớp dựa trên số phần tử mà bạn đang so khớp hoặc sự kết hợp của chúng Đây là một ví dụ phức tạp hơn một chút. Tại đây, người dùng nhập lệnh, tùy chọn theo sau là tên tệp from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()0 Hãy xem xét các trường hợp này theo thứ tự
Các mẫu trong khớp mẫu cấu trúc PythonCác mẫu có thể là các giá trị đơn giản hoặc chúng có thể chứa logic khớp phức tạp hơn. Vài ví dụ
Khớp với các đối tượng bằng khớp mẫu cấu trúc PythonTính năng tiên tiến nhất của hệ thống khớp mẫu cấu trúc của Python là khả năng khớp với các đối tượng có thuộc tính cụ thể. Hãy xem xét một ứng dụng mà chúng tôi đang làm việc với một đối tượng có tên là from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()48, mà chúng tôi muốn chuyển đổi thành tệp from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()49 và trả về từ hàm from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()2 Trong mỗi trường hợp trên, chúng tôi đang tìm kiếm một loại đối tượng cụ thể, đôi khi có các thuộc tính cụ thể. Trường hợp đầu tiên khớp với đối tượng from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()50 với thuộc tính from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()51 được đặt thành from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()52. Trường hợp thứ hai phù hợp nếu from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()51 là from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()54 hoặc from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()55. Trường hợp thứ ba khớp với bất kỳ đối tượng nào thuộc loại from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()56, bất kể thuộc tính của nó. Và trường hợp cuối cùng là tất cả của chúng tôi nếu mọi thứ khác không thành công Bạn cũng có thể thực hiện chụp với đối tượng phù hợp from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()1 Sử dụng khớp mẫu cấu trúc Python hiệu quảChìa khóa với khớp mẫu cấu trúc Python là viết các kết quả phù hợp bao gồm các trường hợp cấu trúc mà bạn đang cố gắng so khớp. Các thử nghiệm đơn giản đối với các hằng số là tốt, nhưng nếu đó là tất cả những gì bạn đang làm, thì một tra cứu từ điển đơn giản có thể là một lựa chọn tốt hơn. Giá trị thực của việc so khớp mẫu cấu trúc là có thể so khớp với một mẫu đối tượng, không chỉ một đối tượng cụ thể hoặc thậm chí là một lựa chọn trong số chúng [ Cũng trên InfoWorld. 8 dấu hiệu bạn đang làm Python đúng]Một điều quan trọng khác cần ghi nhớ là thứ tự của các trận đấu. Những kết quả khớp nào bạn kiểm tra trước sẽ có tác động đến hiệu quả và độ chính xác của kết quả khớp của bạn nói chung. Hầu hết những người đã xây dựng chuỗi from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()5 dài sẽ nhận ra điều này, nhưng khớp mẫu yêu cầu bạn phải suy nghĩ về thứ tự cẩn thận hơn do sự phức tạp tiềm ẩn. Đặt các kết quả khớp cụ thể nhất của bạn trước và các kết quả khớp chung nhất cuối cùng Cuối cùng, nếu bạn gặp vấn đề có thể giải quyết bằng một chuỗi from enum import Enum class Command(Enum): QUIT = 0 RESET = 1 match command: case Command.QUIT: quit() case Command.RESET: reset()5 đơn giản hoặc tra cứu từ điển — hãy sử dụng cách đó để thay thế. Kết hợp mẫu là mạnh mẽ, nhưng không phổ biến. Sử dụng nó khi nó có ý nghĩa nhất cho một vấn đề Có liên quan
Serdar Yegulalp là một nhà văn cao cấp tại InfoWorld, tập trung vào học máy, container hóa, devops, hệ sinh thái Python và đánh giá định kỳ Những mẫu nào được sử dụng trong Python?Theo nguyên tắc GOF, có tổng cộng 11 mẫu hành vi trong Python. Chuỗi trách nhiệm, Chỉ huy, Thông dịch viên, Người lặp lại, Người hòa giải, Vật kỷ niệm, Người quan sát, Trạng thái, Chiến lược, Bản mẫu, Khách truy cập .
Có các mẫu thiết kế trong Python không?Có, Python có các mẫu thiết kế . Trên thực tế, các mẫu thiết kế chỉ đơn giản là cách để giải quyết vấn đề; . Bạn có thể triển khai hầu hết các mẫu thiết kế bằng nhiều ngôn ngữ lập trình.
Có bao nhiêu loại mẫu trong Python?18 Ví dụ về Chương trình Mẫu trong Python.
Biểu diễn mẫu trong Python là gì?Mẫu cho phép bạn tạo các loại và cách thể hiện khác nhau của một đối tượng bằng cách sử dụng cùng một mã cấu trúc . Bài chi tiết. Cách sử dụng trong Python. |