logo

Python Match gadījuma paziņojums

Izstrādātāji no tādām valodām kā C/C++ vai Java zina, ka pastāv nosacījuma paziņojums, kas pazīstams kā a Slēdža futrālis . Šis Sērkociņu futrālis ir Python Switch Case, kas tika ieviests Python 3.10. Šeit mums vispirms ir jānodod parametrs un pēc tam jāmēģina pārbaudīt, kurā gadījumā parametrs tiek apmierināts. Ja mēs atradīsim atbilstību, mēs izpildīsim kādu kodu, un, ja atbilstības nebūs, tiks veikta noklusējuma darbība.

Python atbilstības gadījuma paziņojuma sintakse

Atbilstības gadījuma paziņojums Python tiek inicializēts ar atbilst atslēgvārdu, kam seko atbilstības parametrs. Pēc tam tiek definēti dažādi gadījumi, izmantojot lietu atslēgvārdu un modeli, kas atbilst parametram. The _ ir aizstājējzīme, kas tiek izpildīta, ja visi gadījumi neatbilst parametra vērtībai.



match parameter: case pattern1: # code for pattern 1 case pattern2: # code for pattern 2 . . case patterN: # code for pattern N case _: # default code block>

Satura rādītājs

java tīmekļa pakalpojumi

Tagad apskatīsim dažus piemērus, lai uzzinātu, kā Python darbojas atbilstības gadījuma paziņojums.

Vienkāršs atbilstības gadījuma paziņojums

Vienkāršā Python atbilstības gadījuma paziņojumā precīzā vērtība tiek salīdzināta un saskaņota ar gadījuma modeļa vērtību. Ir dažādi testa gadījumi un tiem atbilstošais kods, kas tiks izpildīts tikai tad, kad gadījums tiks saskaņots. Pretējā gadījumā pastāv noklusējuma gadījums, kas tiek izpildīts, ja visi definētie gadījumi nav saskaņoti.



Piemērs: Šajā piemērā mēs lūgsim lietotājam ievadīt vērtību no 1 līdz 3 un parādīt tai atbilstošo skaitli vārdos, izmantojot vienkāršu atbilstības reģistra paziņojumu.

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()>

Izvade:

Enter a number between 1 and 3: 5 Number not between 1 and 3>

Saskaņojiet gadījuma paziņojumu ar VAI operatoru

Match case Python paziņojums ir paredzēts tikai modeļu un konkrētu atslēgvārdu vai parametru saskaņošanai. Bet mēs varam arī izmantot atbilstības gadījuma priekšrakstu programmā python, ja ir vairāk nekā viens gadījums, kas rada vienu un to pašu izvadi. Šajā gadījumā mēs varam izmantot caurules operatoru, kas atbilstības gadījuma paziņojumā pazīstams arī kā VAI operators.



Piemērs: Šajā piemērā mēs lūgsim lietotājam ievadīt vērtību no 1 līdz 6. Pēc tam, izmantojot atbilstības reģistru ar operatoru VAI, mēs esam apvienojuši pārus pa 1 gadījumu, kas parādīs atbilstošo skaitli vārdos.

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()>

Izvade:

Enter a number between 1 and 6: 4 Three or Four>

Saskaņojiet gadījuma paziņojumu ar Python If nosacījumu

Mēs arī varam izmantot Python If nosacījums kopā ar atbilstības reģistra paziņojumu, kad tā vietā, lai noteiktu precīzu vērtību, mēs izmantojam nosacījumu. Pamatojoties uz nosacījumu, ja vērtība ir True un atbilst gadījuma modelim, tiek izpildīts koda bloks.

Piemērs: Šajā piemērā mēs izmantosim nosacījumu if kopā ar atbilstības reģistra paziņojumu, lai pārbaudītu, vai cipars ievadīts bt lietotāja ID pozitīvs, negatīvs vai nulle.

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('Positive') # pattern 2 case num if num< 0: print('Negative') # default pattern case _: print('Zero') runMatch()>

Izvade:

Enter a number: -15 Negative>

Saskaņojiet korpusu ar secības modeli

Python atbilstības reģistra paziņojumi parasti tiek izmantoti, lai saskaņotu secības modeļus, piemēram, sarakstus un virknes. Tas ir diezgan vienkārši un var izmantot pozicionālus argumentus, lai pārbaudītu modeļus.

Piemērs: Šajā piemērā mēs izmantojam python virkni, lai pārbaudītu, vai rakstzīme ir klāt virkne vai neizmantojot sērkociņu futrāli. Mēs nodrošinām virkni kopā ar rakstzīmes indeksu, kuru vēlamies pārbaudīt virknē ar atbilstības reģistru. Pēc tam mēs definējām atbilstības gadījumus, lai noskaidrotu, kas varētu būt šis varonis.

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()>

Izvade:

virkne java satur
Case 2 matches>

Piemērs: Šajā piemērā mēs izmantojam a python saraksts paraugu saskaņošanai. Mēs saskaņojam pirmo zaudēto elementu un arī izmantojām pozicionālos argumentus, lai atbilstu pārējam sarakstam.

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'])>

Izvade:

No data a a and ['b'] ['b', 'c', 'd'] and e>

Saskaņojiet gadījuma paziņojumu ar Python vārdnīcu

Python atbilstības gadījuma paziņojumus var apstrādāt vārdnīca arī. Tas var atbilst vienai atslēgai vai vairākiem taustiņiem. Atslēgām un vērtībām ir jāatrodas vārdnīcā. Ja ir kāda nepareizi novietota vērtība vai atslēga, kas neeksistē un neatbilst faktiskajai vārdnīcai un vērtībai, šis gadījums tiks atmests.

Piemērs: Šajā piemērā mēs izmantojam vārdnīcu ar atbilstības reģistru python. Mēs nodrošinām vārdnīcas ar dažādiem datiem atbilstoši atbilstības gadījumam, un vārdnīcas atslēgas tiks saskaņotas ar dažādiem sniegtajiem gadījumiem.

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({})>

Izvade:

Name:Jay, Age:24 Name:Ed, Salary:25000 Name:Al, Age:27 Data does not exist>

Saskaņojiet gadījuma paziņojumu ar Python klasi

Varam arī izmantot Python nodarbības lai saskaņotu gadījumus, izmantojot Python atbilstības gadījumu paziņojumus. Tas padarīs kodu ļoti tīru, glītu un, vēl svarīgāk, viegli lasāmu. Tas izmanto Python datu klašu moduli.

Piemērs: Šajā piemērā mēs izveidojām divas klases ar nosaukumu Persona un Programmētājs. Pirmā doma pēc atbilstības paziņojuma redzēšanas būtu tāda, ka Programmētājs un Persona atbilstības paziņojumā izveidotu attiecīgo klašu instanci, taču tā nav. Tas pārbaudīs gadījumu ar norādītajām vērtībām. Tātad gadījumā Programmētājs (Om, valoda = Python, framework = Django) neizveidos gadījumu, bet pārbaudīs, vai nodotais objekts, kura nosaukums ir instance, ir reāls Programmer klases gadījums, tad tas pārbaudīs nosaukumu, kas ir Om. , valoda, kas ir Python, un pēc tam sistēma, kas ir Django. Tādā veidā mēs varam pārbaudīt vērtības jebkuras klases gadījumā.

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)>

Izvade:

Name: Om, Language:Python, Framework:Django Name:Rishabh, Language:C++ Name:Vishal Name:Sankalp, Language:Javascript, Framework:React>

Python Match Case Statement FAQ

J: Kāds ir atbilstības gadījuma paziņojums Python?

A. Atbilstības reģistra paziņojums, kas pazīstams arī kā modeļu saskaņošana, ir Python 3.10 ieviesta funkcija. Tas nodrošina kodolīgu un izteiksmīgu veidu, kā veikt modeļu saskaņošanu datu struktūrās, piemēram, korežos, sarakstos un klasēs. Tas ļauj saskaņot izteiksmes vērtību ar modeļu sēriju un izpildīt atbilstošā modeļa atbilstošo koda bloku.

J: Kā atbilstības gadījuma paziņojums atšķiras no paziņojumiem if-elif-else?

A: Saskaņošanas gadījuma paziņojums ir spēcīgāks un izteiksmīgāks, salīdzinot ar paziņojumiem if-elif-else. Lai gan if-elif-else priekšraksti balstās uz Būla izteiksmēm, reģistra atbilstības priekšraksti var saskaņot modeļus, pamatojoties uz datu struktūru un vērtību. Atbilstības gadījuma paziņojumi nodrošina strukturētāku un lasāmāku veidu, kā rīkoties ar vairākiem nosacījumiem un veikt dažādas darbības, pamatojoties uz šiem nosacījumiem.

J: Kādas ir atbilstības gadījuma paziņojuma izmantošanas priekšrocības?

A. Atbilstības gadījuma paziņojums piedāvā vairākas priekšrocības, tostarp:

  • Īsums: reģistra sakritības paziņojumi ļauj kodolīgi un lasāmā veidā izteikt sarežģītu sazarojumu loģiku.
  • Lasāmība: modeļu saskaņošana padara kodu lasāmāku un pašsaprotamāku, jo tas ļoti līdzinās problēmas domēnam.
  • Drošība: gadījuma atbilstības paziņojumi nodrošina izsmeļošu modeļu saskaņošanu, nodrošinot, ka tiek apstrādāti visi iespējamie gadījumi.