Hướng dẫn python match-case else - trường hợp khớp python khác

3

Nội dung chính ShowShow

  • Các câu lệnh trong trường hợp chuyển đổi là gì?
  • Làm thế nào để các câu lệnh trong trường hợp chuyển đổi hoạt động trong Python?
  • Các trường hợp kết hợp phù hợp trong các câu hỏi về trường hợp trận đấu Python
  • Các mẫu phù hợp trong các câu lệnh Case của Python
  • Cung cấp giá trị mặc định trong các câu lệnh Case của Python
  • Kiểu và cấu trúc phù hợp trong các câu lệnh Case của Python
  • Kiểm tra các loại trong các câu lệnh Case của Python
  • Bảo vệ các câu hỏi về trường hợp trận đấu Python
  • Cách tạo các câu lệnh trong trường hợp chuyển đổi trong Python với if-else
  • Cách tạo các câu lệnh trong trường hợp chuyển đổi trong Python với từ điển
  • Sự kết luận
  • Tài nguyên bổ sung
  • Python có trường hợp phù hợp không?
  • Trường hợp trận đấu Python có cần phá vỡ không?
  • Python 3.9 có phù hợp không?
  • Là trường hợp phù hợp nhanh hơn nếu

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.Learn more.
Learn more.

Tôi đã bắt gặp một vấn đề kỳ lạ trong khi sử dụng cú pháp ________ 16/________ 17 mới trong Python3.10. Ví dụ sau đây có vẻ như nó sẽ hoạt động, nhưng ném lỗi:

values = [
    1,
    "hello",
    True
]

for v in values:
    match type(v):
        case str:
            print("It is a string!")
        case int:
            print("It is an integer!")
        case bool:
            print("It is a boolean!")
        case _:
            print(f"It is a {type(v)}!")
$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
  • Đó là đề cập rằng trường hợp đầu tiên (giá trị
    $ python example.py
      File "/.../example.py", line 9
        case str:
             ^^^
    SyntaxError: name capture 'str' makes remaining patterns unreachable
    
    8) sẽ luôn dẫn đến
    $ python example.py
      File "/.../example.py", line 9
        case str:
             ^^^
    SyntaxError: name capture 'str' makes remaining patterns unreachable
    
    9.

Tự hỏi nếu có một sự thay thế cho điều này ngoài việc chuyển đổi loại thành một chuỗi.

Đã hỏi ngày 18 tháng 5 lúc 20:48May 18 at 20:48May 18 at 20:48

Hướng dẫn python match-case else - trường hợp khớp python khác

3

Thay vì khớp

values = [
    1,
    "hello",
    True,
]

for v in values:
    match v:
        case str():
            print("It is a string!")
        case bool():
            print("It is a boolean!")
        case int():
            print("It is an integer!")
        case _:
            print(f"It is a {type(v)}!")
0, khớp trực tiếp
values = [
    1,
    "hello",
    True,
]

for v in values:
    match v:
        case str():
            print("It is a string!")
        case bool():
            print("It is a boolean!")
        case int():
            print("It is an integer!")
        case _:
            print(f"It is a {type(v)}!")
1:
values = [
    1,
    "hello",
    True,
]

for v in values:
    match v:
        case str():
            print("It is a string!")
        case bool():
            print("It is a boolean!")
        case int():
            print("It is an integer!")
        case _:
            print(f"It is a {type(v)}!")

Lưu ý rằng tôi đã đổi thứ tự

values = [
    1,
    "hello",
    True,
]

for v in values:
    match v:
        case str():
            print("It is a string!")
        case bool():
            print("It is a boolean!")
        case int():
            print("It is an integer!")
        case _:
            print(f"It is a {type(v)}!")
2 và
values = [
    1,
    "hello",
    True,
]

for v in values:
    match v:
        case str():
            print("It is a string!")
        case bool():
            print("It is a boolean!")
        case int():
            print("It is an integer!")
        case _:
            print(f"It is a {type(v)}!")
3 ở đây, do đó
$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
9 là một ví dụ của
values = [
    1,
    "hello",
    True,
]

for v in values:
    match v:
        case str():
            print("It is a string!")
        case bool():
            print("It is a boolean!")
        case int():
            print("It is an integer!")
        case _:
            print(f"It is a {type(v)}!")
5 không gây ra vấn đề.

Đã trả lời ngày 18 tháng 5 lúc 20:57May 18 at 20:57May 18 at 20:57

wimwimwimwim

313K95 Huy hiệu vàng570 Huy hiệu bạc709 Huy hiệu đồng95 gold badges570 silver badges709 bronze badges95 gold badges570 silver badges709 bronze badges

Trong hướng dẫn này, bạn sẽ học cách sử dụng Python để tạo câu lệnh trong trường hợp chuyển đổi. Trước Python phiên bản 3.10, Python không có tuyên bố trường hợp chuyển đổi chính thức. Để thực hiện điều này, bạn đã có một số tùy chọn khác nhau, chẳng hạn như các câu lệnh và từ điển

values = [
    1,
    "hello",
    True,
]

for v in values:
    match v:
        case str():
            print("It is a string!")
        case bool():
            print("It is a boolean!")
        case int():
            print("It is an integer!")
        case _:
            print(f"It is a {type(v)}!")
6.you’ll learn how to use Python to create a switch-case statement. Prior to Python version 3.10, Python did not have an official switch-case statement. In order to accomplish this, you had a number of different options, such as
values = [
    1,
    "hello",
    True,
]

for v in values:
    match v:
        case str():
            print("It is a string!")
        case bool():
            print("It is a boolean!")
        case int():
            print("It is an integer!")
        case _:
            print(f"It is a {type(v)}!")
6 statements and dictionaries.you’ll learn how to use Python to create a switch-case statement. Prior to Python version 3.10, Python did not have an official switch-case statement. In order to accomplish this, you had a number of different options, such as
values = [
    1,
    "hello",
    True,
]

for v in values:
    match v:
        case str():
            print("It is a string!")
        case bool():
            print("It is a boolean!")
        case int():
            print("It is an integer!")
        case _:
            print(f"It is a {type(v)}!")
6 statements and dictionaries.

Đến cuối hướng dẫn này, bạn sẽ học được:

  • Cách sử dụng các câu lệnh trường hợp chuyển đổi Python trong Python 3.10+
  • Một số trường hợp sử dụng cho các câu lệnh case python là gì
  • Cách mô phỏng các câu lệnh trường hợp chuyển đổi trong các phiên bản Python cũ hơn, sử dụng từ điển, câu lệnh if-else và các lớp
  • Các câu lệnh trong trường hợp chuyển đổi là gì?
  • Làm thế nào để các câu lệnh trong trường hợp chuyển đổi hoạt động trong Python?
  • Cách tạo các câu lệnh trong trường hợp chuyển đổi trong Python với if-else
  • Cách tạo các câu lệnh trong trường hợp chuyển đổi trong Python với từ điển
  • Sự kết luận
  • Tài nguyên bổ sung

Các câu lệnh trong trường hợp chuyển đổi là gì?

Làm thế nào để các câu lệnh trong trường hợp chuyển đổi hoạt động trong Python?

Python có trường hợp phù hợp không?

Trường hợp trận đấu Python có cần phá vỡ không?

Python 3.9 có phù hợp không?

Là trường hợp phù hợp nhanh hơn nếuStructural Pattern Matching in Python. This represents the
values = [
    1,
    "hello",
    True,
]

for v in values:
    match v:
        case str():
            print("It is a string!")
        case bool():
            print("It is a boolean!")
        case int():
            print("It is an integer!")
        case _:
            print(f"It is a {type(v)}!")
9 statements finally coming to Python in an official manner! What’s more, is that Python actually extends beyond a simple
$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
7 statement and provides flexible matching control.

Làm thế nào để các câu lệnh trong trường hợp chuyển đổi hoạt động trong Python?

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.Learn more.

$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
9

Tôi đã bắt gặp một vấn đề kỳ lạ trong khi sử dụng cú pháp ________ 16/________ 17 mới trong Python3.10. Ví dụ sau đây có vẻ như nó sẽ hoạt động, nhưng ném lỗi:

Đó là đề cập rằng trường hợp đầu tiên (giá trị

$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
8) sẽ luôn dẫn đến
$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
9.

Các trường hợp kết hợp phù hợp trong các câu hỏi về trường hợp trận đấu Python

Chúng tôi biết rằng mã trạng thái HTTP đã giành được chỉ là chính xác 200, 300, 400 và 500. Chúng tôi có thể viết các câu lệnh độ dài cho mỗi câu, nhưng một số trong số chúng có thể được kết hợp. Trong các câu lệnh Case của Python, chúng ta có thể thực hiện việc này bằng toán tử OR (ống),

$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
94.
$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
1

Bằng cách kết hợp một số điều kiện của chúng tôi, mã của chúng tôi vừa dễ viết và đọc hơn.

Các mẫu phù hợp trong các câu lệnh Case của Python

Điều tuyệt vời về các câu hỏi trong trường hợp trận đấu Python là chúng cho phép phù hợp với các điều kiện khác nhau. Vì mã phản hồi HTTP bị chia thành các giá trị kiểu 2xx, 3xx, 4xx và 5xx, chúng ta có thể xem xét giá trị đầu tiên trong phản hồi đó và trả về trường hợp chuyển đổi:

$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
2

Cung cấp giá trị mặc định trong các câu lệnh Case của Python

Python cũng làm cho việc thêm các trường hợp mặc định vào các câu hỏi của bạn rất dễ dàng. Bởi vì Python đánh giá dựa trên một mẫu, bạn chỉ có thể cung cấp một biến dùng một lần, thông thường

$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
9 5, để thay thế một trường hợp bắt tất cả.

Hãy để xem làm thế nào điều này có thể hoạt động:

$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
4

Kiểu và cấu trúc phù hợp trong các câu lệnh Case của Python

Một tính năng đáng kinh ngạc khác của Python là khả năng phù hợp với cả loại và cấu trúc. Điều này có nghĩa là Python có thể giải thích liệu một mục có phải là một đối tượng có thể đi được mà nó có thể trích xuất các giá trị hay không. Tương tự, nó có thể nhìn vào kích thước và trang điểm của cấu trúc đó để lượm lặt ý nghĩa.

Hãy cùng xem một ví dụ đơn giản:

$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
5

Ở đây, tuyên bố

$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
96 của chúng tôi đánh giá cho cấu trúc. Cụ thể, nếu danh sách chỉ có một mục duy nhất, trường hợp đầu tiên được chạy:
$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
7

Hãy cùng xem xét trường hợp bao gồm nhiều hơn ba mục. Chúng tôi sử dụng

$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
97 để giải nén bất kỳ mục nào sau lần đầu tiên. Điều này có nghĩa là nó không quan trọng có bao nhiêu mặt hàng trong danh sách đó:
$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
9

Kiểm tra các loại trong các câu lệnh Case của Python

Các câu lệnh Case của Python cũng có thể được sử dụng để kiểm tra các loại thứ gì đó được truyền vào. Hãy để di chuyển điều này đến một ví dụ nâng cao hơn và tạo một hàm cho phép chúng tôi vượt qua các giá trị khác nhau.

$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
0

Bảo vệ các câu hỏi về trường hợp trận đấu Python

Một điều hữu ích khác Python Case Case có thể làm là bảo vệ một số trường hợp được thực thi.

Hãy nói rằng bạn đã nhận được một từ điển có chứa tên học sinh, số lượng các khóa học mà họ đã tham gia và điểm tổng thể của họ. Bạn muốn trao cho sinh viên các giải thưởng khác nhau dựa trên số lượng khóa học và điểm tổng thể của họ.

Bạn có thể viết các câu lệnh CASE được bảo vệ trong trường hợp này bằng cách sử dụng từ khóa

$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
98, hoạt động tương tự như nội tuyến nếu trong Python.
$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
1

Trong trường hợp này, trước tiên chúng tôi cung cấp các giá trị cho từ điển của chúng tôi trong trận đấu của chúng tôi. Sử dụng các biến này, sau đó chúng ta có thể bảo vệ chống lại chúng cũng như sử dụng chúng trong câu lệnh

$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
99.

Cách tạo các câu lệnh trong trường hợp chuyển đổi trong Python với if-else

Trong phần này và ba phần sau, bạn sẽ học cách mô phỏng các câu lệnh Case của Python bằng các phương pháp khác nhau trước phiên bản Python 3.10. Trong phần này, bạn sẽ học cách sử dụng các câu lệnh IF-Else để mô phỏng các câu lệnh Case chuyển đổi trong Python.

Tất cả các ví dụ trên sẽ hoạt động, chúng sẽ không trông thanh lịch hoặc sạch sẽ. Trước tiên, hãy bắt đầu với một ví dụ cơ bản hơn:

$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
2

Chúng ta có thể thấy rằng điều này trông rất giống với các câu lệnh trường hợp chuyển đổi mà chúng tôi đã viết ở trên. Tuy nhiên, chúng tôi được yêu cầu liên tục lặp lại giá trị của biến của chúng tôi để đánh giá chống lại. Trong trường hợp này, điều đó vẫn có vẻ ổn, nhưng nếu điều kiện của chúng ta ngày càng lâu hơn có thể chứng minh khác nhau.

Tương tự, chúng tôi có thể cung cấp phản hồi bắt tất cả nếu không có điều kiện nào được đáp ứng, sử dụng từ khóa

$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
10:
$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
3

Cách tạo các câu lệnh trong trường hợp chuyển đổi trong Python với từ điển

Mặc dù tuyên bố

values = [
    1,
    "hello",
    True,
]

for v in values:
    match v:
        case str():
            print("It is a string!")
        case bool():
            print("It is a boolean!")
        case int():
            print("It is an integer!")
        case _:
            print(f"It is a {type(v)}!")
6 cung cấp rất nhiều sự linh hoạt, nhưng nó thường ít thanh lịch hơn để viết và đọc. Từ điển có thể được sử dụng cho các câu lệnh trường hợp chuyển đổi đơn giản, thậm chí có thể thực thi các chức năng.

Hãy cùng xem một ví dụ, nơi chúng ta vượt qua trong một số tháng và nó trả lại một mùa:

$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
4

Nếu thay vào đó, chúng tôi không muốn trả về một giá trị, chúng tôi có thể xác định một số chức năng và có giá trị của từ điển của chúng tôi là các thiết bị gọi của các hàm đó:

$ python example.py
  File "/.../example.py", line 9
    case str:
         ^^^
SyntaxError: name capture 'str' makes remaining patterns unreachable
5

Chúng ta có thể thấy làm thế nào điều này có thể khá hữu ích để mở rộng hành vi chương trình được đưa ra một số điều kiện nhất định. Ví dụ, bạn có thể nhận được giá trị từ điển từ một yêu cầu HTTP và chạy các đoạn mã khác nhau với mã trạng thái của yêu cầu.

Sự kết luận

Phiên bản Python 3.10 mở ra một thế giới mới về khả năng với các câu hỏi trong trường hợp trận đấu cực kỳ linh hoạt. Bài viết này đã khám phá những câu lệnh trong trường hợp chuyển đổi và làm thế nào để sử dụng chúng theo nhiều cách khác nhau. Bạn đã học cách xây dựng các tuyên bố đơn giản, tuyên bố có điều kiện và các tuyên bố bảo vệ hoặc trích xuất thông tin bổ sung.

Cuối cùng, bạn cũng đã học được cách sử dụng các câu lệnh và từ điển của Python if-Else để mô phỏng các câu lệnh trường hợp chuyển đổi cho các phiên bản Python cũ hơn.

Tài nguyên bổ sung

Để tìm hiểu thêm về các chủ đề liên quan, hãy xem các hướng dẫn dưới đây:

  • Từ điển Python: Tổng quan đầy đủ
  • Điều kiện Python, Booleans và So sánh
  • Break, tiếp tục và vượt qua: Kiểm soát dòng chảy Python
  • Lập trình hướng đối tượng Python (OOP) cho khoa học dữ liệu

Python có trường hợp phù hợp không?

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ố trường hợp phù hợp. Đâ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.. This is Python 3.10's most important new feature; the new functionality allows you to more easily control the flow of your programs by executing certain parts of code if conditions (or cases) are met.. This is Python 3.10's most important new feature; the new functionality allows you to more easily control the flow of your programs by executing certain parts of code if conditions (or cases) are met.

Trường hợp trận đấu Python có cần phá vỡ không?

Bạn không cần phải phá vỡ các trường hợp trận đấu. Bạn không cần nghỉ giải lao có lẽ nếu bạn không muốn chúng phá vỡ vòng lặp. Vì vậy, như đã nói, không cần nghỉ trong trận đấu Python. Bên cạnh đó, cũng có một mã thông báo tiếp tục cho phép bạn dừng lặp lại mà không phá vỡ vòng lặp.. You don't need that breaks probably if you don't want them to break the loop. So, as already told, no need for break in python match. On a side note, there is also a continue token which allow you to stop an iteration without breaking the loop.. You don't need that breaks probably if you don't want them to break the loop. So, as already told, no need for break in python match. On a side note, there is also a continue token which allow you to stop an iteration without breaking the loop.

Python 3.9 có phù hợp không?

Trong Python 3.9, bạn đã sử dụng một câu lệnh IF với bốn nhánh.Trước tiên, chúng tôi xác định, sau từ khóa khớp, biến mà chúng tôi muốn khớp.Sau đó, mỗi trường hợp bắt đầu với từ khóa trường hợp, theo sau là mẫu chúng tôi muốn kiểm tra.you would have used an if statement with four branches. We firstly define, after the match keyword, the variable that we want to match. Then, each case starts with the case keyword, followed by the pattern we want to check.you would have used an if statement with four branches. We firstly define, after the match keyword, the variable that we want to match. Then, each case starts with the case keyword, followed by the pattern we want to check.

Là trường hợp phù hợp nhanh hơn nếu

Python 3.10 Các câu lệnh khớp nhanh hơn ở các chuỗi khớp mẫu so với các câu chuyện if tương đương.Nhanh hơn nhiều.Các hàm thứ hai chạy nhanh hơn 86% so với đầu tiên.. MUCH faster. The second functions runs 86% faster than the first.. MUCH faster. The second functions runs 86% faster than the first.