Cú pháp phù hợp với 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 các ứng dụng.Nhà văn cao cấp, Infoworld |InfoWorld | Show
Hình ảnh Robynmac / Getty Mục lục Cho xem nhiều hơn Python, đối với tất cả sức mạnh và sự phổ biến của nó, từ lâu đã thiếu một hình thức kiểm soát dòng chảy được tìm thấy trong các ngôn ngữ khác, một cách để có giá trị và phù hợp với nó một cách tao nhã với một trong một số điều kiện có thể. Trong C và C ++, nó đã xây dựng Những cách truyền thống để làm điều này trong Python aren aren thanh lịch. Một là viết một chuỗi Sau nhiều đề xuất để thêm một cú pháp giống như ____ 5 vào Python đã thất bại, một đề xuất gần đây của người tạo ngôn ngữ Python Guido Van Rossum và một số người đóng góp khác đã được chấp nhận cho Python 3.10: khớp mẫu cấu trúc. Phù hợp với mô hình cấu trúc không chỉ làm cho nó có thể thực hiện các kết hợp kiểu Giới thiệu kết hợp mô hình cấu trúc PythonKết hợp mô hình kết cấu giới thiệu câu lệnh 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 để phù hợp với. Trong ví dụ trên, chúng tôi sử dụng các chuỗi đơn giản làm mục tiêu khớp của chúng tôi, nhưng các trận đấu phức tạp hơn là có thể. Python thực hiện các trận đấu bằng cách đi qua danh sách các trường hợp từ trên xuống dưới. Trong trận đấu đầu tiên, Python thực hiện 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ự sụp đổ nào giữa các trường hợp, nhưng nó có thể thiết kế logic của bạn để xử lý nhiều trường hợp có thể 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.) Nó cũng có thể nắm bắt tất cả hoặc một phần của trận đấu và sử dụng lại nó. 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 ghi lại 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ó. Kết hợp với các biến với mô hình cấu trúc Python phù hợpMột lưu ý quan trọng là đáng để đưa lên đây. Nếu bạn liệt kê các tên biến trong 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à một trận đấu nên được thực hiện với nội dung của biến được đặ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 để thu được giá trị đang được khớp. Nếu bạn muốn khớp với nội dung của một biến, biến đó phải được biểu thị dưới dạng tên 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() Một người không phải sử dụng một enum; Bất kỳ tên tài sản chấm chấm sẽ làm. Đ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. Kết hợp với nhiều yếu tố với mô hình cấu trúc Python phù hợpChìa khóa để làm việc hiệu quả nhất với kết hợp mẫu không chỉ là sử dụng nó để thay thế cho việc tra cứu từ điển. Nó để mô tả cấu trúc của những gì bạn muốn phù hợp. Bằng cách này, bạn có thể thực hiện các trận đấu dựa trên số lượng các yếu tố mà bạn phù hợp với hoặc kết hợp của chúng. Ở đây, một ví dụ phức tạp hơn một chút. Ở đây, người dùng gõ một lệnh, tùy chọn theo sau là tên tệp. command = input() match command.split(): case ["quit"]: quit() case ["load", filename]: load_from(filename) case ["save", filename]: save_to(filename) case _: print (f"Command '{command}' not understood") Hãy để kiểm tra các trường hợp này theo thứ tự:
Các mẫu trong kết hợp mô hình 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 phù hợp phức tạp hơn. Vài ví dụ:
Kết hợp với các đối tượng có mô hình cấu trúc Python phù hợpTí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 với các thuộc tính cụ thể. hàm số. match media_object: case Image(type="jpg"): # Return as-is return media_object case Image(type="png") | Image(type="gif"): return render_as(media_object, "jpg") case Video(): raise ValueError("Can't extract frames from video yet") case other_type: raise Exception(f"Media type {media_object} can't be handled yet") 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 với các thuộc tính cụ thể. Trường hợp đầu tiên khớp với đối tượng Bạn cũng có thể thực hiện bắt giữ với các đối tượng phù hợp: match media_object: case Image(type=media_type): print (f"Image of type {media_type}") Sử dụng mô hình cấu trúc python phù hợp hiệu quảChìa khóa với kết hợp mô hình cấu trúc Python là viết các trận đấu bao gồm các trường hợp cấu trúc mà bạn đang cố gắng phù hợp với. Các bài kiểm tra đơn giản chống lại các hằng số là tốt, nhưng nếu đó là tất cả những gì bạn làm, thì việc 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 khớp mẫu cấu trúc là có thể tạo ra các trận đấu với một mẫu của các đố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 của chúng. Một điều quan trọng khác cần ghi nhớ là thứ tự của các trận đấu. Điều phù hợp với bạn kiểm tra đầu tiên sẽ có tác động đến hiệu quả và độ chính xác của tổng thể phù hợp của bạn. Hầu hết những người đã xây dựng chuỗi Cuối cùng, nếu bạn có một vấn đề có thể được giải quyết bằng một chuỗi 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ỳ. Bản quyền © 2021 IDG Communications, Inc. Làm thế nào để bạn phù hợp với một mẫu chính xác ở đầu trong Python?RE.Match () Chức năng của RE trong Python sẽ tìm kiếm mẫu biểu thức thông thường và trả về lần xuất hiện đầu tiên. Phương thức khớp Python Regex chỉ kiểm tra một trận đấu chỉ ở đầu chuỗi. Vì vậy, nếu một trận đấu được tìm thấy trong dòng đầu tiên, nó sẽ trả về đối tượng khớp.. The Python RegEx Match method checks for a match only at the beginning of the string. So, if a match is found in the first line, it returns the match object.
Làm cách nào để khớp với một mẫu trong regex?Để phù hợp với một ký tự có ý nghĩa đặc biệt trong Regex, bạn cần sử dụng tiền tố trình tự thoát với dấu gạch chéo ngược (\).Ví dụ., \.diêm ".";Regex \+ khớp với "+";và regex \ (khớp "(". Bạn cũng cần sử dụng regex \\ để khớp với "\" (slash ngược).use a escape sequence prefix with a backslash ( \ ). E.g., \. matches "." ; regex \+ matches "+" ; and regex \( matches "(" . You also need to use regex \\ to match "\" (back-slash).
Lệnh khớp mẫu là gì?Kết hợp mẫu được sử dụng bởi các lệnh shell như lệnh LS, trong khi các biểu thức chính quy được sử dụng để tìm kiếm các chuỗi văn bản trong một tệp bằng cách sử dụng các lệnh, chẳng hạn như lệnh grep.ls command, whereas regular expressions are used to search for strings of text in a file by using commands, such as the grep command.
Trận đấu () làm gì trong Python?Match () Cả hai đều là các hàm của mô -đun RE trong Python.Các chức năng này rất hiệu quả và nhanh chóng để tìm kiếm trong chuỗi.Hàm tìm kiếm một số chuỗi con trong một chuỗi và trả về một đối tượng khớp nếu tìm thấy, nếu không nó sẽ trả về không.searches for some substring in a string and returns a match object if found, else it returns none. |