Использовать или нет моржовый оператор на Python?
✒️ Об этом размышляет KDnuggets . Почему ⁉️
⚠️ Потому что с одной стороны медали возможное присвоение значения переменной внутри выражения, а на другой - читаемость кода и от себя добавлю экономия памяти:
✴️На одной стороне: как показано на картинке ниже, упрощение кода до одной-двух строчек кода и несомненно экономия памяти;
✴️На другой стороне: не следует использовать вложенность для этого оператора, что усложняет восприятия кода, в данном случае, заполнение результирующего списка:
# Function to compute profit
def compute_profit(sales, cost):
return sales - cost
# Messy list comprehension with nested walrus operator
sales_data = [(100, 70), (200, 150), (150, 100), (300, 200)]
results = [
(sales, cost, profit, sales_ratio)
for sales, cost in sales_data
if (profit := compute_profit(sales, cost)) > 50
if (sales_ratio := sales / cost) > 1.5
if (profit_margin := (profit / sales)) > 0.2
]
Поэтому, как мне кажется, все равно выбор остаётся за Вами: лёгкость восприятия, читаемость или экономия памяти.
Краткая справка
👆Моржовый оператор(Walrus operator) был введен в Python 3.8 с целью помочь писать лаконичный и читаемый код ( в некоторых случаях). Однако, использовать его нужно с осторожностью, потому что можно сделать код трудно читаемым и сложным для восприятия. В тоже время, можно экономить память, так как отсутствуют лишние модификации переменных и как результат -- затраты памяти из-за сложной модели памяти⤵️
Картинка взята с KDnuggets
еще контент автора
еще контент автора
войдите, чтобы увидеть
и подписаться на интересных профи