Розробники таких мов, як C/C++ або Java, знають, що існує умовний оператор, відомий як a Корпус перемикача . Це Match Case є Switch Case Python, який був представлений у Python 3.10. Тут ми повинні спочатку передати параметр, а потім спробувати перевірити, з яким регістром параметр задовольняється. Якщо ми знайдемо відповідність, ми виконаємо певний код, а якщо відповідності немає взагалі, буде виконано дію за замовчуванням.
Синтаксис інструкції Python Match Case
Оператор match case в Python ініціалізується за допомогою матч ключове слово, за яким слідує параметр, який буде відповідати. Потім різні випадки визначаються за допомогою справа ключове слово та шаблон для відповідності параметру. The _ це символ підстановки, який запускається, коли всі випадки не відповідають значенню параметра.
match parameter: case pattern1: # code for pattern 1 case pattern2: # code for pattern 2 . . case patterN: # code for pattern N case _: # default code block>
Зміст
java перетворює char на int
- Простий оператор відповідності
- Збіг регістру з оператором OR
- Зіставте оператор Case з умовою Python If
- Зіставте регістр із шаблоном послідовності
- Зіставте регістр із словником Python
- Зіставте оператор Case з класом Python
- Питання та відповіді щодо відповідності Python
Тепер давайте подивимося кілька прикладів, щоб дізнатися, як оператор match case працює в Python.
Простий оператор відповідності
У простому операторі Python match case точне значення порівнюється та зіставляється зі значенням шаблону case. Існують різні тестові випадки та їхній відповідний код, який виконуватиметься лише тоді, коли збігається регістр. В іншому випадку існує стандартний випадок, який виконується, коли всі визначені випадки не збігаються.
приклад: У цьому прикладі ми попросимо користувача ввести значення від 1 до 3 і відобразити відповідне число словами за допомогою простого оператора match case.
Python # simple match case statement def runMatch(): num = int(input('Enter a number between 1 and 3: ')) # match case match num: # pattern 1 case 1: print('One') # pattern 2 case 2: print('Two') # pattern 3 case 3: print('Three') # default pattern case _: print('Number not between 1 and 3') runMatch()>
Вихід:
Enter a number between 1 and 3: 5 Number not between 1 and 3>
Інструкція збігу регістру з оператором OR
Відмінок сірника оператори в Python призначені лише для зіставлення шаблонів і конкретних ключових слів або параметрів. Але ми також можемо використовувати інструкцію match case в python, коли є більше ніж один case, що призводить до однакового результату. У цьому випадку ми можемо використовувати оператор конвеєра, також відомий як оператор АБО в інструкції збігу.
приклад: У цьому прикладі ми попросимо користувача ввести значення від 1 до 6. Потім, використовуючи регістр збігу з оператором OR, ми об’єднали пари в один регістр 1, кожна з яких буде відображати відповідне число словами.
Python # python match case with OR operator def runMatch(): num = int(input('Enter a number between 1 and 6: ')) # match case match num: # pattern 1 case 1 | 2: print('One or Two') # pattern 2 case 3 | 4: print('Three or Four') # pattern 3 case 5 | 6: print('Five or Six') # default pattern case _: print('Number not between 1 and 6') runMatch()>
Вихід:
Enter a number between 1 and 6: 4 Three or Four>
Зіставте оператор Case з умовою Python If
Ми також можемо використовувати Умова Python If разом із інструкцією match case, коли замість відповідності точного значення ми використовуємо умову. Відповідно до умови, якщо значення має значення True і відповідає шаблону регістру, блок коду виконується.
приклад: У цьому прикладі ми використаємо умову if разом із інструкцією match case, щоб перевірити, чи введене число з ідентифікатором користувача додатним, від’ємним або нульовим.
Python # python match case with if condition def runMatch(): num = int(input('Enter a number: ')) # match case match num: # pattern 1 case num if num>0: print('Позитивний') # шаблон 2 case num якщо num< 0: print('Negative') # default pattern case _: print('Zero') runMatch()>
Вихід:
Enter a number: -15 Negative>
Зіставте регістр із шаблоном послідовності
Інструкції Python match case зазвичай використовуються для зіставлення шаблонів послідовності, таких як списки та рядки. Це досить легко і може використовувати позиційні аргументи для перевірки шаблонів.
кіноактор віджай
приклад: У цьому прикладі ми використовуємо рядок python, щоб перевірити, чи присутній символ у рядок або не використовувати регістр збігів. Ми надаємо рядок разом з індексом символу, який ми хочемо перевірити в рядку, щоб відповідати регістру. Потім ми визначили випадки збігу щодо того, яким символом може бути.
Python # match case to check a character in a string def runMatch(): myStr = 'Hello World' # match case match (myStr[6]): case 'w': print('Case 1 matches') case 'W': print('Case 2 matches') case _: print('Character not in the string') runMatch()>
Вихід:
Case 2 matches>
приклад: У цьому прикладі ми використовуємо a список python для підбору шаблонів. Ми зіставляємо перший елемент втраченого, а також використовуємо позиційні аргументи, щоб відповідати решті списку.
Python # python match case with list def runMatch(mystr): # match case match mystr: # pattern 1 case ['a']: print('a') # pattern 2 case ['a', *b]: print(f'a and {b}') # pattern 3 case [*a, 'e'] | (*a, 'e'): print(f'{a} and e') # default pattern case _: print('No data') runMatch([]) runMatch(['a']) runMatch(['a', 'b']) runMatch(['b', 'c', 'd', 'e'])>
Вихід:
No data a a and ['b'] ['b', 'c', 'd'] and e>
Зіставте регістр із словником Python
Python може обробляти оператори збігу регістру словник так само. Він може збігатися з одним або кількома ключами. Ключі та значення мають міститися в словнику. Якщо є будь-яке неправильне значення або будь-який ключ, який не існує та не відповідає фактичному словнику та значенню, цей регістр буде відкинуто.
приклад: У цьому прикладі ми використовуємо словник із інструкцією match case у python. Ми надаємо словники з різними даними для відповідності регістру, і він відповідатиме ключам словника з різними наданими регістрами.
Python # match case with python dictionaryu def runMatch(dictionary): # match case match dictionary: # pattern 1 case {'name': n, 'age': a}: print(f'Name:{n}, Age:{a}') # pattern 2 case {'name': n, 'salary': s}: print(f'Name:{n}, Salary:{s}') # default pattern case _ : print('Data does not exist') runMatch({'name': 'Jay', 'age': 24}) runMatch({'name': 'Ed', 'salary': 25000}) runMatch({'name': 'Al', 'age': 27}) runMatch({})>
Вихід:
Name:Jay, Age:24 Name:Ed, Salary:25000 Name:Al, Age:27 Data does not exist>
Зіставте оператор Case з класом Python
Ми також можемо використовувати Класи Python для зіставлення регістрів за допомогою інструкцій Python match case. Це зробить код дуже чистим, акуратним і, що більш важливо, легким для читання. Він використовує модуль класів даних Python.
приклад: У цьому прикладі ми створили два класи під назвою Person і Programmer. Першою думкою після перегляду оператора збігу було б, що Програміст і Людина в операторі збігу створять екземпляр відповідних класів, але це не так. Він перевірить екземпляр із заданими значеннями. Таким чином, випадок Programmer(Om, мова = Python, framework = Django) не створить екземпляр, але перевірить, чи переданий об’єкт, ім’я якого є instance, є справжнім екземпляром класу Programmer, тоді він перевірить ім’я Om , мова, яка є Python, а потім фреймворк, який є Django. Таким чином ми можемо перевірити значення в екземплярі будь-якого класу.
Python # match case with python classes # import dataclass module from dataclasses import dataclass #Class 1 @dataclass class Person: name: str age: int salary: int # class 2 @dataclass class Programmer: name: str language: str framework: str def runMatch(instance): # match case match instance: # pattern 1 case Programmer('Om', language='Python', framework='Django'): print(f'Name: Om, Language:Python, Framework:Django') # pattern 2 case Programmer('Rishabh', 'C++'): print('Name:Rishabh, Language:C++') # pattern 3 case Person('Vishal', age=5, salary=100): print('Name:Vishal') # pattern 4 case Programmer(name, language, framework): print(f'Name:{name}, Language:{language}, Framework:{framework}') # pattern 5 case Person(): print('He is just a person !') # default case case _: print('This person is nothiing!') programmer1 = Programmer('Om', 'Python', 'Django') programmer2 = Programmer('Rishabh', 'C++', None) programmer3 = Programmer('Sankalp', 'Javascript', 'React') person1 = Person('Vishal', 5, 100) runMatch(programmer1) runMatch(programmer2) runMatch(person1) runMatch(programmer3)>
Вихід:
Name: Om, Language:Python, Framework:Django Name:Rishabh, Language:C++ Name:Vishal Name:Sankalp, Language:Javascript, Framework:React>
Питання та відповіді щодо відповідності Python
З: Що таке оператор регістру збігів у Python?
Відповідь: Оператор match-case, також відомий як зіставлення шаблону, є функцією, представленою в Python 3.10. Він забезпечує стислий і виразний спосіб виконання зіставлення шаблонів для структур даних, таких як кортежі, списки та класи. Це дозволяє зіставити значення виразу з низкою шаблонів і виконати відповідний блок коду для відповідного шаблону.
З: Чим оператор збігу відрізняється від операторів if-elif-else?
A: Інструкція match-case є більш потужною та виразною конструкцією порівняно з операторами if-elif-else. Якщо оператори if-elif-else покладаються на логічні вирази, оператори match-case можуть відповідати шаблонам на основі структури та значення даних. Інструкції Match-case забезпечують більш структурований і зрозумілий спосіб обробки кількох умов і виконання різних дій на основі цих умов.
З: Які переваги використання оператора match-case?
A: Інструкція match-case пропонує кілька переваг, зокрема:
- Лаконічність: Інструкції зі збігом регістру дозволяють вам виразити складну логіку розгалуження в стислій та зрозумілій формі.
- Читабельність: зіставлення шаблонів робить код більш читабельним і зрозумілим, оскільки він дуже нагадує проблемну область.
- Безпека. Інструкції Match-case забезпечують повне зіставлення шаблонів, забезпечуючи обробку всіх можливих випадків.