Hướng dẫn does python have match case? - python có trường hợp phù hợp không?

Cho đến bây giờ, các tuyên bố trong trường hợp chuyển đổi không có mặt trong Python. Sử dụng các câu lệnh IF-Else và câu lệnh từ điển là một số cách để thực hiện cấu trúc trường hợp chuyển đổi trong Python. Nhưng với điều đó, mã không thể quản lý được, và ngay cả việc xây dựng cũng tẻ nhạt. Đó là khi trường hợp trận đấu Python có ích.

Với sự ra đời của Python 3.10, một số tính năng mới đã được giới thiệu và một trong số đó là - trường hợp trận đấu Python. Trường hợp trận đấu Python tương tự như câu lệnh Case Switch, được công nhận là khớp mẫu cấu trúc trong Python. & NBSP; & nbsp;

Lưu ý: Cấu trúc trường hợp khớp có sẵn cho Python phiên bản 3.10 trở đi.

Chuyển đổi cấu trúc trường hợp

Khối điều khiển chuyển đổi có chức năng tương tự như của thang if-else. Tuy nhiên, viết nhiều câu nếu không phải là cách hiệu quả nhất để làm như vậy. Thay vào đó, bằng cách sử dụng câu lệnh CASE Switch, chúng ta chỉ có thể kết hợp chúng thành một cấu trúc duy nhất.

Câu lệnh CASE SWITCH trong chương trình C/C ++ sẽ trông giống như thế này:

switch (variable to be evaluated):
{
     case value1 : //statement 1
                   break;

     case value2 : //statement 2
                   break;

     case value_n : //statement n
                    break;

     default:  //default statement
}

Trình bày tuyên bố trường hợp

Để thực hiện các đặc điểm giống như trường hợp chuyển đổi và các chức năng IF-Else, chúng tôi sử dụng một trường hợp khớp trong Python. Một câu lệnh MATCH sẽ so sánh một giá trị biến đã cho với các hình dạng khác nhau, còn được gọi là mẫu. Ý tưởng chính là tiếp tục so sánh biến với tất cả các mẫu hiện tại cho đến khi nó phù hợp với một.match case in python. A match statement will compare a given variable’s value to different shapes, also referred to as the pattern. The main idea is to keep on comparing the variable with all the present patterns until it fits into one.

Cú pháp của trường hợp phù hợp trong Python

Trường hợp phù hợp bao gồm ba thực thể chính:

  • Từ khóa đối sánh
  • Một hoặc nhiều điều khoản trường hợp
  • Biểu thức cho từng trường hợp

Mệnh đề trường hợp bao gồm một mẫu được khớp với biến, một điều kiện được đánh giá nếu mẫu khớp và một tập hợp các câu lệnh được thực thi nếu mẫu khớp.

Chúng ta có thể viết nhiều câu lệnh trường hợp cho nhiều khả năng cho một biến nhất định. Mỗi câu lệnh trường hợp có một mẫu phải được khớp.

Cú pháp trông giống như thế này:

match variable_name:
            case ‘pattern1’ : //statement1
            case ‘pattern2’ : //statement2
            …            
            case ‘pattern n’ : //statement n

Ví dụ về câu lệnh Python trường hợp khớp

Hãy để chúng tôi hiểu thêm về tuyên bố trường hợp trận đấu bằng cách lấy một ví dụ rất đơn giản.

quit_flag = False
match quit_flag:
    case True:
        print("Quitting")
        exit()
    case False:
        print("System is on") 

Ở đây, chúng tôi có một biến có tên là Quit_flag mà chúng tôi đã gán một giá trị Boolean sai theo mặc định. Do đó, chúng tôi có một trường hợp phù hợp sẽ so sánh các mẫu với biến ‘Quit_flag.

Chúng tôi có hai trường hợp cho hai giá trị có thể của Quit_flag - đúng và sai. Đối với trường hợp đầu tiên, nếu biến là đúng, thì nó sẽ in ‘trò chơi và thực hiện hàm thoát () để kết thúc chương trình. Trong trường hợp nếu nó là sai, nó sẽ chỉ in một tuyên bố nói rằng ‘hệ thống đang bật.

Khi giá trị thoát yflag nếu sai, trường hợp phù hợp sẽ in ‘hệ thống trên

Hướng dẫn does python have match case? - python có trường hợp phù hợp không?

Nếu biến thoát được gán giá trị ‘true, thì nó sẽ in‘ bỏ ra và kết thúc chương trình

Hướng dẫn does python have match case? - python có trường hợp phù hợp không?

Nếu chúng ta đã sử dụng IF-Else, thì đó sẽ là một loạt các thang if-Else. Tuy nhiên, vì trường hợp trận đấu này chỉ có hai trường hợp, sử dụng IF-Else sẽ không quá tẻ nhạt. Nhưng điều gì sẽ xảy ra nếu thay vì hai trường hợp, chúng tôi đã có 20? Sau đó, trường hợp trận đấu sẽ trông dễ đọc và dễ quản lý hơn so với thang if-Else.

Cũng đọc | 5 cách để kiểm tra xem một chuỗi có số nguyên trong Python không 5 Ways to Check if a String is Integer in Python

Khớp trường hợp python cho quá tải chức năng

Chúng ta cũng có thể sử dụng khớp mẫu cấu trúc để quá tải chức năng trong Python. Với quá tải chức năng, chúng tôi có nhiều chức năng có cùng tên nhưng có chữ ký khác.

Tùy thuộc vào điều kiện trường hợp, chúng ta có thể truy cập cùng một tên chức năng với các giá trị chữ ký khác nhau. Với quá tải chức năng, chúng ta có thể cải thiện khả năng đọc của mã.

Đến bây giờ, Python không hỗ trợ quá tải chức năng. Ví dụ sau đây có thể được sử dụng để xác minh nó -

Ở đây, chúng tôi sẽ tạo một tên chức năng do người dùng xác định calc () chấp nhận một đối số. Nếu loại đối số là một số nguyên, thì chúng ta sẽ trả về bình phương của số. Khác nếu loại đối số là nổi, thì chúng ta sẽ trả lại khối của một số.

def calc(n:int):
	return (n**2)

def calc(n:float):
	return (n**3)  
n = 9.5
is_int = isinstance(n, int)

match is_int:
	case True : print("Square is :",calc(n))
	case False : print("Cube is:", calc(n))

Vì số N là số điểm nổi, nó sẽ in khối lập phương của biến.

Output:

Cube is: 857.375

n = 10
match is_int:
	case True : print("Square is :",calc(n))
	case False : print("Cube is:", calc(n))

Đầu ra là:

Square is : 1000

Ở đây bạn có thể kiểm tra xem giá trị dự kiến ​​là 100 trong khi, 1000 đã được trả lại. Điều đó có nghĩa là quá tải chức năng không được hỗ trợ.

Giá trị mẫu

Trường hợp khớp trong Python cho phép một số, chuỗi, ‘không có giá trị, giá trị‘ đúng và giá trị ‘sai là mẫu. Do đó, các loại mẫu khác nhau là có thể, và chúng tôi sẽ xem xét một số mẫu có thể.

Mô hình đại diện

Chúng ta cũng có thể có một mô hình ký tự đại diện. Một mẫu ký tự đại diện được thực thi khi không có giá trị mẫu nào khác được khớp.

Sau đây cho thấy một ví dụ về một mô hình ký tự đại diện.

Chúng tôi sẽ lấy ví dụ tương tự về việc bỏ cuộc. Nhưng ở đây, thay vì chuyển giá trị boolean cho biến, chúng tôi sẽ chuyển giá trị số nguyên cho ‘Quit_flag. ‘quit_flag’variable.

quit_flag = 4

match quit_flag:
    case True:
        print("Quitting")
        exit()
    case False:
        print("System is on")
    case _:
        print("Boolean Value was not passed")    

Đầu ra sẽ là:

Boolean Value was not passed

Ở đây, dấu gạch dưới đã được sử dụng như một mô hình đại diện. Nó sẽ không liên kết giá trị biến ‘Quit_flag, với bất cứ thứ gì ngoại trừ khớp với giá trị biến biến với câu lệnh.

Nhiều giá trị mẫu sử dụng hoặc toán tử

Chúng tôi cũng có thể có các giá trị tùy chọn cho một trường hợp nhất định. Sử dụng hoặc toán tử, chúng ta có thể thực thi một biểu thức duy nhất cho nhiều khả năng của mẫu cho biến đã cho.

Trong mã dưới đây, chúng tôi có một tên biến ‘mẫu. Nếu giá trị biến biến là loại Boolean, thì nó sẽ thực hiện một tuyên bố chung cho cả hai điều kiện. Khác, đối với bất kỳ giá trị nào khác, nó sẽ in ‘không phải là giá trị boolean.anyother value, it will print ‘Not a Boolean value’.

sample = True

match sample:
	case (True|False):
		print("It is a boolean value")
	case _ :
		print("Not a boolean value")

Đầu ra là:

match variable_name:
            case ‘pattern1’ : //statement1
            case ‘pattern2’ : //statement2
            …            
            case ‘pattern n’ : //statement n

0

Kiểm tra bộ sưu tập các giá trị

Các mẫu cũng có thể là một tập hợp các giá trị. Nó sẽ phù hợp với mẫu so với toàn bộ bộ sưu tập. Chúng ta hãy lấy một danh sách ‘Danh sách1 làm ví dụ. Chúng tôi sẽ lấy toàn bộ bộ sưu tập danh sách làm mẫu.

match variable_name:
            case ‘pattern1’ : //statement1
            case ‘pattern2’ : //statement2
            …            
            case ‘pattern n’ : //statement n

1

Đầu ra sẽ là:

match variable_name:
            case ‘pattern1’ : //statement1
            case ‘pattern2’ : //statement2
            …            
            case ‘pattern n’ : //statement n

2

Hằng số được đặt tên là các mẫu

Chúng ta có thể có một hằng số được đặt tên là một mẫu cho các câu lệnh trường hợp phù hợp. Hằng số phải là một tên đủ điều kiện được giải quyết bởi một toán tử DOT. Nó hoạt động như một nghĩa đen, nhưng nó không bao giờ bận tâm.

Một ví dụ về hằng số được đặt tên là:

match variable_name:
            case ‘pattern1’ : //statement1
            case ‘pattern2’ : //statement2
            …            
            case ‘pattern n’ : //statement n

3

Đầu ra là:

match variable_name:
            case ‘pattern1’ : //statement1
            case ‘pattern2’ : //statement2
            …            
            case ‘pattern n’ : //statement n

4

Kiểm tra bộ sưu tập các giá trị 4 Ways of Exiting the Program with Python Exit Function

Các mẫu cũng có thể là một tập hợp các giá trị. Nó sẽ phù hợp với mẫu so với toàn bộ bộ sưu tập. Chúng ta hãy lấy một danh sách ‘Danh sách1 làm ví dụ. Chúng tôi sẽ lấy toàn bộ bộ sưu tập danh sách làm mẫu.

Hằng số được đặt tên là các mẫu

Chúng ta có thể có một hằng số được đặt tên là một mẫu cho các câu lệnh trường hợp phù hợp. Hằng số phải là một tên đủ điều kiện được giải quyết bởi một toán tử DOT. Nó hoạt động như một nghĩa đen, nhưng nó không bao giờ bận tâm.

match variable_name:
            case ‘pattern1’ : //statement1
            case ‘pattern2’ : //statement2
            …            
            case ‘pattern n’ : //statement n

5

Đầu ra là:

match variable_name:
            case ‘pattern1’ : //statement1
            case ‘pattern2’ : //statement2
            …            
            case ‘pattern n’ : //statement n

6

Kiểm tra bộ sưu tập các giá trị

Các mẫu cũng có thể là một tập hợp các giá trị. Nó sẽ phù hợp với mẫu so với toàn bộ bộ sưu tập. Chúng ta hãy lấy một danh sách ‘Danh sách1 làm ví dụ. Chúng tôi sẽ lấy toàn bộ bộ sưu tập danh sách làm mẫu.

Hằng số được đặt tên là các mẫu

Chúng ta có thể có một hằng số được đặt tên là một mẫu cho các câu lệnh trường hợp phù hợp. Hằng số phải là một tên đủ điều kiện được giải quyết bởi một toán tử DOT. Nó hoạt động như một nghĩa đen, nhưng nó không bao giờ bận tâm.

Một ví dụ về hằng số được đặt tên là:

Cũng đọc | 4 cách thoát khỏi chương trình với chức năng thoát Python

Nội tuyến nếu câu lệnh ở định dạng trường hợp khớp


Chúng ta cũng có thể thêm một câu lệnh IF vào một mẫu cho một trường hợp phù hợp trong Python. Rằng nếu điều kiện còn được gọi là ‘bảo vệ. Biểu thức cho một mẫu nhất định sẽ chỉ được đánh giá nếu người bảo vệ là đúng. Nếu người bảo vệ là sai, nó không thực thi câu lệnh mẫu đó.

Hãy để chúng tôi lấy một ví dụ cho cùng. Chúng tôi có một biến sẽ được gán một giá trị số. Chúng tôi có ba trường hợp ở đây - n là âm, N bằng không và N là dương tính. Trường hợp trận đấu sẽ kiểm tra người bảo vệ và theo đó in câu lệnh.

Câu hỏi thường gặp về trường hợp phù hợp Python