Hướng dẫn how do you write a match statement in python? - làm thế nào để bạn viết một câu lệnh khớp trong python?

Ngôn ngữ lập trình Python đang được phát triển liên tục, với các tính năng và chức năng mới được thêm vào mỗi bản cập nhật. Python 3.10 được phát hành vào giữa năm 2021 và đi kèm với kết hợp mô hình cấu trúc, còn được gọi là một tuyên bố match case. Đây là tính năng mới quan trọng nhất của Python 3.10; Chức năng mới cho phép bạn dễ dàng kiểm soát luồng chương trình của mình bằng cách thực hiện một số phần của mã nếu điều kiện (hoặc trường hợp) được đáp ứng.

Trong bài viết này, chúng tôi sẽ cho bạn biết mọi thứ bạn cần biết về câu lệnh CASE trong Python, điều này sẽ cho phép bạn có quyền kiểm soát chi tiết về cách các chương trình của bạn thực hiện.

Một từ về phiên bản Python

Trước khi chúng tôi bắt đầu, hãy để các phiên bản Python địa chỉ đầu tiên và kiến ​​thức Python cơ bản.

Nếu bạn đang chạy một phiên bản Python cũ hơn, chúng tôi muốn khuyến khích bạn nâng cấp lên Python 3.10 để tận dụng tối đa bài viết này. Điều này sẽ cho phép bạn sử dụng đoạn mã ở đây và có thể sửa đổi chúng cho phù hợp với các dự án của riêng bạn.

Kiểm tra trang tải xuống Python chính thức để truy cập vào các phiên bản gần đây nhất. Nếu bạn muốn có thông tin chi tiết hơn về các câu lệnh match case, có ba đề xuất tăng cường Python mới (PEPS). & NBSP; Một nơi tốt để bắt đầu là PEP 636, đó là một hướng dẫn để kết hợp mẫu. Nếu bạn muốn đi sâu vào cỏ dại, PEP 634 bao gồm các đặc điểm kỹ thuật và PEP 635 mô tả động lực và lý do cho tính năng mới này.

Đối với những người mới sử dụng Python, chúng tôi có hai bài viết giải thích một số thuật ngữ quan trọng mà chúng tôi sẽ sử dụng trong bài viết này. Kiểm tra Phần 1 tại đây và Phần 2 tại đây. & NBSP; Chúng tôi cũng có các khóa học tương tác để giúp đẩy nhanh việc học của bạn. Python Basics là một điểm khởi đầu tốt và các thuật toán tích hợp trong Python sẽ dạy cho bạn các công cụ để viết các ứng dụng được tối ưu hóa ngay lập tức.

Được rồi, bây giờ hãy để Lừa đào sâu vào tuyên bố Python match case.

Một triển khai cơ bản của các tuyên bố match case trông rất giống với một tuyên bố ____99 trong Python. Nếu bạn cần bồi dưỡng, chúng tôi có một bài viết về kiểm tra nhiều điều kiện trong Python với một câu lệnh IF.

Đối với những người bạn có một số nền tảng trong các ngôn ngữ khác như Java hoặc C, match case có thể trông giống như một tuyên bố

>>> def file_handler_v1(command):
...     match command.split():
...         case ['show']:
...             print('List all files and directories: ')
...             # code to list files
...         case ['remove', *files]:
...             print('Removing files: {}'.format(files))
...             # code to remove files
...         case _:
...             print('Command not recognized')
1. Các câu lệnh chuyển đổi có chức năng tương tự như các câu lệnh IF-Else, nhưng chúng yêu cầu ít mã hơn khi xác định các trường hợp.

Tuyên bố match case trong Python mạnh hơn và cho phép khớp mẫu phức tạp hơn. Hãy bắt đầu bằng cách xem xét một ví dụ cơ bản để chứng minh cú pháp:more powerful and allows for more complicated pattern matching. Let’s start by looking at a basic example to demonstrate the syntax:

>>> command = 'Hello, World!'
>>> match command:
...     case 'Hello, World!':
...         print('Hello to you too!')
...     case 'Goodbye, World!':
...         print('See you later')
...     case other:
...         print('No match found')

Hello to you too!

Ở đây chúng tôi xác định một biến

>>> def file_handler_v1(command):
...     match command.split():
...         case ['show']:
...             print('List all files and directories: ')
...             # code to list files
...         case ['remove', *files]:
...             print('Removing files: {}'.format(files))
...             # code to remove files
...         case _:
...             print('Command not recognized')
3 và sử dụng từ khóa khớp với
>>> def file_handler_v1(command):
...     match command.split():
...         case ['show']:
...             print('List all files and directories: ')
...             # code to list files
...         case ['remove', *files]:
...             print('Removing files: {}'.format(files))
...             # code to remove files
...         case _:
...             print('Command not recognized')
4 nó cho các trường hợp được xác định sau mỗi từ khóa
>>> def file_handler_v1(command):
...     match command.split():
...         case ['show']:
...             print('List all files and directories: ')
...             # code to list files
...         case ['remove', *files]:
...             print('Removing files: {}'.format(files))
...             # code to remove files
...         case _:
...             print('Command not recognized')
5. & NBSP; Như một lưu ý phụ,
>>> def file_handler_v1(command):
...     match command.split():
...         case ['show']:
...             print('List all files and directories: ')
...             # code to list files
...         case ['remove', *files]:
...             print('Removing files: {}'.format(files))
...             # code to remove files
...         case _:
...             print('Command not recognized')
4 và
>>> def file_handler_v1(command):
...     match command.split():
...         case ['show']:
...             print('List all files and directories: ')
...             # code to list files
...         case ['remove', *files]:
...             print('Removing files: {}'.format(files))
...             # code to remove files
...         case _:
...             print('Command not recognized')
5 được mô tả tốt hơn là các từ khóa mềm mềm, có nghĩa là chúng chỉ hoạt động như các từ khóa trong một câu lệnh trường hợp khớp. & NBSP; Bạn có thể tiếp tục sử dụng các trường hợp của Match Match hoặc Case Case như một tên biến trong các phần khác trong chương trình của bạn. & NBSP;
>>> def file_handler_v1(command):
...     match command.split():
...         case ['show']:
...             print('List all files and directories: ')
...             # code to list files
...         case ['remove', *files]:
...             print('Removing files: {}'.format(files))
...             # code to remove files
...         case _:
...             print('Command not recognized')
8 tương đương với
>>> def file_handler_v1(command):
...     match command.split():
...         case ['show']:
...             print('List all files and directories: ')
...             # code to list files
...         case ['remove', *files]:
...             print('Removing files: {}'.format(files))
...             # code to remove files
...         case _:
...             print('Command not recognized')
9 trong một tuyên bố
>>> file_handler_v1('remove file1.txt file2.jpg file3.pdf')
Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']
0 và có thể được viết đơn giản hơn là
>>> file_handler_v1('remove file1.txt file2.jpg file3.pdf')
Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']
1. “soft” keywords, meaning they only work as keywords in a match case statement.  You can keep using “match” or “case” as a variable name in other parts of your program.  The
>>> def file_handler_v1(command):
...     match command.split():
...         case ['show']:
...             print('List all files and directories: ')
...             # code to list files
...         case ['remove', *files]:
...             print('Removing files: {}'.format(files))
...             # code to remove files
...         case _:
...             print('Command not recognized')
8 is equivalent to
>>> def file_handler_v1(command):
...     match command.split():
...         case ['show']:
...             print('List all files and directories: ')
...             # code to list files
...         case ['remove', *files]:
...             print('Removing files: {}'.format(files))
...             # code to remove files
...         case _:
...             print('Command not recognized')
9 in an
>>> file_handler_v1('remove file1.txt file2.jpg file3.pdf')
Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']
0 statement and can be more simply written as
>>> file_handler_v1('remove file1.txt file2.jpg file3.pdf')
Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']
1.

Chúng tôi sử dụng chức năng

>>> file_handler_v1('remove file1.txt file2.jpg file3.pdf')
Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']
2 ở đây để chỉ cần in văn bản lên màn hình. Nhưng bất kỳ lệnh hoặc lệnh gọi chức năng nào khác cũng có thể đến đây để được thực thi nếu trường hợp được khớp. & Nbsp; Chúng tôi sẽ thấy một số ví dụ chi tiết hơn dưới đây. Nếu bạn muốn tìm hiểu thêm về chức năng
>>> file_handler_v1('remove file1.txt file2.jpg file3.pdf')
Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']
2, hãy xem bài viết này.

Tại sao sử dụng một câu lệnh trường hợp phù hợp?

Ví dụ trên có thể dễ dàng được thực hiện với câu lệnh

>>> file_handler_v1('remove file1.txt file2.jpg file3.pdf')
Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']
0. Trong phần này, chúng tôi sẽ thấy thêm hai ví dụ về cách sử dụng match case có thể đơn giản hóa các câu lệnh điều khiển dòng chảy của bạn, làm cho chúng dễ đọc hơn và ít bị lỗi hơn. & NBSP;

Giả sử chúng tôi muốn viết một tập lệnh để xử lý một số lượng lớn các tệp. Chúng ta có thể viết chức năng sau:

>>> def file_handler_v1(command):
...     match command.split():
...         case ['show']:
...             print('List all files and directories: ')
...             # code to list files
...         case ['remove', *files]:
...             print('Removing files: {}'.format(files))
...             # code to remove files
...         case _:
...             print('Command not recognized')

Đầu vào một lần nữa là một chuỗi được phân chia tại không gian trắng bằng cách sử dụng

>>> file_handler_v1('remove file1.txt file2.jpg file3.pdf')
Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']
6. Điều này trả về một danh sách các chuỗi. . của lệnh là 'hiển thị', trong đó phương thức
>>> file_handler_v1('remove file1.txt file2.jpg file3.pdf')
Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']
7 trả về danh sách ________ 28. & nbsp; Sau đó mã để liệt kê tất cả các tệp trong một thư mục cụ thể được thực thi. Ở đây chúng tôi chỉ có mã để được thực thi được chỉ định bởi các bình luận; Trong thực tế, bạn có thể sử dụng mô -đun HĐH để thực hiện chức năng cần thiết.

Trường hợp thứ hai thú vị hơn. Đây là một ví dụ:

>>> file_handler_v1('remove file1.txt file2.jpg file3.pdf')
Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']

Phần đầu tiên của đối số

>>> file_handler_v1('remove file1.txt file2.jpg file3.pdf')
Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']
9 được khớp sau khi chia tách. & NBSP; Sử dụng biểu thức được đặt chính xác trong định nghĩa trường hợp nắm bắt bất kỳ số lượng đối số tùy chọn nào theo sau (tương tự
>>> def file_handler_v2(command):
...     match command.split():
...         case ['show']:
...             print('List all files and directories: ')
...             # code to list files
...         case ['remove' | 'delete', *files] if '--ask' in files:
...             del_files = [f for f in files if len(f.split('.'))>1]
...             print('Please confirm: Removing files: {}'.format(del_files))
...             # code to accept user input, then remove files
...         case ['remove' | 'delete', *files]:
...             print('Removing files: {}'.format(files))
...             # code to remove files
...         case _:
...             print('Command not recognized')
0); Biến
>>> def file_handler_v2(command):
...     match command.split():
...         case ['show']:
...             print('List all files and directories: ')
...             # code to list files
...         case ['remove' | 'delete', *files] if '--ask' in files:
...             del_files = [f for f in files if len(f.split('.'))>1]
...             print('Please confirm: Removing files: {}'.format(del_files))
...             # code to accept user input, then remove files
...         case ['remove' | 'delete', *files]:
...             print('Removing files: {}'.format(files))
...             # code to remove files
...         case _:
...             print('Command not recognized')
1 được xác định là một danh sách chứa tất cả các tệp sẽ được xóa. Nếu bạn thử thực hiện điều này với câu lệnh
>>> file_handler_v1('remove file1.txt file2.jpg file3.pdf')
Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']
0, bạn sẽ sử dụng nhiều mã hơn để đạt được kết quả tương tự. Nó cũng sẽ không thể đọc được như sử dụng câu lệnh match case.

Cấp độ phức tạp tiếp theo liên quan đến việc sử dụng hoặc toán tử (

>>> def file_handler_v2(command):
...     match command.split():
...         case ['show']:
...             print('List all files and directories: ')
...             # code to list files
...         case ['remove' | 'delete', *files] if '--ask' in files:
...             del_files = [f for f in files if len(f.split('.'))>1]
...             print('Please confirm: Removing files: {}'.format(del_files))
...             # code to accept user input, then remove files
...         case ['remove' | 'delete', *files]:
...             print('Removing files: {}'.format(files))
...             # code to remove files
...         case _:
...             print('Command not recognized')
4) và đặt câu lệnh if bên trong định nghĩa trường hợp. Hãy xem chức năng sau, đặc biệt chú ý đến các trường hợp thứ hai và thứ ba:

>>> def file_handler_v2(command):
...     match command.split():
...         case ['show']:
...             print('List all files and directories: ')
...             # code to list files
...         case ['remove' | 'delete', *files] if '--ask' in files:
...             del_files = [f for f in files if len(f.split('.'))>1]
...             print('Please confirm: Removing files: {}'.format(del_files))
...             # code to accept user input, then remove files
...         case ['remove' | 'delete', *files]:
...             print('Removing files: {}'.format(files))
...             # code to remove files
...         case _:
...             print('Command not recognized')

Các trường hợp thứ hai và thứ ba bây giờ khớp với một trong hai loại bỏ hoặc xóa xóa trong lệnh đầu vào. Ngoài ra, trường hợp thứ hai có một câu lệnh IF chỉ khớp với khi cờ tùy chọn

>>> def file_handler_v2(command):
...     match command.split():
...         case ['show']:
...             print('List all files and directories: ')
...             # code to list files
...         case ['remove' | 'delete', *files] if '--ask' in files:
...             del_files = [f for f in files if len(f.split('.'))>1]
...             print('Please confirm: Removing files: {}'.format(del_files))
...             # code to accept user input, then remove files
...         case ['remove' | 'delete', *files]:
...             print('Removing files: {}'.format(files))
...             # code to remove files
...         case _:
...             print('Command not recognized')
6K nằm trong đầu vào. Bên dưới điều này, bạn có thể triển khai mã để chấp nhận đầu vào của người dùng, sau đó xóa các tệp nếu lệnh được xác nhận. Lưu ý rằng chúng tôi phải chọn tất cả các tệp để xóa bằng cách sử dụng danh sách hiểu, đây là một cách viết nhỏ gọn cho vòng lặp. Hãy xem bài viết này để biết thêm thông tin về các vòng lặp trong Python.

Trường hợp thứ ba trong ví dụ trên được khớp khi cờ tùy chọn không nằm trong lệnh đầu vào. Hãy cùng xem hai ví dụ về chức năng này trong hành động:

>>> file_handler_v2('remove --ask file1.txt file2.jpg file3.pdf')
Please confirm: Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']

>>> file_handler_v2('delete file1.txt file2.jpg file3.pdf')
Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']

Suy nghĩ cuối cùng về các tuyên bố trường hợp phù hợp trong Python

Trong bài viết này, chúng tôi đã giới thiệu kết hợp mô hình cấu trúc trong Python với tuyên bố match case. Chúng tôi đã chỉ ra làm thế nào nó có thể cung cấp một lợi thế so với một tuyên bố

>>> file_handler_v1('remove file1.txt file2.jpg file3.pdf')
Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']
0 về số lượng mã cần thiết và khả năng đọc. Có nhiều tính năng mới này có thể làm mà chúng tôi đã không chạm vào đây - bạn có thể cung cấp một đối tượng dưới dạng đầu vào (thay vì các chuỗi chúng tôi đã sử dụng) và thực hiện khớp mẫu trên các thuộc tính của đối tượng. Thứ khá tuyệt vời.

Một lời cảnh báo: Đối với các tuyên bố phức tạp hơn như ví dụ cuối cùng ở trên, thứ tự bạn có các trường hợp thay đổi hành vi của chương trình. Bạn có thể quen thuộc với điều này từ việc viết các câu

>>> file_handler_v1('remove file1.txt file2.jpg file3.pdf')
Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']
0. Để chứng minh vấn đề này, hãy lấy ví dụ cuối cùng từ trên cao và trao đổi vị trí của các trường hợp thứ hai và thứ ba. Bạn sẽ tìm thấy cờ
>>> file_handler_v2('remove --ask file1.txt file2.jpg file3.pdf')
Please confirm: Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']

>>> file_handler_v2('delete file1.txt file2.jpg file3.pdf')
Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']
0 không bao giờ được khớp. Vì vậy, hãy chắc chắn rằng bạn đặt một chút suy nghĩ về cách bạn cấu trúc các câu lệnh. Bạn thậm chí có thể kết hợp một số câu lệnh điều khiển luồng khác vào mã của bạn. Kiểm tra bài viết này cho thấy cách sử dụng phá vỡ, tiếp tục và vượt qua để kiểm soát các vòng lặp trong Python.order in which you have the cases changes the behavior of the program. You might be familiar with this from writing
>>> file_handler_v1('remove file1.txt file2.jpg file3.pdf')
Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']
0 statements. To demonstrate this problem, take the final example from above and swap the positions of the second and third cases. You’ll find the
>>> file_handler_v2('remove --ask file1.txt file2.jpg file3.pdf')
Please confirm: Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']

>>> file_handler_v2('delete file1.txt file2.jpg file3.pdf')
Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']
0 flag is never matched. So, make sure you put a bit of thought into how you structure the case statements. You could even incorporate some of the other flow control statements into your code. Check out this article which shows how to use break, continue, and pass to control loops in Python.

Nói đúng ra, match case không thêm chức năng mới vào Python. Tuy nhiên, nó đơn giản hóa rất nhiều các câu lệnh điều khiển phức tạp. Hãy thoải mái lấy những gì bạn đã học được ở đây và áp dụng cho các dự án của riêng bạn. Cố gắng viết lại một số tuyên bố

>>> file_handler_v1('remove file1.txt file2.jpg file3.pdf')
Removing files: ['file1.txt', 'file2.jpg', 'file3.pdf']
0 của bạn với một tuyên bố match case để thuyết phục bản thân về tính hữu dụng của nó. Mã hóa hạnh phúc!

Một tuyên bố trận đấu trong Python là gì?

Trận đấu không phải là một tuyên bố chuyển đổi! Tuyên bố của Elif. Câu lệnh Python Match là một câu lệnh khớp mẫu với cú pháp biểu hiện phụ cho: khớp với hình dạng của một chuỗi. Kết hợp các mục trong một chuỗi. Phù hợp với các khóa và giá trị trong một từ điển.a pattern matching statement with a syntax of sub-expressions for: Matching the shape of a sequence. Matching items in a sequence. Matching keys and values in a dictionary.

Làm thế nào để bạn phù hợp trong Python?

.Pass the string you want to search into the Regex object's search() method. This returns a Match object. Call the Match object's group() method to return a string of the actual matched text.

Python có chức năng khớp không?

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.Có một sự khác biệt giữa việc sử dụng cả hai chức năng.. These functions are very efficient and fast for searching in strings. The function searches for some substring in a string and returns a match object if found, else it returns none. There is a difference between the use of both functions.

Câu lệnh khớp là gì?

Tuyên bố trận đấu là gì?Nếu bạn là lập trình viên C hoặc C ++, có khả năng bạn đã sử dụng hoặc ít nhất là nghe về việc sử dụng câu lệnh MATCH, chỉ là nó được đổi tên thành câu lệnh Switch.Tuyên bố này được sử dụng để kiểm soát luồng thực thi mã.used in order to control the flow of code execution.