Чтобы назначить результат функции get_value ()
Переменную х
Если он отличается от Нет
Используйте оператор Walrus Если TMP ():
в пределах одной линии, если блок. Оператор Walrus назначает возвращаемое значение функции переменной TMP
и возвращает его одновременно, чтобы вы могли проверить и назначить его переменным х
впоследствии.
Проблема : Как назначить значение переменной, если оно не равно Нет
-Угибая только одна строка кода Python?
Пример : Скажем, вы хотите назначить возвращаемое значение функции get_value (), но только если она не возвращает ничего. В противном случае вы хотите оставить ценность, как есть. Вот пример кода:
import random def get_value(): if random.random()>0.5: return None return 1 # Naive approach: x = 42 tmp = get_value() if tmp != None: x = tmp print(tmp)
Пока это работает, вам нужно выполнить функцию get_value ()
дважды, что не является оптимальным. Альтернатива будет назначать результат get_value ()
Функция для временной переменной, чтобы избежать повторного выполнения функции:
x = 42 temp = get_value() if temp != None: x = temp print(x)
Однако это кажется неуклюжем и неэффективным. Есть ли способ лучше?
У даваем обзор одноклассников, которые условно назначают значение заданной переменной:
Упражнение : Запустите код. Это всегда генерирует тот же результат?
Метод 1: Темнарный оператор + точка запятой
Самый основной Тернарный оператор х если с остальными y
состоит из трех операндов х
, C
и y
Отказ Это выражение с возвращаемой стоимостью. Темнарный оператор возвращает х
Если логическое выражение C
оценивает Правда
Отказ В противном случае, если выражение C
оценивает Ложь
Торговый оператор возвращает альтернативу y
Отказ
Вы можете использовать Ternary Operator для решения этой проблемы в сочетании с Semicolon для записи нескольких строк кода в виде Python One-Liner.
# Method 1 tmp = get_value(); x = tmp if tmp else x
Вы не можете запустить get_value ()
Функция дважды – проверить, возвращает ли она Правда
и назначить возвращаемое значение для переменной х
Отказ Почему? Потому что это неразмерное и может вернуть разные значения для разных исполнений.
Следовательно, следующий код будет тупому ошибкой:
x = get_value() if get_value() else x
Переменная х
Может все еще быть Нет
-Вен после того, как действующий оператор, по-видимому, проверил состояние.
Статьи по Теме:
- Python Ternary.
- Python One-Line, если утверждение
- Python Semicolon
Способ 2: Walrus + One-Line-если
Красивое расширение Python 3.8 это Оператор Walrus Отказ Оператор Walrus : =
является оператором назначения с возвратным значением. Таким образом, это позволяет проверить условие и присвоение значения одновременно:
# Method 2 if tmp := get_value(): x = tmp
Это очень чистый, читаемый и пифитонический путь. Кроме того, у вас нет избыточного назначения идентичности в случае, если условие, если не выполнено.
Связанная статья: Оператор Walrus в Python 3.8
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 и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.