match по полной?match case — собрат if-else, но одна из фишек оператора заключается в том, что он поддерживает деконструкцию (destructuring). То есть он может использовать шаблон, чтобы извлекать значения из сложных объектов, таких как кортежи или словари.
Например:
def make_point(point): match point: case(x, y): return Point3D(x, y, 0) case (x, y, z): return Point3D(x, y, z) case _: raise TypeError("Нет координат") >>> make_point((1, 2))Point3D(x=1, x=2, z=0)>>> make_point((1, 2, 3))Point3D(x=1, x=2, z=3)>>> make_point((1, 2, 3, 4))TypeError: Нет координатТеперь
make_point() способна справиться с неполными данными. Если первый раз она приняла все три параметра, то в последующие уже справлялась с недостатком и переизбытком. С такой функцией вы значительно понизите шансы на падение программы и не потратите на обработку всех ситуаций много времени.
#лучшиепрактики