Size: a a a

2019 July 17

💭П

💭 Руслан Прохоров in rannts
То, что в момент проверки у тебя может быть присвоение, это вообще дикость.
источник

💭П

💭 Руслан Прохоров in rannts
a = foo(bar)
if a:
   pass


VS

if a:=foo(bar)
   pass
источник

RB

Roman Bolkhovitin in rannts
да норм же )
источник

💭П

💭 Руслан Прохоров in rannts
Первое мне нравится лучше! Так, как это на порядок легче дебажить.
источник

💭П

💭 Руслан Прохоров in rannts
Roman Bolkhovitin
да норм же )
Это не Python! Еретик!
источник

RB

Roman Bolkhovitin in rannts
ну и вот такие кейсы тоже никто не отменял )
источник

RB

Roman Bolkhovitin in rannts
привет.

а подскажите пожалуйста кто знает, а то не знаю как для гугла сформулировать
если я пишу что то типа
items = (f(x) for x in some_collection if f(x) is not None)

питон f(x) два раза для каждого x будет считать или там есть какая-нибудь оптимизация на этот счет?
источник

RB

Roman Bolkhovitin in rannts
Ты можешь сделать

items = filter(None, f(x) for x in some_collection)
источник

RB

Roman Bolkhovitin in rannts
да, могу.
а это как-то будет отличаться от:

items = (f(x) for x in some_collection)
not_none_items = (x for x in items if x is not None)

?
источник

RB

Roman Bolkhovitin in rannts
Автор питона Гвидо, был мученески распят дабы помочь людям в таких кейсах. В Python 3.8 это можно будет реализовать вот так
items = (
   r for x in some_collection
   if r:=f(x) is not None
)
источник

RB

Roman Bolkhovitin in rannts
💭 Руслан Прохоров
Это не Python! Еретик!
Православны только Си и Хаскель. Все мы еретики ))
источник

AM

Artem Malyshev in rannts
Haskell, ага, ха-ха
источник

💭П

💭 Руслан Прохоров in rannts
Roman Bolkhovitin
Автор питона Гвидо, был мученески распят дабы помочь людям в таких кейсах. В Python 3.8 это можно будет реализовать вот так
items = (
   r for x in some_collection
   if r:=f(x) is not None
)
Дикость!
источник

RB

Roman Bolkhovitin in rannts
ну ты и ретроград )
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
💭 Руслан Прохоров
a = foo(bar)
if a:
   pass


VS

if a:=foo(bar)
   pass
Не самый удачный пример для того, что бы разглядеть плюсы использования :=
Вот этот лучше будет:

buf = f.read(256)
while buf:
   ...
   buf = f.read(256)
VS
while buf := f.read(256):
   ...

И это ещё простой код, когда только одна строчка дублируется.
Периодически спотыкаюсь об это, пытаюсь выкрутится что бы не было дублирования кода, но ни как не получается.
Ну и примеры про генераторы тоже хорошо показывают пользу от :=
источник

ИБ

Игорь Бесчастнов in rannts
Artem Malyshev
Haskell, ага, ха-ха
а что с ним не так?
источник

ИБ

Игорь Бесчастнов in rannts
насчет := вставлю свои 5 копеек и скажу что по-моему тоже весьма удобная вещь
источник

in

ildar nizamov in rannts
Kirill (Cykooz) Kuzminykh
Не самый удачный пример для того, что бы разглядеть плюсы использования :=
Вот этот лучше будет:

buf = f.read(256)
while buf:
   ...
   buf = f.read(256)
VS
while buf := f.read(256):
   ...

И это ещё простой код, когда только одна строчка дублируется.
Периодически спотыкаюсь об это, пытаюсь выкрутится что бы не было дублирования кода, но ни как не получается.
Ну и примеры про генераторы тоже хорошо показывают пользу от :=
а в 3.9 введут ++ и можно будет наконец копировать строчки как в сях, просто while (*s++ = *t++);
источник

💭П

💭 Руслан Прохоров in rannts
ildar nizamov
а в 3.9 введут ++ и можно будет наконец копировать строчки как в сях, просто while (*s++ = *t++);
Ты : пропустил :-)
источник

AG

Alexander Gorokhov in rannts
ildar nizamov
а в 3.9 введут ++ и можно будет наконец копировать строчки как в сях, просто while (*s++ = *t++);
Че за говно
источник