DevGang
Авторизоваться

Лямбда-функции с примерами и обработкой ошибок

Синтаксис лямбда-функции.
Синтаксис лямбда-функции.

Существует более гибкий способ записи функций на лету, и они называются лямбда-функциями. Это потому, что мы используем ключевое слово lambda. Например, мы пишем функцию, называемую  raise_number_to_power лямбда-функцией. После ключевого слова лямбда мы указываем имена аргументов, то есть x и y. Затем мы используем двоеточие, за которым следует выражение, определяющее, что мы хотим вернуть функцией.

Лямбда-функции позволяют писать немедленные функции грязными способами, поэтому я бы не рекомендовал вам использовать их постоянно, но бывают ситуации, когда они могут оказаться очень полезными. Например, функция map, которая принимает два аргумента. 

Лямбда в функции карты
Лямбда в функции карты

Мы можем переносить лямбда-функции на карту, даже не называя их, и в этом случае мы называем их анонимными функциями. Например, мы используем карту лямбда-функции, которая возводит в квадрат все элементы списка, и вы сохраните результат в переменной square. При печати переменной square выясняется, что это объект карты. Чтобы увидеть, что он содержит, мы используем список функций, чтобы превратить его в список и распечатать результаты. Как и ожидалось, это список, содержащий квадраты элементов исходного списка.

Обработка ошибок

Если вы неправильно используете функцию, это должно вызвать ошибку. Например, обратите внимание на функцию float, которая возвращает число с плавающей запятой из числа или строки. Когда вы передаете функции float целочисленное значение, возвращается соответствующее float. Аналогично, если вы дадите ему строку 8.7, он вернет значение float.

Неправильное использование функции вернет ошибку
Неправильное использование функции вернет ошибку

Однако, если вы передадите ему строку hello, Python выдаст ошибку, показывая, что он не может преобразовать строку в float. В этом случае он отбросил ValueError, и существует много типов ошибок. Когда мы пишем наши функции, мы, возможно, захотим обнаружить определенные проблемы и написать конкретные сообщения об ошибках. Давайте посмотрим на пользовательскую функцию, которая вычисляет квадратный корень из числа. С целыми числами он работает должным образом. Каковы результаты, если мы передадим ему строку, например hello? Это вызовет ошибку, соответствующую строке кода в определении функции.

Преобразуйте строку в ошибку с плавающей запятой.
Преобразуйте строку в ошибку с плавающей запятой.

В этой ошибке говорится, что это была ошибка TypeError, но сообщение может быть не особенно полезным для пользователя нашей функции, поэтому мы должны попытаться предоставить полезные сообщения об ошибках для функций, которые мы пишем.

Основным методом перехвата таких исключений является предложение try-except, в котором Python пытается запустить код после попытки, и если это возможно, все в порядке. Если он не может работать из-за исключения, он запускает код исключения. Давайте теперь перепишем нашу функцию square_root, но на этот раз перехватим все возникшие исключения. В приведенном примере мы попытаемся выполнить x в степени 0,5. Используя except, в случае исключения печатаем x must be an int or float. Мы видим, что получившаяся функция хорошо работает для целых и плавающих чисел и выводит то, что мы хотели, для строки.

Перехват TypeError с сообщением.
Перехват TypeError с сообщением.

Мы также можем захотеть  перехватить только TypeError и пропустить другие ошибки, и в этом случае мы будем использовать все кроме TypeError. Можно обнаружить множество различных типов исключений, и вы можете просмотреть их в документации Python, доступной в Интернете. Вместо того, чтобы печатать сообщение об ошибке, вы захотите вызвать ошибку, используя ключевое слово raise.

Возбуждение ValueError с условиями.
Возбуждение ValueError с условиями.

Например, функция square_root делает то, что нам может не понадобиться при применении к отрицательным числам. Она возвращает комплексное число, которое нам может не понадобиться. Допустим, мы не хотим, чтобы наша функция работала с отрицательными числами. Используя предложение if, мы можем поднять ValueError для случаев, когда пользователь передает функции отрицательное число. Если мы дадим нашей новой функции отрицательное число, увидим, что она вернет предписанное ValueError.

Источник:

#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу