Использовать или нет моржовый оператор на 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

Использовать или нет моржовый оператор на Python? | Сетка — социальная сеть от hh.ru