Loading...
Python

Կարող եք ձեր կոդը փորձարկել այստեղ

Python

Գլուխ 8. Pattern matching

Փոխանունների և AS օրինաչափության կարգավորում

As օպերատորը թույլ է տալիս սահմանել այլանուն կաղապարի արժեքի կամ ամբողջ ձևանմուշի համար: Ամենապարզ օրինակը.
def print_person(person): match person: case "Tom" | "Tomas" | "Tommy" as name: print(f"Name: {name}") case _: print("Undefined") print_person("Tom") # Name: Tom print_person("Tomas") # Name: Tomas print_person("Bob") # Undefined
Այստեղ առաջին օրինաչափությունը համապատասխանում է երեք տողերի՝ «Թոմ» | «Տոմաս» | «Թոմի» Արժեքների հավաքածուից հետո գալիս է որպես օպերատորը , որին հաջորդում է մականունը: Եվ անկախ նրանից, թե որ տողը կփոխանցվի, այն կհայտնվի անվան փոփոխականում։

Այլանունը կարող է օգտագործվել մեկ կաղապարի արժեքի կամ ամբողջ ձևանմուշի համար.
def print_person(person): match person: case ("Tom" | "Tomas" as name, 37 | 38 as age): print(f"Tom| Name: {name} Age: {age}") case ("Bob" | "Robert", 41 | 42) as bob: print(f"Bob| Name: {bob[0]} Age: {bob[1]}") case _: print("Undefined") print_person(("Tomas", 38)) # Tom| Name: Tomas Age: 38 print_person(("Robert", 41)) # Bob| Name: Robert Age: 41
Սովորաբար, փոխանունները ավելի կիրառելի են որոշ տվյալների կառուցվածքում, որն ավելի բարդ է: Օրինակ:
class Person: __match_args__ = ("name", "age") def __init__(self, name, age): self.name = name self.age = age def print_family(family): match family: case (Person() as husband, Person() as wife): print(f"Husband. Name: {husband.name} Age: {husband.age}") print(f"Wife. Name: {wife.name} Age: {wife.age}") case _: print("Undefined") print_family((Person("Tom", 37), Person("Alice", 33))) # Husband. Name: Tom Age: 37 # Wife. Name: Alice Age: 33 print_family((Person("Sam", 28), Person("Kate", 25))) # Husband. Name: Sam Age: 28 # Wife. Name: Kate Age: 25
Այստեղ print_family ֆունկցիան ընդունում է բազմակի, որը պետք է բաղկացած լինի երկու Անձի տարրերից։ Առաջին կաղապարում առաջին տարրի համար մենք սահմանում ենք alias ամուսինը, իսկ երկրորդի համար՝ կինը: Այնուհետև մենք կարող ենք մուտք գործել դրանց ատրիբուտներ՝ օգտագործելով այս անունները:

Մեկնաբանություն գրելու համար խնդրում ենք մուտք լինել