Size: a a a

2021 June 23

N

Nikita in PiterPy Meetup
Спасибо)
Плохо погуглил, виноват
источник

ED

Eugene Denisov in PiterPy Meetup
Даже когда стайлгайд писал твой тёзка, полагаться на него на 100% не стоит.
источник

MK

Maxim Koltsov in PiterPy Meetup
😂
источник

E

Eugene in PiterPy Meetup
Какая вообще разница? Если тебе нужно значение, делай pop, если значение не нужно - делай del.
Спроси себя, какое намеренье выражает твой код. Если намеренье - вытащить из списка элемент с его удалением - это pop, если просто удалить из списка ненужный элемент - это del. И нечего морочить голову ни себе ни людям, которые будут твой код читать.

Советы радикальных питонистов вроде Никиты Соболева я бы фильтровал через 10 фильтров прежде чем им следовать.
источник

N

Nikita in PiterPy Meetup
Мне просто казалось del ещё как-то с памятью взаимодействует, нет?
источник

E

Eugene in PiterPy Meetup
По скорости выполнения оно одинаково работает, и то и то работает с памятью, оно же изменяет список.
источник

N

Nikita in PiterPy Meetup
Просто мне казалось, что del ещё как-то взаимодействует с garbage collector-ом
Мне кажется это не совсем правильным, если твоя задача именно удаление элемента из списка
источник

E

Eugene in PiterPy Meetup
Если не лень, можешь посмотреть исходники в CPython, или dis-листинг. Но на мой взгляд "как правильно" - это то, что ты хочешь сделать. Если кто-то говорит, что правильно - это потому что "так красивее" - это неверные предпосылки для выбора решения.
источник

N

Nikita in PiterPy Meetup
У меня нет сильных аргументов за pop, только внутреннее чувство прекрасного, потому я и решил спросить комюнити, как правильно)
источник

MV

Maxim Vasilev in PiterPy Meetup
Это микрооптимизации на python?
источник

E

Eugene in PiterPy Meetup
Нет, это же не деструктор - это __delitem__, GC тут не при чем. Или я чего-то не знаю.
источник

MK

Maxim Koltsov in PiterPy Meetup
в какой цвет покрасим навес для великов?
источник

S

Stan in PiterPy Meetup
а в какой хочешь?
источник

S

Stan in PiterPy Meetup
а в какой надо?
источник

S

Stan in PiterPy Meetup
а в какой можно?
источник

MV

Maxim Vasilev in PiterPy Meetup
а в какой правильно?
источник

E

Eugene in PiterPy Meetup
Смысл выражение "самодокументируемый код" - это как раз про то, что ты понимаешь намеренье автора кода из самого кода.

Если я вижу, что в коде есть pop, я предполагаю, что автор хочет получить элемент из списка с удалением, и если я вижу, что автор не использует значение в итоге, я начинаю напрягаться и думать, а почему он не использовал del.

Радикальные исламисты питонисты пишут:

del keyword is not composable with other functions, you cannot pass it as a regular function. It is also quite error-prone due to __del__ magic method complexity and that del is actually used to nullify variables and delete them from the execution scope. Moreover, it has a lot of substitutions. You won’t miss it!


Это мягко говоря натянуто на глобус. Ну зачем мне del передавать как функцию? Вот именно в том месте и в том контексте где я его использую? Если мне надо функцию, я импортирую модуль operator и использую функцию delitem.

При желании про любую синтаксическую конструкцию языка можно написать то же самое и высосать из пальца несуществующие сложности и проблемы.

Я считаю, что ссылки на wemake-python-styleguide - это вредные ссылки.
источник

ВТ

Виктор Титов... in PiterPy Meetup
А если написать так:
_ = bubbles.pop()
Вроде бы мы и удалили (достали) элемент из списка, но и показали явно, что нам не интересен сам элемент в дальнейшем
источник

E

Eugene in PiterPy Meetup
Если в том случае pop - более говорящее действие (например, с учётом описания алгоритма), то можно и так, конечно. Всё зависит от контекста и задачи, и намеренья. Проблема всяких суровых линтеров и стайлгайдеров - это как раз обобщение всего на всё без учёта семантики и контекста программы. Типа, давайте запретим однобуквенные переменные или двубуквенные или keywords - а зачем? Есть множество ситуаций, когда разумно использовать именно такое наименование конкретно в том локальном месте кода, но линтеру и его авторам плевать на это.
источник

AZ

Andrey Zakharevich in PiterPy Meetup
ну блин, del по умолчанию про удаление элемента по ключу. если это список, то из середины удаление будет работать за O(n). если же я делаю pop, то я удаляю последний элемент, и это делается за O(1)
источник