Рубрики
Без рубрики

Python одна линия обработки исключений

Резюме: Вы можете выполнить одну обработку исключений в соответствии с обходной частью с EXEC (), передавая односилиризованную попытку / кроме блока в виде строки в такую функцию: EXEC («попробуйте: Print (X) \ Nexcept: Print (« Исключение ». ! “)”). Этот общий метод работает для всех пользовательских, даже многострочных, попробуйте и кроме блоков. Однако вы должны избегать этого кода одноклассника из-за плохой читаемости. Удивительно, что есть … Python One Line Exception Обработка Подробнее »

Автор оригинала: Chris.

Резюме : Вы можете выполнить одну очередную обработку исключений с EXEC () обходное отзывание, передавая одноищерированный попробуйте / кроме Блокировка как строка в такую функцию: EXEC («Попробуйте: Print (X) \ Nexcept: Печать (« Исключение! »)«) Отказ Этот общий метод работает для всех пользовательских, даже многострочных, попробуйте и кроме блоков. Однако вы должны избегать этого кода одноклассника из-за плохой читаемости.

Удивительно, удивительно, было обсуждение Около однострочной обработки исключений на официальном списке рассылки Python в 2013 году. Однако с тех пор в Python в Python не было новых функций «однонаправленного исключения» в Python. Итак, нам нужно придерживаться методами, показанными в этом руководстве. Но они будут веселыми обещанными!

Давайте погрузимся в проблему:

Проблема : Как написать попробовать/кроме блока в одной строке кода Python?

Пример : Рассмотрим следующую попытку/кроме блока.

try:
    print(x)
except:
    print('Exception!')

Решение Перед тем, как мы погрузимся в каждый из трех методов, чтобы решить эту проблему, давайте будем быстрым обзором в нашем интерактивном коде оболочке:

Упражнение : Запустите код. Почему только три строки вывода? Измените код такого, что каждый из четырех методов генерирует вывод!

Метод 1: Темнарный оператор

Следующий метод для замены простой попытки/кроме оператора основан на тройном операторе.

Торговый оператор фон : Самый простой тройной оператор х если с остальными y состоит из трех операндов х , C . и y Отказ Это выражение с возвращаемой стоимостью. Темнарный оператор возвращает х Если логическое выражение C . оценивает Правда Отказ В противном случае, если выражение C . оценивает Ложь Торговый оператор возвращает альтернативу y Отказ

Вы можете использовать dir () Функция, чтобы проверить, название переменной 'x' уже был определен с использованием условия 'x' в Dir () Отказ Если условие оценивает Правда Вы запускаете блок попробовать. Если это оценивает Ложь , вы запускаете кроме блока.

# Method 1
print(x) if 'x' in dir() else print('Exception!')

Выход этого фрагмента кода как автономный код:

Exception!

Это потому, что переменная х не определен, и он не отображается в каталоге имени переменной:

print(dir())
# ['__annotations__', '__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']

Например, если вы заранее определяете переменную X, код будет проходить через:

x = 2
print(x) if 'x' in dir() else print('Exception!')

Недостатком этой техники является то, что вам нужно знать, какие исключения могут возникнуть. Кроме того, становится сложнее выразить многострочную попытку, кроме блоков. В этом случае часто лучше использовать явную попытку/кроме утверждений в первую очередь!

Способ 2: EXEC ()

EXEC () Функция принимает строку и запускает строку, как если бы она была часть исходного кода. Таким образом, вы можете сжать любой алгоритм в одну строку. Вы также можете сжать попытку/кроме оператора в одну строку кода таким образом!

# Method 2
exec('try:print(x)\nexcept:print("Exception!")')

Если вы бы определили переменную X заранее, результат будет другим:

exec('x=2\n' + 'try:print(x)\nexcept:print("Exception!")')
# 2

Теперь определяется переменная 2 и блок TRY BLOCK из оператора работает без исключения.

Способ 3: ContextLib Suppress + с оператором

Если вы на самом деле не заинтересованы в кроме первой части, и вам просто нужно делать исключения, этот метод может быть для вас:

# Method 3
from contextlib import suppress
with suppress(NameError): print(x)

Вы используете с блоком и напишите его в одну строку Отказ Объект, который вы проходите в блок, должны определить две функции __enter __ () и __exit __ () Отказ Вы используете подавить () Метод от Contextlib Пакет для создания такого объекта (так называемый менеджер контекста ), который подавляет возникновение NameError. Красота с блоком состоит в том, что она гарантирует, что все ошибки на с Объект обрабатывается, и объект правильно закрыт через __exit __ () метод.

Недостатком или преимущество-в зависимости от ваших предпочтений – это то, что нет, кроме блока.

Спасибо за чтение этого руководства в блоге! 🙂.

Python One-Liners Книга

Python Programmemers улучшит свои навыки информатики с этими полезными одноклассниками.

Python One-listers научит вас читать и писать «одноклассники»: краткие заявления полезных функций, упакованных в одну строку кода. Вы узнаете, как систематически распаковать и понимать любую строку кода Python и писать красноречие, мощно сжатый Python, как эксперт.

Пять главных глав на пять глав обложки советы и трюки, регулярные выражения, машинное обучение, самые темы науки о данных и полезные алгоритмы. Подробные объяснения одноклассников вводят ключевые концепции компьютерных наук и повысить ваши кодировки и аналитические навыки. Вы узнаете о продвинутых функциях Python, такие как понимание списка, нарезки, нарезки, функции лямбда, регулярные выражения, карта и уменьшения функций и нарезки нарезки. Вы также узнаете, как:

Используйте структуры данных для решения реальных проблем, такие как использование булевой индексации для поиска городов с загрязнением выше среднего Используйте Numpy Basics, такие как массив, форма, ось, тип, вещание, расширенная индексация, нарезка, сортировка, поиск, агрегация и статистика Рассчитайте базовую статистику многомерных массивов данных и алгоритмы K-означает для безоговорочного обучения Создайте более усовершенствованные регулярные выражения с помощью группировки и названных групп, отрицательные LookAeads, сбежавшие символы, пробелы, наборы символов (и наборы отрицательных символов) и жадные/негридические операторы Понимать широкий ассортимент темы компьютерных наук, включая анаграммы, палиндромы, сверты, перестановки, факториалы, простые числа, цифры фибоначчи, обфускации, поиск и алгоритмическую сортировку

К концу книги вы узнаете, как писать Python в его самых утонченных, и создавать краткие, красивые куски «Python Art» в простой строке.

Получите свой Python One-Liners сейчас !!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.