image104 Кб, 630x630
Питон-тред №174 /python/ 3449085 В конец треда | Веб
Тред, посвящённый языку программирования Питон, #173

Предыдущий: >>3327670 (OP)
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq

Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://online-python.com/ - листинги и онлайн-запуск
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://goonlinetools.com/snapshot/share/ - для листингов, без регистрации, но с капчей

#######################################
Вопросы-ответы:
— С чего начать изучать питон?
У питона намного лучше официальная документация, чем у большинства других языков. Есть там и учебное пособие для начинающих: https://docs.python.org/3/tutorial/introduction.html , неофициальный перевод на русский язык: https://digitology.tech/docs/python_3/tutorial/introduction.html (для питона версии 3.8, но разницы почти нет)
https://github.com/yakimka/python_interview_questions - интересная подборка, масса разнообразных тем и вопросов, для продолжающих, всё на русском

— Какие книги считаются лучшими?
На слуху чаще всего Лутц, но там очень много воды. Ещё на слуху Марк Саммерфильд, Эл Свейгарт "Автоматизация рутинных задач с помощью python". Эти книги рекомендуют чаще всего, но книги довольно старые, а питон развивается.

— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0

— А как учить джангу? Нахожу книги по джанге 1.х, можно их использовать?
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать даже для версий 1.x, т.к. принципы остаются теми же. Но лучше хотя бы с версии 2.0, слишком много мелких изменений в базе.

— Какие веб-фреймворки стоит учить в начале двадцатых?
Что бы не говорили, Джанго живее всех живых и умирать не собирается (и Django REST Framework), очень перспективный асинхронный FastAPI, асинхронный AioHTTP. Flask ещё где-то используется, но уже legacy. Прочие фреймворки или у нас экзотика, или это вымирающее легаси как Торнадо.

— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но частично переработанная под язык Python: https://www.composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)

— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Ролик на американском языке про многопоточность и асинхронность, построение своего event loop с нуля, помогает понять, как устроена асинхронность внутри: https://www.youtube.com/watch?v=MCs5OvhV9S4[РАСКРЫТЬ]

— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется

— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.

— Дайте нормальные книжки на русском! Мы, блядь, не в пин##сии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.

ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
текущая шапка: https://goonlinetools.com/snapshot/code/#z0o243n8t8byiy2zptv27
2 3449090
С предыдущим тредом проебался: >>3375375 (OP)
maxresdefault.jpg130 Кб, 1280x720
3 3449124
Остались еще вкатуны в питон?
Не свитчеры, а именно с нуля первым языком?
Какой у вас план?
изображение.png80 Кб, 300x168
4 3449156
>>449124

>Какой у вас план?

5 3449332
>>449124

>Какой у вас план?


Просто берешь и без задней мысли вкатываешься.
6 3449354
>>449124
Ну, я. Но мне питон для автотестов нужен. И то не могу сказать, что это прям ПЕРВЫЙ мой язык, 10 лет назад я знал js, правда с того момента больше им не пользовался и не программировал. Но ООП и прочую залупу я уже знаю.
Кстати, охуел как изменилось обучение за эти 10 лет, когда я вкатывался раньше, то было дай бог 2-3 курса на английском по js, и книги с кучей воды и ненужной хуйней. То есть то, что ты сейчас можешь выучить за 2-3 видоса на ютубе растягивалось на 2-3 недели потного дрочева с книгой. И всякие ии - просто пиздец как удобно, я вот раньше ждал, когда мне на дваче ответят почему моя хуйня не работает, а мне отвечали "пошел нахуй" или "ты долбаеб", а теперь нахуй все подробно можно разобрать и пофиксить проблему за 1-2 часа, а не за ебанных 2 месяца глубокого тильта, когда ты просто сидишь и не ебешь что делать вообще + чувствуешь себя говном все это время.
План писать автотесты. Ну, как бы, я за час уже первый тест написал. Мой план просто задрочить это и не ломать голову и вспоминать "а чо там была та", а просто спокойно по лайту писать эти тесты.
7 3449355
>>449354
Кстати пиздец обидно, ебать бы я щас охуенно жил, если б тогда js не бросил. А бросил я его знаете почему? Потому что ебаная нормисная хуйня меня задрочила до конца, то иди блядь шарагу закончи, то иди блядь вуз закончи, то блядь иди уже работать пора, то блядь ищи новую работу побыстрее, в итоге нахуй как долбаеба палкой гонят, а профита 0 нахуй. Че доебались до меня тогда все эти люди? Гореть им в аду бы, конечно.
8 3449418
>>449354
Рано нахваливаешь всю эту мишуру, потому что ни тогда, ни сейчас у тебя результата пока что нет.
Вот когда будет, тогда и нахваливай.
9 3449449
>>449355
даже не представляю, это наверное как купить биткоин и продать чуть дороже, а потом смотреть как он дорожает в разы.

Я не бросил 10 лет назад и вкатился но сейчас один хуй, что ты, что я сидим и в новую хуйню на общих основаниях вкатываемся так как в старой уже работы нет.
Аноним 10 3449689
>>449449
А что не так с работой?
11 3449709
>>449689
Сейчас один из немногих реальных способов найти работу на питоне это выучить React. Не шучу. Чистых бекендеров требуется очень мало, в основном разные фулстеки (бекенд + МЛ, бекенд + фронтенд).
12 3449863
>>449085 (OP)
Братья-питухонисты
Поясните за exec
Как правильно запускать в нем код, чтобы он выполнялся как отдельный запущенный скрипт? Пилию свою иде, я понимаю что надо как то передать ему словарь глобалсов идентичный тому какой создаётся при python -m file_name
Но просто сделать import __main__ в функции запуска и передать не канает, разбирать pydeved больно очень
13 3450693
— Мощности бы ещё подкинуть...
— Та не, нормально, у меня всё само — память выделяется динамически, GC сработает, не парься. У меня ж Python, всё своё. О-о... О-о... Вот это рантайм! Как же всё гладко обёрнуто в декораторы! Просто zen! Так уж... О! О! О! Контекстный менеджер, ты моя хорошая, да?
— Да ничё.
— А? Ха-ха-ха! Импортируй меня полностью! О! Я даже GIL уже почувствовал. Почувствовал?
— Потоки не тормози.
— Асинхронно?
— Как тебе нравится — await или multiprocessing.
— О-о! О-о! О-о!
— Почувствуй силу duck typing'а.
— Он даже хрустит, блин, у меня! Интерпретатор прям жарит, как будто Cython прикрутил! О-о! Я давно такого сетапа не видел, чтобы и Flask, и NumPy, и скрипты, и джобы, всё в одной обвязке!
— Главное — не держать в памяти список на миллион строк.
— Ну смотри, хочешь — сбрось всё в генератор. Или пульни через итератор.
— Е-мое… полдня дебажил через pdb, чтобы скрипт крашнулся из-за None в поле?
— А-ха-ха! Конечно! Вот ты мне нравишься — как list comprehension на одной строке! А другие — по for’у пишут, и радуются. А-а! А-а! А-а!
— Столько времени оборачивал в классы, чтобы…
— О-о... да!.. нет!..
— Ещё будешь запускать?
14 3451002
>>450693
Обзмеился
image.png53 Кб, 972x219
15 3451277
Суп. Вопрос, наверное, простой. Мне тут понадобилось написать примитивненький http-сервис. Вооружился Фласком, запускаю, вижу пик_1. Логи и т.п., плюс примечание, что надо использовать WSGI. Окай. Интернет, поиск, добавляю

> from waitress import serve


Заменяю

> app.run


на

> serve(app, host="0.0.0.0", port=8080)


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

> from logging import getLogger, INFO, info


и перед запуском:

> logger = getLogger("waitress")


> logger.setLevel(INFO)


Теперь при запуске я получаю об этом уведомление

> INFO:waitress:Serving on http://0.0.0.0:8080


При чём я вообще не понимаю, откуда оно берётся, знаю только, что происходит оно в момент вызова

> serve(app, host="0.0.0.0", port=8080)


Но засим -- всё! Если я вручную не делаю print, я не получаю никаких уведомлений об обращениях. Ни info("123"), ни logger.info("123") ни ещё что-то, что попробовал, ничего не выводит параметры на stdout/stderr. А мне бы надо это, типичная история: запросы, откуда пришёл, какой метод, что запросил, что получил, если не 2××, то что именно не устроило и т.п. С уровнями логирования и всем таким. Вроде бы всё должно быть просто, в конце концов это же Питон!
Например, сейчас у меня вначале, даже перед объявлением методов, лежит такой код:

> config: dict[str: str] = {}


> config["brokers"] = getenv("FRANZFRONT_BROKERS", "")


> config["log_level"] = getenv("FRANZFRONT_LOG_LEVEL", "INFO")


> logger = getLogger("waitress")


> logger.setLevel(getLevelNamesMapping()[config["log_level"]])


> for key, value in config.items(): logger.info(f"{key} = {value}")


Но на stdout при этом ничего SUKA не приходит.
16 3451340
>>451277
можен он в лог файл пишет
17 3451767
>>451340
Если я нигде в коде не указал пути и имени для логфайла, то это было бы странно, не находишь?
В общем, я тут откопал плейлист: https://rutube.ru/plst/440890?r=wd
Оказалось, что устройство модуля логгинг вообще пиздец нетривиальное и замороченное и моего беглого заглядывания в доку хватить не может. Пока решил обойтись самой-самой базой, а потом -- покурю внимательнее.

В частности:
Во-первых там создаются отдельные сущности "логер", "фильтр", "обработчик" ("хэндлер"), "форматер" и, возможно, ещё какие-то, до которых я не добрался и от настроек каждой из них зависит где-какие логи окажутся.
Во-вторых просто настроить 4 сущности может быть недостаточно! В частности они используют связи многие-ко-многим: один логер может быть связан с несколькими обработчиками, а один обработчик -- с несколькими логерами и настраивать придётся куда больше всего. Напрмер, повесить разные хендлеры, чтобы по-разному обрабатывать логрекорды с разной важностью.
А в-третьих -- саами логеры выстраиваются в иерархическую структуру и их связь сохраняется! То есть, при определённых настройках, отправленное тобой в лог сообщение может обработаться хэндлером от одного из родительских логеров.

Я допускаю, что это ОЧЕНЬ ГИБКО, и я даже ПОЧТИ оценил, но в текущей задаче у меня на разборы с логированием уйдёт больше кода и времени, чем на саму проблему!
18 3451915
>>451767

>Я допускаю, что это ОЧЕНЬ ГИБКО, и я даже ПОЧТИ оценил


держи нас в курсе, неосилятор
19 3452399
>>451915
На то, чтобы выплёвывать одни сообщения в stderr, а другие в stdout можно потратить 1 простейшую строку кода как у меня теперь, а можно -- 100-200+ строк злоебучего конфига со сложными связями плюс с переопределённым классом.
Короче иди нахуй, стандартный логгер реально ебанутый и оправдан только если у тебя прямо большой бэйр-метал-хостет стейтфулл и логи идут то в опенсёч, то шлются по смс прямо из приложения (а не собираются штатным функционалом кубера куда-надо в 10 раз проще, в 100 раз фичастее, а главное -- В 1000 РАЗ СТАНДАРТНЕЕ).
20 3453342
Здравствуйте, Питонисты. Столкнулся с такой проблемой. Есть ли способ инициировать работу бота в чате телеграмма через питон без необходимости запуска через команду /start, или хотя бы чтобы тригерился по словам или как то замаскировать эту функцию?
21 3453401
>>453342
import telebot

bot = telebot.TeleBot(...)
bot.infinity_polling()

ну и дальше уже @bot.message_handler настраиваешь как тебе нужно.
22 3453489
>>453401
Шо так, шо так ничего не выходит. Сам-то себе я могу написывать, а в других чатах только через /start.
23 3453495
>>453401
В смысле, могу писать себе в боте без команды /start только через эхо бота, а в других чатах хуй.
24 3453503
>>453495
При том, что если я выдам ему права администратора в своем чате, то все работает.
25 3453913
>>453342
Насколько я понимаю, это сделано, чтобы нельзя было пользователей случайно подписать на бота без ведома юзера, а только чтобы он явно запускал, понимая, что далет.
Но по крайней мере ты можешь распространять ссылку прямо со стартом, тогда он будет отправляться сам, да ещё и параметр какой приклеит, например ID реферала:

> https: //t. me/nastyanovelbot? start=1854544298

26 3453941
>>453913

>чтобы нельзя было пользователей случайно подписать на бота без ведома юзера


Именно так. Я проверил с телефона, компа и эмуля под разными аккаунтами в разных чатах и пришел к выводу, что говной занимаюсь. Это нужно делать прямо с аккаунты через машину.
Говоря откровенно, мне вообще-то спамер нужен для рекламы. Может есть ссылки какие?
27 3455324
>>452399

>Короче иди нахуй, стандартный логгер реально ебанутый и оправдан только если у тебя


А он по-умолчанию более-менее сконфигурирован, тебе нyжна всё та же одна строчка кода, конфигурировать надо, если у тебя нестандартные запросы

Зато если вдруг понадобится что-то нестандартное, тебе не придётся переделывать весь код
1747323356022089.gif3,3 Мб, 718x800
28 3455485
Колеги, жизненно?
29 3455491
>>455485

>Видитие, Канбан Канбаныч, с растом деньги будут быстрее двигаться

30 3455570
>>455485
А где перл? И баш.
31 3455576
>>455570
Тебе для каких целей?
32 3455685
>>455485
Зачем тебе делать миллиард вложенных циклов? Ты ебанутый?
33 3455866
>>453941
Меня арестовали. Вопрос закрыт.
image.png65 Кб, 451x306
34 3456475
35 3457342
>>453342
start это дефолтная тг функция старта бота, обойти ее насколько мне известно нельзя, только можно настроить автосообщение бота перед стартом как приветствие, а туда уже кинуть хендлер клавиатуры и дальше по плану
36 3457343
>>455485
похуй абсолютно, пока вакансии есть похуй, тем более следим дальше за отключением мьютекса , грядет новая эра питона
37 3457473
>>457343

>грядет новая эра питона


Ты про что?
38 3457949
Делаю чат бот для работы по документации. Юзеры настолько отупели что не могут осилить 20 страниц текста.

Какой способ написать бота для тг (это без проблем) и подвязать ИИ чтоб отвечал по заранее распаршенному тексту?

Нашел

G4f, там типа можно задать вопрос ИИ, сказав , смари вот текст, отвечай по нему. Далее переключить ввод на тг-юзера.

Agno. Создаёшь агента, подгружаешь ему свой текст как knowledge base, далее переключаешь на юзера.

Это в теории. Кто реально пробовал?
16538168828740.jpg286 Кб, 810x1080
39 3458270
>>457343

>мьютекса


Что такое мьютекс.
Гиркич.mp4998 Кб, mp4,
848x432, 0:07
40 3458271
>>457343

>грядет новая эра питона


То есть, лет через 6-9 (когда GIL удалят и из флагов, а его удалят!) приличный кусок маленьких проектов, которые авторы писали для себя, и выложили в сеть по доброте душевной, превратятся в тыкву, если тысячи людей за эти 6 лет не потратят дополнительный кусок своей жизни на переписывание проектов, которые им давно не интересны.

В то же время, мы понимаем, что если бы 15 лет назад (или когда там змея родилась?) послушали инженеров, а не маркетологов, усиленно напирающих на популярные, а не полезные фичи, то через 8 лет мы бы оказались в точке не хуже, чем та, где GIL сначала разработали, потратив кучу ресурсов, а потом удалили, потратив еще одну кучу.

Интересно, если суммировать все это время, сколько человеческих жизней, получается, убило одно недальновидное решение?
41 3458307
>>458271

>лет через 6-9


Окончательно сдохнет х86говнище и один хуй придется весь код переписывать.
42 3458328
>>458271
Зачем ты скопировал комент с петухабра?
43 3458467
Ананасы, а есть тут кто работает data/DWH engineer или просто аналитиком данных? Хочу перекатиться из системной аналитики на подобное направление. Из прикладных навыков есть SQL на среднем уровне, в целом базово знаю питон.
Какую часть питона лучше вкатывать? Попсу типа pandas либо сейчас есть что-то ещё актуальное в этом направлении? Мб есть тут кто уже успешно работающий, был бы благодарен ему за совет.
image.png752 Кб, 800x1020
44 3458675
45 3458686
>>458675
А ML это до сих пор хайповая тема?
CoolFemboyFacts.mp4906 Кб, mp4,
432x432, 0:10
46 3458700
>>458686
Тут специфически. Есть типы которые используют для машинного обучения готовые инструменты и библитеки готовые в том же питоне, особо не вникая не в матанализ ни в прочую хуйню для ботанов.
А есть типы с высшим образованием которые эти инструменты разрабатывают. Там да, дохуя дефицит кадров требование к матбазе и оч большие зарплаты.
Но твое резюме даже не посмотрят если нет вышки.
47 3458749
>>458700

>А есть типы с высшим образованием которые эти инструменты разрабатывают. Там да, дохуя дефицит кадров требование к матбазе и оч большие зарплаты.


Вот. У меня просто есть ощущение, что ML сейчас остался во всяком крупняке, где условно занимаются раскаткой и обучением собственных ИИ-моделей и всё в таком духе.
48 3460050
Дайте какие-нибудь сценарии использования FastAPI, хочу пощупать, но не знаю, что с этим делать.
49 3460106
>>460050
Напиши имадж борду, че ты как не как двачер? Тут постоянно начинают замену двачу писать то на луа, то на расте и незаметно уходят в закат, после того как не могут решить где хранить картинки с постами...
50 3461901
>>460106

>после того как не могут решить где хранить картинки с постами...


В sqlite в base64.
51 3462047
>>455485
Но ведь питун это высокоуровневая обертка для Си, там под капотом всё на ПРАВИЛЬНОМ языке написано. Если питонический код медленно работает, значит ты опять ни хуя не понял где горлышко бутылки.
52 3462075
>>462047

>под капотом всё


А толку, если рулит макака с гранатой в жопе.
53 3465104
>>460106

>не могут решить где хранить картинки с постами


А чем их православный S3 не устраивает не знаешь?
54 3465106
>>462075

>рулит макака с гранатой в жопе


У неё и ассемблер будет тормозить. Если хотя бы поедет, конечно.
image.png107 Кб, 1171x697
55 3465114
Суп. А подскажите, как правильно написать тайпхинты в этом случае?

> Type "str | list[str]" is not assignable to type "list[str]"


У меня вэлью дикта может быть строкой, а может быть массивом строк, почему массив строк не может быть передан там, где ждут массив строк?
Скрипт работает, с логикой всё норм.
56 3465144
>>465114

> , почему массив строк не может быть передан там, где ждут массив строк?


Он может. Только вот ошибка говорит про другое.
Ты в качестве аргумента, тип которого должен быть строго list[str], пытаешься подсунуть выражение, тип которого либо str, либо list[str]. Вот тебе и пишут, что если тип этого выражения внезапно окажется str, то такой вызов будет невалидным.
57 3465231
>>465144
А как это правильно оформить?
Или, если это правильно, то почему Pylance ругается?
58 3465362
>>465231
(fldr: str, cmnd: str | list[str]) -> list[str]:
image.png66 Кб, 1366x768
59 3465425
Подскажите, кто знает, не знаю, куда написать, нужен быстрый ответ. Через месяц сдавать экзамены, нужно научиться решать задание по информатике, установил Sublime Text, а тут такая хуйня пикрелейтед, когда пытаюсь на питоне писать. Короче, куча иероглифов вместо результата. Пользуюсь Виндовс 8.1. Как исправить?
60 3465484
>>465425
вскод для красивой подсветки буковок + запуск скрипта из консоли. Большего тебе не надо для огэ твоего или как его там.
Бля, а я ведь сдавал в последний год когда код ещё писали на листочке, выпуск 2020
61 3465832
>>465362

>cmnd: str | list[str]


Финт, конечно, понятный. Но там str впихнуть можно только через split()… Пока что так и сделал: заменил "str | list[str]" в дикте на "str" и добавил split() туда, где он используется. Но это какая-то странная хуйня.

>>465425
Есть правильный способ, есть полу-правильный способ и есть то, что подойдёт тебе.
Правильный способ: ставь Линукс и не выёбывайся, венда не предназначена для работы от слова вообще. Ставь хоть на виртуалку, хоть на некро-пк/ноут, оставшийся от прадедушки, куда и как угодно. Если только для Питона, то бери серверные сборки без гуя, тебе кроме консоли ничего не понадобится. Бонус: у многих облачных провайдеров можно разжится бесплатной виртуалкой с линуксом (придётся платить только несколько рублей в месяц за публичный IP) и заходить на неё по ssh. Многие IDE умеют исполняться на ремоут-хостах по ssh.
Полу-правильный способ: ставь WSL и работай в нём. Это почти линукс, затянутый внутрь венды. Лучше, чем ничего.
Подойдёт тебе: запускайся не в этой консоли. Где точно — зависит от того, что из имеющегося на твоём компе нормально работает с Unicode. Можешь попробовать IDLE, CMD, сам PS в отдельном окне или поставить, например, git-bash или Б-гомерзкую MobaXterm.
62 3465836
>>465425
Попробуй переименовать файл во что-нибудь без пробелов и кавычек. Только английские буквы и цифры
63 3465851
>>465832

> Пока что так и сделал: заменил "str | list[str]" в дикте на "str"


Охуенно. Но при этом значения в дикте у тебя как были и str и list[str], так и остались? И нахуй тебе вообще эти тайпхинты, если они неверные?

> split


При чем тут split вообще? Ты фактически просто решил отдельные строки сделать списками из одной строки. В отрыве от твоего говноскрипта - это вполне себе нормальное решение, только пишется оно как [str]. Нахуя для этого split вызывать, я в душе не ебу. Ты походу вайбкодер какой-то.

> Но там str впихнуть можно только через split()


Где там?
64 3465955
>>465425
На Русском Питоне пиши, жертва ЕГЭ.
Screenshot20250531-004829~2.jpg174 Кб, 720x1310
65 3466386
Купил бумажный вариант Изучаем Python Марка Лутца 1 том на русском языке. Взял не разобравшись 5-ое издание, а на данный момент уже вышло 6-ое, но пока на английском, а я в нём нихуя хуа. Сильно проебался? 5-ое издание вроде питон 3.5 разбирает, а сейчас уже и 3.11 вышел.
Спросил дипсик, говорит похуй, учи, только некоторые темы отдельно уточняй, а так 80% одинаковые. На скрине темы, которые по мнению дипсика будут изменены в 1 томе.
Прав ли он? Стоит ли ебать себе голову или серьёзные изменения будут только со второго тома?
Мб взять что-то актуальнее, ведь как везде пишут Питон - активно обновляющийся язык
66 3466405
>>466386
Сначала купил, потом подумал. Хороший гой.
67 3466467
>>466386
Зачем это учить и читать вообще, когда у тебя есть дипсик, который в любой момент объяснит как писать правильно? Ты просто пишешь код, а в непонятный момент спрашиваешь у нейронки. Это самый эффектинвый способ обучения. Талмуды были нужны 50 лет назад, когда их заучивали, т.к. в случае чего информацию было взять неоткуда, кроме библиотеки. Сейчас у тебя все знания мира в телефоне даже без поиска.
68 3466468
>>466386
f строки мастхев
тайп хинты упростились
pathlib изучить отдельно не проблема
датаклассы все еще юзаются (или Pydantic, что очень похоже)
морж только на легаси
остальное отдельно погугли, в целом книга вполне хороша
69 3466603
>>466467
Не объяснит.
70 3466642
>>465114
Делай датакласс, неймдтюпл или тайпддикт и не еби себе мозги.
71 3466645
>>465425
Поставь вскод и не еби себе мозги.
72 3466647
>>466386
Во всем прав, а Лутц переоценен.
73 3466738
>>465851

> в дикте у тебя как были и str и list[str], так и остались?


Нет, там теперь str. Примерно так, в дикте было:

> "Command": ["managed-postgresql", "cluster"],


Стало:

> "Command": "managed-postgresql cluster",


А там, где используется значение (в виде не строки, а листа строк) — я делаю её сплит. Так по крайней мере заявленные хинты соответствуют реальности, а не как предлагал >>465362, у которого выходило, что метод готов прохавать строку, хотя тогда она вызвала бы ошибку. Теперь оно готово принимать строки, самостоятельно приводя их к правильному листу.

>Ты фактически просто решил отдельные строки сделать списками из одной строки


Нет. В get_list_of_resources_in_folder ждало список строк, примерно так:

> full_command: list[str] = ["yc", "list", "--folder-name", folder, "--format=json"]


> full_command[1:1] = sub_command


а теперь ждёт строку и перед использованием приводит её к списку строк. Вот так:

> full_command: list[str] = "yc {sub_command} list --folder-name {folder} --format=json".format(sub_command=sub_command, folder=folder).split()


А после этого вызывается "subprocess.run(full_command, …)", которому первым параметром надо именно лист строк.

> Ты походу вайбкодер какой-то.


Только сейчас узнал, что это и нет, наоборот я уже несколько человек обоссал за то, что они мне подсовывали галюны нейросетей. Программирование это, конечно, не мой основной профиль, но когда я что-то делаю — я стараюсь сделать правильно, потому и прислушваюсь ко всем замечаниям линтеров и гайдлайнов, чтобы разобраться, почему именно так.
74 3466742
>>466386

>сейчас уже и 3.11 вышел


3.13.3 есть, а скоро выйдут новые, тебе так и так с каждой версией разбираться с изменениями и новыми возможностями. Так что можешь фундамент получить и по условно-старой книге (но не 4 издание, там было слишком много про 2.7, которое сильно отличалось, а теперь — окончательно депрекейтед), а потом просто почитаешь пепы с изменениями.

>>466467

>Зачем это учить и читать вообще,


Правильно, делай без понимания, главное просто делай, однажды нейронка угадает, как надо.
Очень напоминает вот эту шутку:
https://sortvisualizer.com/bogosort/

>>466647
Есть два полярных подхода, на одном из них справочники типа таких: https://goalkicker.com/ , тут только важное, минимум постороннего текста. А на другом — Лутц, в котором идея будет разжёвываться и повторяться, зато запомнить 10% прочитанного ≡ выучить справочник наизусть. Для меня Лутц это идейный наследник автора лучшего в моей жизни учебника по физике — Лансберга.
75 3466743
>>460106

> , после того как не могут решить где хранить картинки с постами...


Ничего подобного у меня всё просто.
C:/document and setting/Матвей_2015/изображения/двач
76 3466750
>>466743
Так вопрос был не где товарищу майору хранить изображения с двача, а где на сервере хранить для дваче лайк борды
77 3467107
Вас не достало что в питоне миллиард инструментов с пересекающимися фичами, но не полность, так что нельзя выбрать один.
pyright - хорошая интеграции с lsp, поддерживает недокументированные возможноти lsp которые работают только в vscode (тормоза на ноде)
python-language-server - интеграция всего в lsp от rope до mypy (тормоза на питоне)
pylyzer автор забросил недопилив толком (работал быстро на расте)
ty (на расте, еще не рабочий, может тоже забросят)
ruff в основном линтинг и форматирование, но имеет lsp интеграцию (работает быстро на расте, но сосет у pylint по анализу проекта)
pylint гипертормоза и считает что у моделей sqlachemy слишком мало методов
isort - сортирует импорты (ruff тоже могет, но сосет у isort)
flake8, pyflake, black и пр полудохлое
sage 78 3467347
>>461901
Вкатун, плиз.
15035163708880.png785 Кб, 658x747
79 3467390
80 3467502
>>467107
Pylance?
81 3467511
>>467502
это проприетарный vscode lsp клиент для pyright от майкрософта
82 3467515
>>467511
Мошный опенсорсный python-lsp-server, но он неюзабельный из-за питонячих тормозов + еще проверка типов хуже по сравнению с pyright
83 3467938
>>467511

>это проприетарный vscode lsp клиент для pyright от майкрософта


Минусы?
84 3468020
>>457949
Бамп. Есть тут ИИ внедряторы?
85 3468083
>>467938
проприетарный
86 3468224
Пацаны, нужно изучить базу по питону (пельменные, функции, супер-базово ООП и тд) для автотестов.

Есть какой-то курс на степике хороший? Или книжка?
И как вообще вариант в дипсике написать промпт, чтобы он составил план для меня и всё пояснял по плану?
87 3468232
>>468224

Вот такой промпт ему составил. Буду по его плану двигаться и уточнять всё.

"Ты — гуру Python с уровнем знаний создателя языка. Ты разработаешь интенсивный, структурированный план изучения Python на 12 недель с акцентом на:

Автоматизацию тестирования (pytest, unittest, Selenium, API-тестирование).

Работу с базами данных (SQL, SQLite, PostgreSQL, ORM — SQLAlchemy, Django ORM).

Парсеры (BeautifulSoup, Scrapy, requests, aiohttp).

Чат-боты (Telegram Bot API, Discord.py, обработка асинхронности).

Основы Django (модели, views, REST с DRF).

Git, GitHub/GitLab (ветвление, CI/CD, работа в команде).

Условия:

4 часа в день (пн–пт), 6 часов в выходные.

Практико-ориентированный подход: 60% кода, 30% теории, 10% ревью/оптимизация.

Каждая неделя должна заканчиваться мини-проектом по теме.

Постепенное усложнение: от основ Python до сложных связок (например, парсер + БД + бот).

Формат плана:

Четкие темы по дням.

Рекомендуемые ресурсы (документация, книги, туториалы).

Примеры задач для закрепления.

Советы по отладке и лучшим практикам.

Начни план с базового синтаксиса (1 неделя), но сразу включай примеры из целевых областей (например, тесты для простых функций). К 6-й неделе — углубление в автоматизацию, к 10-й — интеграция всех навыков (например, бот, который парсит данные и сохраняет в БД). Последние 2 недели — работа над комплексным проектом (например, тестовый фреймворк + CI).

Дай рекомендации по IDE (PyCharm, VS Code), инструментам (Docker, Postman) и лайфхакам для запоминания. Упомяни, как избегать выгорания."
87 3468232
>>468224

Вот такой промпт ему составил. Буду по его плану двигаться и уточнять всё.

"Ты — гуру Python с уровнем знаний создателя языка. Ты разработаешь интенсивный, структурированный план изучения Python на 12 недель с акцентом на:

Автоматизацию тестирования (pytest, unittest, Selenium, API-тестирование).

Работу с базами данных (SQL, SQLite, PostgreSQL, ORM — SQLAlchemy, Django ORM).

Парсеры (BeautifulSoup, Scrapy, requests, aiohttp).

Чат-боты (Telegram Bot API, Discord.py, обработка асинхронности).

Основы Django (модели, views, REST с DRF).

Git, GitHub/GitLab (ветвление, CI/CD, работа в команде).

Условия:

4 часа в день (пн–пт), 6 часов в выходные.

Практико-ориентированный подход: 60% кода, 30% теории, 10% ревью/оптимизация.

Каждая неделя должна заканчиваться мини-проектом по теме.

Постепенное усложнение: от основ Python до сложных связок (например, парсер + БД + бот).

Формат плана:

Четкие темы по дням.

Рекомендуемые ресурсы (документация, книги, туториалы).

Примеры задач для закрепления.

Советы по отладке и лучшим практикам.

Начни план с базового синтаксиса (1 неделя), но сразу включай примеры из целевых областей (например, тесты для простых функций). К 6-й неделе — углубление в автоматизацию, к 10-й — интеграция всех навыков (например, бот, который парсит данные и сохраняет в БД). Последние 2 недели — работа над комплексным проектом (например, тестовый фреймворк + CI).

Дай рекомендации по IDE (PyCharm, VS Code), инструментам (Docker, Postman) и лайфхакам для запоминания. Упомяни, как избегать выгорания."
88 3468257
>>468232
>>468232

>Ты — гуру Python с уровнем знаний создателя языка


>Состать мне план для полного нуба с акцентом на элементарные навыки на популярных фреймворках

89 3468280
>>468257
Спасибо!
изображение.png150 Кб, 897x783
90 3468293
>>468232
Хуйню нереалистичную задумал. У тебя нет ресурса чтобы выучить и скрэпи, и селениум, и гитлаб с докером. Нейросети магическим образом тебе времени не добавят. Используй 20/80 промпт. Закрывай только важные дыры.
91 3468305
>>468293
Понял.
Но дипсик всё равно задрачивает с докером. И выдаёт просто сухой текст, типа:

>REST API-тестирование (requests)


>Многие проекты требуют проверки API.


Пока я это всё буду у него спрашивать и расспрашивать, пройдёт уйма времени. Я в целом изи схватываю всё. В ВУЗе в многопоточность мог на ++, но к 29 годам щас всё нахуй забыл и хочется с базы базовой начать. А хуйсик расписал базу как

> Базовый синтаксис, структуры данных (list, dict, set), условия, циклы, функции. Без этого невозможно писать автотесты.


Нет бы сразу все по пунктам дал.

Короче по твоему принципу буду разбираться, в общем. Спасибо тебе!
92 3468309
>>468083

>проприетарный


Во-первых это точно минус? Почему?
Во-вторых:

> https://github.com/microsoft/pylance-release


> CC-BY-4.0 license


Ты уверен, что правильно понимаешь смысл слова "проприетарный"? Что оно для тебя значит? Опиши, пожалуйста.
А то окажется, что приблизительно всё ПО в мире проприетарное.
93 3468313
>>468309

>https://github.com/microsoft/pylance-release


И где ты там коды увидел? Это просто страница плагина с инфой
94 3468315
>>468309

>это точно минус?


Конечно. Я вскод не использую же, поэтому не могу ни использовать пиланс, ни адаптировать его под свой кейс
95 3468317
>>468313
и сс это обычно лицензия не для софта
а вот у пиланса EULA https://marketplace.visualstudio.com/items/ms-python.vscode-pylance/license
96 3468358
>>468224
Придумай проект простенький да крути его с подсказками ии. Я себе тг бота сделал с напоминалками, алертами и поиском по своему хранилищу различных файлов, поскольку уже заебался руками по папкам скрипты и записи искать. Это чисто твой проект и насилуй его на сколько фантазии хватит. За месяц и ооп, и основные библиотеки и даже гит с логированием освоил.
97 3468368
>>468358
Тоже рассматривал этот вариант. Именно чат бота, а потом уже автотест на него.

Только вот, допустим, как я узнаю о множествах (set) в питоне при таком подходе?

Мне тупо надо питон для того, чтобы потом автотестером пойти, ручником заебало + потолок в 180-200к в основном на рынке.

Я сейчас с дипсиком всю базу пройду за пару дней (типы данных, преобразование, функции базово и т.д.). потом буду пилить чат-бота и тесты на него... план такой, в общем.
изображение.png286 Кб, 1920x1080
98 3468422
как я заебался откуда он sh 2.2 подхватывает блядь
все стер нахуй
99 3468525
>>468309

>> https://github.com/microsoft/pylance-release


>> CC-BY-4.0 license



Хуя ты жидко обосрался!!!
100 3469198
>>468305
Изучи базовый синтаксис
ООП
Всякие обработки ошибок в блоках try/except
Логирование
Паттерны проектирования автотестов
Принципы программирования

По фреймворкам
Pytest - база для автотестов, изучить надо подробно его возможности, маркеры, параметризацию, фикстуры, как тесты запараллелить через xdist какой-нибудь
Selenium / playwright для UI тестов (playwright в наше время выглядит интереснее)
requests / httpx - для rest аpi (лучше httpx, т.к. на нем еще асинхронщина есть)
grpc - либа для grpc протокола
SQLAlchemy для БД (там тоже есть асинхронщина, для синхронного пг какого-нибудь psycorg2)
Allure для отчетов

докер нужен супербазово, как и ci/cd понимание (по типу набросать yaml файл для gitlab)
Все остальное, что тебе там написало выкинь нахуй, там большая часть либ для разработки, в автотестах тебе понадобятся они примерно никогда
101 3469248
>>469198
Спасибо большое!
102 3469443
>>469198
А нахуя ему grpc в одном ряду с основами? grpc апи разве такая распространённая штука уже, что прям с начинающих тестеров требуют? Не быкую, интересуюсь просто, с остальным согласен.
103 3469948
>>469443
gprc как дополнение к основному, да, ты прав анонче
104 3471418
>>469443

>grpc апи разве такая распространённая штука уже


Я лично вижу часто. Конечно, не так часто, как REST, но если что-то предоставляет публичное API, то там очень часто REST+gRPC. Так что лишним не будет. В конце концов, зная REST понять gRPC не так уж сложно мягко говоря.
image.png10 Кб, 776x166
105 3471518
Как вам?
106 3471537
Сап, у кого-нибудь есть ссылка на документацию Channels на русском? На django.fun устаревшая версия документации.
image.png92 Кб, 1254x595
107 3471568
108 3471573
>>471568
two_number это самое смешное
109 3471881
>>449085 (OP)
спасибо супер герой
110 3471950
кто-нибудь встречал софт для нормального скачивания .whl файлов, а не как мудацкий pip download или pip-downloader?
чтобы я сказал ему пакет, и софт скачал этот пакет и все его зависимости в текущую папку, а не в ~/.cache/pip/хуй/пизда/джигурда/a/b/c/2/2/8/dsfdskjfhdskjfhsdhfdskhfkjdshkdshfdsfs.bin
111 3471951
ну и чтобы оно докачку поддерживало, а не как этот гейский кусок дерьма с названием pip

Downloading torch-2.7.1-cp313-cp313-manylinux_2_28_x86_64.whl (821.0 MB)
━━━━━━━━━━━╸━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 244.6/821.0 MB 1.6 MB/s eta 0:06:02
WARNING: Connection timed out while downloading.
WARNING: Attempting to resume incomplete download (244.6 MB/821.0 MB, attempt 1)
Resuming download torch-2.7.1-cp313-cp313-manylinux_2_28_x86_64.whl (244.6 MB/821.0 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━╺━━━━━━━━━━━━━ 533.7/821.0 MB 1.6 MB/s eta 0:03:03
WARNING: Connection timed out while downloading.
WARNING: Attempting to resume incomplete download (533.7 MB/821.0 MB, attempt 2)
Resuming download torch-2.7.1-cp313-cp313-manylinux_2_28_x86_64.whl (533.7 MB/821.0 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 819.2/821.0 MB 2.1 MB/s eta 0:00:01
WARNING: Connection timed out while downloading.

мать ебал того кто придумал наговнокодить софт для скачивания без поддержки докачки
112 3471970
>>471951
В легасистане через мобильный тырнет работаешь?
113 3471973
>>471970
релоцировался в киргизию
114 3471976
>>471973
Иши крвартиру с нормальным тырнетом
115 3472048
блядь какая же говна этот ваш пидон
https://github.com/pypa/pip/issues/4796

> [Improvement] Pip could resume download package at halfway the connection is poor


> ichard26 closed this as completedin #12991 on Apr 12, 2025


смотрю #12991

> https://github.com/pypa/pip/pull/12991


они добавили опцию --resume-retries ахах))00)0 тип если на последней секунде загрузка обрывается
>>471951

> Resuming download torch-2.7.1-cp313-cp313-manylinux_2_28_x86_64.whl (533.7 MB/821.0 MB)


> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 819.2/821.0 MB 2.1 MB/s eta 0:00:01


> WARNING: Connection timed out while downloading.


то пип выкачивает файл заново)0)) сука мать ебал этих питонистов
116 3472055
>>472048
Чел. Какой пидон тебе. Ты с твоим мобильным легасистанским интернетом не сможешь гитом пользоватся. Ты просто не сможешь большую репу склонировать. В гите просто не может быть докачки при клонировании..

Попробуй https://github.com/astral-sh/uv
117 3472060
>>472055
потому что гит такие же чулочники писали, как и пидон.
любой нормальный софт умеет в докачку
118 3472063
>>472055

> Попробуй https://github.com/astral-sh/uv



работает кривовато, но намного лучше, чем дефолтный pip, спасибо!
случайно не знаешь, как заставить его качать архивы .whl вместо отдельных уже распакованных файлов?

> $ uv --cache-dir ./tmp pip download bitsandbytes


> error: unrecognized subcommand 'download'


если сделать uw pip sync requirements.txt, то какие-то пакеты он качает в виде .whl, а какие-то уже распакованные папки, мне хотелось бы все пакеты в виде .whl
119 3472066
>>472063
В КР все нейронки доступны чел. Хоть какая-то польза
1749370265828.jpg132 Кб, 588x604
120 3472070
Как думаете, ML это пиздец сложная ветка развития? При условии движения внутри компании.
121 3472114
Питон говно, уже 2 года свалил на c#, ЗП увелечил в полтора раза.

Всем спасибо
122 3472683
>>472114
Держи в курсе.
123 3472688
>>472070
Всю СЛОЖНУЮ часть за тебя уже сделали. Тебе осталось научиться пользоваться инструментами.
124 3472693
>>472688
Сычев, всю сложную работу за тебя уже сделали, тебе осталось только сделать хттп ручку для скоринга клиентов Азино666.
125 3472731
>>472693
Но ведь это реально так и есть. По сравнению с той математикой, что уже придумана, скоринг это уже прост как калькулятор.
А учиться так и так нужно. Даже есть пойдёшь бухгалтером, тебе надо освоить предметную область хоть немного и научиться в 1с, зато все действия в эске в итоге делаются двумя педалями.
126 3473118
>>472114
Ты пидор чтоле?
127 3473326
>>473118
Конечно, пидор, иначе бы писал на жабе.
Или на свифте, если гей.
128 3473408
я внезапно осознал всю мудрость дидов с их Version Control System в виде разных папочек
version_1.0
version_1.1
version_1.1_fix
version_1.2
version_2.0
version_2.0_fix
version_2.0_fix2
Новая папка
Новая папка (1)
пориджи с их venv просто переизобрели разные папочки лол
129 3473419
>>473408
Как тебя папочка спасет от замусоривания site-packages разными версиями зависимостей? При том pip сам по себе не умеет удалять зависимости зависимостей.

Venv это именно окружение, а не контроль файлов твоего проекта
130 3473423
>>473419
так venv это и есть локальный site-packages в текущей папке ./ вместо дефолтного ~/.cache/pip/site-packages/
131 3473425
или... так падажжи ёбана, то есть пориджи чулочники даже до мудрости дидов с разными папочками не дошли?
ебать ор
132 3473428
>>473408
>>473408

>Version Control System в виде разных папочек


Ну такое. Пока я не узнал о существовании гита это было норм, сука, нам даже в универе на первом курсе (в 2003м) предодша по программированию советовала сохранять разные версии кода в отдельных папочках!

>venv


Но ведь виэнв нужен для другого. А именно только для дебага, к рабочему продукту он отношения не имеет потому, что Docker.
И вообще по дефолту виэнв прописывает фул-пас и его уже нельзя просто так скопировать.
133 3473431
>>473423
1) Ну о том и речь. Если ты будешь
Новая папка
Новая папка (1)
ты так же можешь все зависимости срать в одну кучу куда нибудь ~/.cache/pip/site-packages/
2) venv похуй где у тебя сайт пакеджес. Оно не обязательно у тебя в папке с кодом. Всякие pipenv например автоматически создают для тебя твои venv в отдельной .virtualenvs/ директории, когда ты делаешь pipenv install numpy
134 3473863
>>449124
Я почти с нуля
135 3473864
Ребят, кто начинает изучать питон? Мне одному скучно
136 3473912
>>473864
Подрочи.
137 3474102
>>473425
реально не дошли, анон >>473431 прав, пидорский чулочный пидон всё равно срёт в ~/.cache/pip/site-packages вместо локальной папки внутри venv
какое же дерьмо этот пидон я хуею
138 3474121
>>474102
source .venv/bin/activate
.venv замени на свою папку созданнию модулем venv
139 3474137
>>474121
pip качает всё в локальную папку, а потом распаковывает внутрь venv, а мне не нужны десятки гигабайт говна в ~/.cache
140 3474162
>>474137

> мне не нужны десятки гигабайт говна в ~/.cache


Но ведь ~/.cache буквально предназначен для десятков гигабайтов говна. Если бы оно вместо этого сохранялось в /tmp было бы ровно тоже самое, только перекачивать, возможно, пришлось бы чуть чаще, если ребутаешься регулярно.
141 3475340

> ПОЧЕМУ В ДИРЕКТОРИИ КЭШ СОДЕРЖАТСЯ КЭШИРОВАННЫЕ ДАННЫЕ??????? ТУПОЙ ПИТОН!


Самый смешной тред на этой доске.
142 3475413
>>475340
пчел я хочу чтобы при создании "виртуального окружения" всё питонье говно складировалось именно внутри этой конкретной папки, а не срало мне в ~/, в /tmp, в небо, в аллаха.
143 3475468
>>475413
Проверил у себя.
ОКАЗЫВАЕТСЯ, МНЕ В ~/.cache/ НАСРАЛИ:
Абсолютно все браузеры (больше всех). Абсолютно все редакторы (видео, фото, текстовые), PIP, несколько эмуляторов терминала, игры, видеоплееры, скриншотилки и ещё, наверное, сотня программ из категории "разное". Пиздец! Как они все посмели хранить кэш в папке для кэша?
Маня, ты обосралась, просто признай это. Разрешаю умолкнуть без извинений.
144 3475470
>>475413
И да, для совсем уже дегенератов:

> ~ ➤ pip --help | grep cache 0


> cache Inspect and manage pip's wheel cache.


> --cache-dir <dir> Store the cache data in <dir>.


> --no-cache-dir Disable the cache.

145 3475496
>>475468
хрюкни
>>475470
спасибо
1749835629156.mp41,1 Мб, mp4,
576x1024, 0:10
146 3475652
Какие у вас зарплаты? Чем занимаетесь?

Заметил, что многие к питону довольно предвзято относятся, дескать из-за простоты в освоении он потерял очки престижа. Хотя по факту вакансий на питон в разы больше. Но вопрос в другом, какое направление вы выбрали для дальнейшего развития и на чем выбор основывался?
147 3475722
>>475652

>из-за простоты в освоении



когда что-нибудь асинхронное многопоточное напишешь и оно не будет зависать тогда и приходи
148 3475738
>>475413
Ты ебанутый? Где ты видел, чтобы кэш хранился в том же месте, где и то, что мы кэшируем? В чем тогда смысл кэша?
149 3475909
Анонс, подскажите что можно почитать человеку, которому питон нужен не для вката, а для работы. Задача такая: имеется набор данных, нужно построить линейные уравнения регрессии. Короче говоря, нужно на огромном наборе данных найти уравнение, которые позволить прогнозировать конечные свойства.
150 3475910
>>475909
Я бы уточнил, с чего вообще начать.
151 3475937
>>475722
а зачем писать многопоточку на петухе?
асинхронщина вообще по мнению многих крутанов в питоне считается чуть ли ни раком
152 3476009
>>475909

>Задача такая: имеется набор данных, нужно построить линейные уравнения регрессии


https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html
154 3476102
>>475937
рак мозга у тебя
155 3476984
>>475738

>В чем тогда смысл кэша?


Ты путаешь кэш и бэк. Суть кэша только в том, чтобы не проводить заново некую операцию, временно сохранив её результаты.

>>475937
"Асинхронщина" это хлеб и кровь и плоть и вообще единственный смысл который в 25 году остался в питоне. Если для тебя это новость, значит ты какая-то залетуха с курсов.

Пиздец, пол года в тред не заходил а тут одни нуфани и скриптокиди остались.
156 3477969
насколько пикрил хорош для углублённого изучения после пикрил 2?

пикрил 2 в изобилии имеет кучу перевода в стиле "ее рука хуй иметь ебал я", из-за чего некоторые вещи мне не понятны. в целом умею писать простенькие консольные программы, но хочется лучшего понимания, чтобы не путаться и обладать какой-то логикой действий. а то даже простые программы могу косячно писать, долго переписывая как будет лучше имхо.

мне немного надо, я как хобби после работы изучаю. вкатываться не планирую, нейросети и университетчики явно умнее меня.
157 3478002
>>477969

>насколько пикрил хорош для углублённого изучения после пикрил 2?


Ты рассчитываешь что тут найдётся кто-то понимающий и читавший две конкретные книги и он будет способен адекватно сравнить и вынести вердикт?..
Удачи.
А если серьёзно -- спроси на канале "Диджитализируй!" Чувак очень много читает и ведёт книжный клуб.
158 3480282
>>476984
>Если для тебя это новость, значит ты какая-то залетуха с курсов.

почему сразу "залетуха"? может он джангист, где, конечно, имеются декораторы sync_to_async и async_to_sync, но что-то похожее асинхронщину завезли, если не ошибаюсь, в django 4.
сам эту лабуду не использовал, проще все писать на каком-нибудь fastAPI/aiohttp
image13 Кб, 447x357
159 3482035
>>449085 (OP)
Друзья, в процессе вката нахожусь, параллельно пробую разные инструменты.
Можно ли как-то в юпитерлабе вот этот столбец с номером шага расширить? Пробовал снижать ширину jp-Cell, но он только на правой стороне становится короче. Вызвано, скорее всего, размером шрифта.
160 3483157
Суп. Пытаюсь в многопоточность. Как узнать из какого потока 't1'
Сделал 2 потока t1 и t2, запускаю из них функцию. Как узнать из какого потока пришел конкретный результат?
161 3483458
>>483157
Чтобы определить, из какого потока пришел результат, можно внутри вызываемой функции получить имя текущего потока через threading.current_thread().name.

import threading
import time

def worker():
thread_name = threading.current_thread().name
print(f"Результат из потока: {thread_name}")
return thread_name

# Создаем потоки
t1 = threading.Thread(target=worker, name="Thread-1")
t2 = threading.Thread(target=worker, name="Thread-2")

# Запускаем потоки
t1.start()
t2.start()

# Ждем завершения
t1.join()
t2.join()

Если ты хочешь получить результат из каждого потока (например, собрать их), нужно использовать более продвинутый способ, например, через concurrent.futures.ThreadPoolExecutor, где можно легко сопоставить результат и поток:

from concurrent.futures import ThreadPoolExecutor
import threading

def worker():
return f"Результат из: {threading.current_thread().name}"

with ThreadPoolExecutor(max_workers=2) as executor:
futures = [executor.submit(worker) for _ in range(2)]
for future in futures:
print(future.result())

Если ты используешь threading.Thread, и хочешь вернуть результат из потока, то это можно сделать через передачу queue.Queue или оборачивание потока в класс:

import threading
import queue

def worker(result_queue: queue.Queue):
thread_name = threading.current_thread().name
result_queue.put((thread_name, f"Результат из потока: {thread_name}"))

result_queue = queue.Queue()

t1 = threading.Thread(target=worker, args=(result_queue,), name="Thread-1")
t2 = threading.Thread(target=worker, args=(result_queue,), name="Thread-2")

t1.start()
t2.start()

t1.join()
t2.join()

while not result_queue.empty():
thread_name, result = result_queue.get()
print(f"{thread_name} => {result}")
161 3483458
>>483157
Чтобы определить, из какого потока пришел результат, можно внутри вызываемой функции получить имя текущего потока через threading.current_thread().name.

import threading
import time

def worker():
thread_name = threading.current_thread().name
print(f"Результат из потока: {thread_name}")
return thread_name

# Создаем потоки
t1 = threading.Thread(target=worker, name="Thread-1")
t2 = threading.Thread(target=worker, name="Thread-2")

# Запускаем потоки
t1.start()
t2.start()

# Ждем завершения
t1.join()
t2.join()

Если ты хочешь получить результат из каждого потока (например, собрать их), нужно использовать более продвинутый способ, например, через concurrent.futures.ThreadPoolExecutor, где можно легко сопоставить результат и поток:

from concurrent.futures import ThreadPoolExecutor
import threading

def worker():
return f"Результат из: {threading.current_thread().name}"

with ThreadPoolExecutor(max_workers=2) as executor:
futures = [executor.submit(worker) for _ in range(2)]
for future in futures:
print(future.result())

Если ты используешь threading.Thread, и хочешь вернуть результат из потока, то это можно сделать через передачу queue.Queue или оборачивание потока в класс:

import threading
import queue

def worker(result_queue: queue.Queue):
thread_name = threading.current_thread().name
result_queue.put((thread_name, f"Результат из потока: {thread_name}"))

result_queue = queue.Queue()

t1 = threading.Thread(target=worker, args=(result_queue,), name="Thread-1")
t2 = threading.Thread(target=worker, args=(result_queue,), name="Thread-2")

t1.start()
t2.start()

t1.join()
t2.join()

while not result_queue.empty():
thread_name, result = result_queue.get()
print(f"{thread_name} => {result}")
162 3483644
>>483458
Чатгопете?
163 3488036
помогите с выбором фреймворка для новичка:
Асинхронное программирование не знаю, но в одном месте пишут с джанги начать, в другом фастапи. Хз что первым пощупать
164 3488728
>>488036
А тебе для чего? inb4 для новичка
В фастапи вкат проще, если ты прям ничего не щупал, то лучше его.
165 3488898
>>488728
Фастапи только для апи?
166 3489034
>>488898
Нет, но ты заебешься костыли вокруг того, что есть в зачаточном состоянии, писать. Проще готовый фреймворк использовать aka django. Тот чел тебе напиздел, что фастапи проще для новичков. Для новичков проще использовать готовое, чем писать например обработку ошибок кастомную, csrf токены настраивать и прочую мелкохуйню, что в жанге уже за тебя все сделано. Если возмешь фастапи то с большой вероятностью напишешь дырявое говно, без знания что и где нужно реализовать.
167 3489155
>>489034
Я тут выше писал, что лучше для веб морды устройства?
168 3489158
>>489034
Тут еще такая проблема что если ты используешь для этого сторонние модули, то лет через 5 они могут загнуться. А джангу просто обновил и вперед.
image.png53 Кб, 626x308
169 3489421
Суп. Есть пик. ПайЛинт явно считает, что `succ` это константа, хотя казалось бы оно в одном месте объявляется, потом в цикле может переписываться, значит АППЕР_КЕЙС тут явно неуместен. Или я чего-то недопонимаю? Разъясните, пожалуйста.
image.png43 Кб, 526x224
170 3489438
И ещё похожий вопрос.
Вот есть такой код. ПайЛинт говорит "Catching too general exception Exception". Предлагается прочитать:
https://pylint.readthedocs.io/en/latest/user_guide/messages/warning/broad-exception-caught.html
https://stackoverflow.com/questions/14797375/should-i-always-specify-an-exception-type-in-except-statements/14797508
Я прочитал, но всё ещё не очень понимаю, как быть.
В моём понимании при попытке внести данные в файл может случиться примерно дохуялиард всяких разных вещей (RO-ФС, кончилось место на диске, диск побился на лету и так далее), которые помешают записи и по-моему вот тут вот уместно сделать "Что-то стряслось, нишмог, вот тебе ошибка, возись с ней дальше сам!", но, кажется, линтер хочет, чтобы я в таких случаях перечислял абсолютно все райзы, которые гипотетически могут прилететь в этом куске кода? Как тут идеологически правильнее поступить?
171 3489449
>>489421
PyLint относится почти ко всем переменным, объявленным не внутри функции, как к константам. Менять они это вроде не планируют, так что можешь просто это в игнор прописать. Если загуглишь саму ошибку, найдёшь много открытых вопросов на эту тему у них в гитхабе.
>>489438
Из PEP-8:

>When catching exceptions, mention specific exceptions whenever possible instead of using a bare except: clause:


>A good rule of thumb is to limit use of bare ‘except’ clauses to two cases:


>1. If the exception handler will be printing out or logging the traceback; at least the user will be aware that an error has occurred.


>2. If the code needs to do some cleanup work, but then lets the exception propagate upwards with raise. try...finally can be a better way to handle this case.


Тоже можно заигнорить, но вообще да, как правило, эксепшены указываются явно.
172 3489632
>>489421
Чел, незачем прописывать типы при инициализации. Это лишняя работа.
173 3490574
>>489449

>Менять они это вроде не планируют, так что можешь просто это в игнор прописать.


Мерси!
>>489449
В целом я понимаю и согласен. Но тут может произойти очень много чего и я не знаю, что именно. Бредогенератор, например, говорит о 8 видах исключений (правда, сколько он не заметил и сколько нагалюционаровал -- отдельный вопрос), но предлагает обойтись двумя явными и остальное ловить просто так (пик 1). КМК, обрабатывать все 8, чтобы выдать одинаковые сообщения -- что-то на грани между ОКР и идиотизмом, но не обрабатывать вовсе и вываливать трейс в случае чего тоже не очень хочется.
>>489632
Мне не сложно, а лишняя она не всегда, например, пустые set и dict имеют одинаковые литералы и именно на них будет смотреть IDE, LSP и LLM, а остальным -- для унификации. А вообще (сорри за оффтоп): эта привычка у меня с тех пор, как я начинал учиться программированию на Паскале, там в начале функций, процедур и программы была секция "var", в которой нужно было перечислить все переменные и их типы. Если вдуматься, то, не смотря на многословность (по факту именно она, похоже, стала причиной, по которой паскаль проиграл войну с сями), это замечательная практика, она позволяла учесть все переменные и при этом быть абсолютно точно уверенным, что вот эта переменная будет внутренней, а вот та -- придёт из более общего контекста и так далее. На 2 и 3 пиках бессмысленные и беспощадные, но рабочие примеры уровня Lab1.
174 3490582
>>490574

> пустые set и dict имеют одинаковые литералы


Литерала пустого set нету...

Ну так избавляйся от лишних привычек. А то еще ни дай бог начнешь си писать на питоне.
175 3490787
>>490582

>Ну так избавляйся от лишних привычек.


Зачем, если они делают код более организованным и явным?
Explicit is better than implicit.
176 3490794
>>490787
Чел, даже в статических языках давно есть вывод типов.
177 3490892
>>477969

> насколько пикрил хорош для углублённого изучения после пикрил 2?


Мне кажется, неплохи книжки про асинк и Fluent Python.
178 3491986
ML сложная тема без знаний математики?
179 3493076
180 3493192
>>491986
Нет
181 3493206
>>491986
Наверное
image.png146 Кб, 1187x557
182 3493700
внимание вопрос

откуда в i 0 взялся наху???7777
183 3493706
>>493700
так range(len(s)) с 0 начинается
а массив s ты кикаешь тут
for s in
вместо исходного массива s у тебя пробегает значения от 0 до len(s) в цикле
184 3493708
надо писать
for value in s:
и делать append(value) а не append (s)
185 3493710
Вопрос по asyncio. Как я понял await как бы приостанавливает текущее выполнение и может переключить исполнение на другие вычисления. И как я понимаю, написанные друг за другом await будут выполнятся все равно друг за другом (ну и может что то между ними еще из других мест), а чтобы реально начать вычислять что то полезное, нужно не просто asyncio.run с 1 функцией запустить, а как то указать там несколько задач, иначе получится, что оно все равно будто последовательно все функции вызывает, разве нет? Или как оно работает?
186 3493712
Но тогда я не понимаю, почему я кучу раз видел код где писали только asyncio.run с 1 функцией? Может потому что там дергали либу которая как то внутри сама несколько тасок делала?
187 3493759
>>493710
создаешь несколько тасок и потом делаешь их asyncio.gather
188 3493772
>>493710
Школота, я тебя сейчас по-простому обясню. Слушай сюды. Асинхронность нужна не для того чтобы паралельно что-то делать, а для того чтобы паралельно нихуя не делать. Чтобы не было блокирующего нихуя не делания. Усек? У тебя две задачи, обе могут нихуя не делать продолжитеьное время. Что лучше: обе одновременно нихуя не делают или сначале нихуя не делает одна задача, а потом нихуя не делает другая задача? Разницу усек?
189 3493825
>>493759
Пасиб
190 3494130
>>493706

> так range(len(s)) с 0 начинается


почему, если n=1 и в s все начинается как раз с единицы?
191 3494134
>>493706

> вместо исходного массива s у тебя пробегает значения от 0 до len(s) в цикле


а понял
192 3494418
Что по вайбкодингу, посоны? Не так давно обновил пучарм и охуел с того, насколько точно он умеет предлагать автодополнение строки. Но это не вполне полноценный вайбкодинг, как я понимаю. Есть какие-то годные плугины?
193 3494427
>>494418
Что такое вайбкодинг?
194 3494519
>>494427

> Что такое вайбкодинг?


это когда арч программист надевает носочки, наливает банановый смузи в стакан и наваливает hello world под крутую какирскую музыку
195 3494537
>>494519
А терь по русски.
1752086882981.jpg91 Кб, 800x712
196 3495282
пидорасище.jpg52 Кб, 600x550
197 3497236
image107 Кб, 690x961
198 3500431
Собираюсь вкатываться в аналитика данных, посему надо учить питон. Составил вот такой роадмап, подскажите может упустил чего?
199 3500440
>>500431
Что это за зверушка - анальник?
200 3500441
>>500431
Да норм, все ключевые слова есть.
Но не могу не спросить, как ты планируешь конкурировать с десятками тысяч других вкатунов с базовым знанием python и sql? Ты молод и у тебя есть хорошее образование? Или по блату найдешь работу?
201 3500479
>>500441
Я не собираюсь останавливаться только на sql и python. По мере возможности буду прокачиваться дальше и пытаться откликнуться на любую джуниор вакансию
202 3500638
>>500479

>По мере возможности буду прокачиваться дальше и пытаться откликнуться на любую джуниор вакансию


Как и тысячи выпускников с курсов...
203 3500737
>>500638
И что теперь, ничего не делать?
мимо
204 3500797
>>500737
Ящитаю, что не надо идти как баран напролом туда, где уже места нет, других баранов ты не растолкаешь один.
Лучше осмотреться и выбрать другой путь, где есть место, пусть до этого пути и надо будет больше шагов сделать.
205 3500882
>>500797
И где есть место сейчас?
206 3501047
>>493700
Ой, как плохо... Прямо по коду понятно, что у тебя нет понимания происходящего.
207 3501058
>>494427
Это когда вместо того, чтобы писать код "кодер" пишет промт ЛЛМ-ке, который описывает, что код должен делать. Правда на практике есть куча нюансов. Ищи "Курсор".
Недавно я пробовал более казуальный вариант: я подключил себе одну из бесплатных ЛЛМок и написал скрипт на 650 строк, она нагенерировала за меня ~80% кода и 100% документации, я просто сэкономил время на ручном набивании блоков кода, типа написал несколько букв, получил 3-5 строк функционал которых угадан по названию функции и окружающему коду. Это не чистый вайб-кодинг, но меня устраивает: я предпочитаю лучший контроль над результатом.
208 3501063
>>501058

> Ищи "Курсор".


Это жизнеспособно для человека который и сам писать может?

> Недавно я пробовал более казуальный вариант: я подключил себе одну из бесплатных ЛЛМок и написал скрипт на 650 строк, она нагенерировала за меня ~80% кода и 100% документации,


Как сделал?
209 3501066
>>500882
Он в целом прав, но есть нюанс: на вопрос

>И где есть место сейчас?


нельзя ответить. Потому что если этот ответ становится известен всем анонам на дваче, значит туда уже ломятся толпы с курсов.
Другое дело, что у того, кто освоит сам обычно дела обстоят лучше. 98% вкатышков с курсов считают, что им дали достаточно и сами не особо развиваются сверх этого, поэтому и сосут с причмокиванаием. С другой стороны те 2%, которые продолжают развиваться ещё и получили перед этим хорошую порцию структурированных знаний и пинок в нужном направлении.

Ладно, пару вещей я подскажу:
DevOps -- тут есть дефицит мидлов, так что ещё можно пытаться.
QA -- хороших спецов даже уровня джунов мало. Другое дело, что и спрос не слишком большой.
Sec -- тут ВЕЧНЫЙ голод. Но тематических курсов нет. Угадаешь почему? Потому что это охуеть как сложно и за 2-4 месяца этому научить невозможно, это нужно с 12 лет было читать журнал "Хакер", а с 14 -- сидеть на тематических форумах, постепенно погружаясь в пучины даркнета. Тогда к 20 есть хороший шанс найти или уютное место для вайтхэта или неуютные нары.
210 3501068
>>501063

>Это жизнеспособно для человека который и сам писать может?


Только для таких и жизнеспособно, потому что только такие могут проверить, что им там негенерировала ЛЛМ.
211 3501071
>>500882
Как анон выше написал, я за тебя не могу ответить на этот вопрос. Ты САМ должен поднять голову и осмотреться. Иначе будет очередное бодание не в ту дверь.
212 3501072
>>501063

>Это жизнеспособно для человека который и сам писать может?


Да, но есть ненулевая вероятность, что ты будешь час бодбирать реализацию метода, который сам бы написал за 20 минут.
Вообще категорически советую воспринимать ЛЛМ как множитель для скила.

>Как сделал?


Ладно, накидаю в общих чертах.
213 3501091
>>501068
Я знаю питон, но часто не знаю либ с которыми работаю. Вообще для меня это не профессия, поэтому работаю то с тем, то с сем.
214 3501135
Почаны, вкатываюсь в питон. Скажите, есть ли способ чтобы вызывать Константу из общего файта констант, тип Си Const.h со всеми константами..
215 3501140
>>501091

>Вообще для меня это не профессия


А сам как, не тошнит, норм?
216 3501143
>>501140
От чего? От отступов, блядь? Как вы дегенераты заебали.
Проблемы есть, но другие. Алсо предложи альтернативу.
217 3501158
>>501143
Нет, не пойми не правильно. Я про само самочувствие, если не тошнит, то может, стоит самого себя тащить дальше? Новое изучить в рамках ЯП.
218 3501162
>>501158
Что мне надо изучить и зачем?
219 3501166
>>501162
Успокаина прими. Ты дёрганный
220 3501168
>>501135
Да, но.
В питоне нет констант которые чисто константы, есть переменные, записанные КАПСом, которые договорились считать константами. Ты можешь вынести их во внешний модуль и импортировать, например:
module.py:

> KONSTANTA = 1


main.py:

> import module


> print(module.KONSTANTA)


или

> from module import KONSTANTA


> print(KONSTANTA)

221 3501175
>>501166
Мысль сформулируй.
222 3501176
Как в ебаном питоне гарантированно импортировать модуль из локального каталога или из системы?
223 3501187
>>501176
from ebany import modul
224 3501252
>>501072

>Ладно, накидаю в общих чертах.


Даже не в общих, а на настоящем примере.
Итак, задача: инвентаризация и аудит облака. СУГУБО ПРИКЛАДНАЯ (из категории "мне было лень лазить по папочками руками"), это даже скорее скриптинг, чем программирование, но код есть код, а в этом случае код безопасный, ничего особого не спалить (все секреты сильно снаружи), а код не сможет накосячить (тем более, что я понимаю значение каждой запятой). Идеально для тестирования LLM.
Есть облако с пользователем с некими правами, пользователь может выполнять консольные вызовы через специальную утилиту для манипуляции ресурсами в облаке. В облаке есть фолдеры под отдельные проекты, в фолдерах есть сервисы (например, ALB (Application Load Balancer) или managed PSQL)
Структура: класс Cloud при ините получает список папок и создаёт по объекту класса Folder, сохраняет в список.
При ините класса Folder создаётся list[dict[str, BasicService]], где BasicService это базовый класс для сервисов (есть ещё несколько классов, сервисов которые наследуются от него, но имеют отличные в чём-либо обработчики, например, для разных ресурсов может различаться Naming Convention). В классе BasicService при ините выбираются и запоминаются все ресурсы определённого типа, сохраняются в list[dict], полученном из JSON-выхлопа той самой консольной тулзы.
Я хочу добавить проверку расположения ресурса (что он находится в той зоне доступности, где ему положено). Я добавляю в класс BasicService метод и мне сразу подсказывают что за метод я могу написать: __str__ (пик 1). Ну мне нужен другой, потому я ввожу имя и возвращаемый тип сам, жму Enter и мне сразу предлагает готовый код (пик 2)! И из этого кода (даже не смотря на опечатку в имени метода) 80% уже пойдёт в бой, нужно только поправить проверку потому что он решил, что я хочу проверить, находится ли ресурс в правильной папке, а мне надо проверять, находится ли он в правильной зоне доступности.
Осталось документировать новый метод, иду к определению класса и тыкаю там в "doc" (пик 3), ещё пара кликов и метод готов к использованию (пик 4). На 5 строк рабочего кода я ввёл 2 слова, остальное подставила моделька.

На выходе имеем по сути автоматизацию бОльшей части набора текста. А рядом -- чат, в котором можно уточнить какие-то детали по языку или попросить совета по реализации.

НО надо твёрдо понимать, что нельзя рассчитывать, что он выдаст идеальный код, что за ним надо проверять, что LLM вообще склонны к галлюцинациям и так далее. Чем более общий вопрос им задаёшь, тем качественнее и валиднее будет ответ.
224 3501252
>>501072

>Ладно, накидаю в общих чертах.


Даже не в общих, а на настоящем примере.
Итак, задача: инвентаризация и аудит облака. СУГУБО ПРИКЛАДНАЯ (из категории "мне было лень лазить по папочками руками"), это даже скорее скриптинг, чем программирование, но код есть код, а в этом случае код безопасный, ничего особого не спалить (все секреты сильно снаружи), а код не сможет накосячить (тем более, что я понимаю значение каждой запятой). Идеально для тестирования LLM.
Есть облако с пользователем с некими правами, пользователь может выполнять консольные вызовы через специальную утилиту для манипуляции ресурсами в облаке. В облаке есть фолдеры под отдельные проекты, в фолдерах есть сервисы (например, ALB (Application Load Balancer) или managed PSQL)
Структура: класс Cloud при ините получает список папок и создаёт по объекту класса Folder, сохраняет в список.
При ините класса Folder создаётся list[dict[str, BasicService]], где BasicService это базовый класс для сервисов (есть ещё несколько классов, сервисов которые наследуются от него, но имеют отличные в чём-либо обработчики, например, для разных ресурсов может различаться Naming Convention). В классе BasicService при ините выбираются и запоминаются все ресурсы определённого типа, сохраняются в list[dict], полученном из JSON-выхлопа той самой консольной тулзы.
Я хочу добавить проверку расположения ресурса (что он находится в той зоне доступности, где ему положено). Я добавляю в класс BasicService метод и мне сразу подсказывают что за метод я могу написать: __str__ (пик 1). Ну мне нужен другой, потому я ввожу имя и возвращаемый тип сам, жму Enter и мне сразу предлагает готовый код (пик 2)! И из этого кода (даже не смотря на опечатку в имени метода) 80% уже пойдёт в бой, нужно только поправить проверку потому что он решил, что я хочу проверить, находится ли ресурс в правильной папке, а мне надо проверять, находится ли он в правильной зоне доступности.
Осталось документировать новый метод, иду к определению класса и тыкаю там в "doc" (пик 3), ещё пара кликов и метод готов к использованию (пик 4). На 5 строк рабочего кода я ввёл 2 слова, остальное подставила моделька.

На выходе имеем по сути автоматизацию бОльшей части набора текста. А рядом -- чат, в котором можно уточнить какие-то детали по языку или попросить совета по реализации.

НО надо твёрдо понимать, что нельзя рассчитывать, что он выдаст идеальный код, что за ним надо проверять, что LLM вообще склонны к галлюцинациям и так далее. Чем более общий вопрос им задаёшь, тем качественнее и валиднее будет ответ.
225 3501264
>>501187
Откуда он будет импортирован?
226 3501270
>>501252
В чем ты это делал-то? Что мне твои скрины?
227 3501271
>>501168
Вот этому анонче два чая.
228 3501296
Котаны, помогите.

Не получается записать сумму ряда. Использую функцию nsum из scipy.
Если в лямбду добавить условное выражение, то выкидывает ошибку, но если применять другие операции (степень, корень и т.д.), то всё работает как и должно.

Пикрилы
229 3501309
>>501296

>то выкидывает ошибку


кокую?
230 3501314
>>501309

Да, забыл прикрепить
https://pastebin.com/CJMWzb1p
231 3501352
>>501296
так тебе написали всё, нельзя к логическому типу его преобразовать таким образом.
232 3501355
>>501066
И ты хочешь сказать что в аналитика данных ебать как сложно вкатиться? Прям джуны нахуй не нужны да?
233 3501361
>>501270
Какая разница? Вообще-то можно в чём угодно, лишь бы была интеграция с LLM. А с учётом того, что они уже умеют в LSP -- можно хоть в виме.
А пошёл по пути наименьшего сопротивления и поставил гигакодовский плагин на VSC.
Курсивом выделены предложения LLM, если что.
234 3501364
>>501361
Чел, я не знаю наизусть все иде и плагины.
Что такое LSP и гигакод?

Как вообще можно с питоном юзать vs code? Он же нихуя не умеет!
image.png7 Кб, 474x159
235 3501366
>>501314
Просто скопировал оттуда код, получил пик. У тебя что-то сильно не так. Вангую вендопроблемы.
236 3501367
>>501364
Судя по всему, тебе уже ничего не поможет. Программирование это просто не твоё.
Уймись и иди на завод или грузчиком в пятёрочку.
237 3501368
>>501367
Че такая попаболь? Опять что-то свалилось?
238 3501370
>>501367
Ебло свиное, я уже программирую.
239 3501380
Каким хуем пучарм ухитрился сожрать 2,5 гб??
240 3501381
>>501366
он в nsum лямбду вызывает
241 3501424
>>501355
Сложно, потому что туда лезут десятки тысяч людей с курсов и просто перекатчиков. Я резюме у нас помогаю иногда фильтровать, и там абсолютный мрак, продавцы машин, футболисты, социологи и т.д. Быть замеченным в этом потоке грязи сложно.
Про джунов - они не нужны, потому что как только ты их научишь, то они тут же свалят от тебя. Поэтому дешевле брать студентов и платить им мало. Делать задачи по инструкциям они умеют, на зарплату не жалуются, и когда уходят их не жалко.
242 3501426
>>501380
Индексация проекта скорее всего.
243 3501429
>>501176
Если тебе гарантированно из какой-то жопы нужно вытянуть, то вот так

>import importlib.util


>import sys


>spec = importlib.util.spec_from_file_location("my_module", "/home/anonchik/moduli/ebanye/my_module.py")


>my_module = importlib.util.module_from_spec(spec)


>sys.modules["my_module"] = my_module


>spec.loader.exec_module(my_module)



Но вообще все нужные модули должны лежать у тебя в проекте и импортироваться через

>from moduli.ebanye import my_module

244 3501463
>>501381
И это может приводить к сбою?..
Лень было пип расчехлять для теста.
245 3501531
>>501463
там не сбой, в лямбду массив пихать нельзя
246 3501552
>>501531

> в лямбду массив пихать нельзя


Всё что нужно знать о местных экспертах
247 3501571
>>501352
>>501463
В этом собственно и вопрос. Как переписать, чтобы заработало?
248 3501581
>>501429
Из какой жопы? Я разве не понятно вопрос задал?
Как гарантированно испортировать модуль из системы или из проекта при конфликте имен?

>>501426
"Проект" из 1 файла.
249 3501729
>>501370
Блядь. Дело же не в том, что ты чего-то не знаешь. Дело в том, что вместо того, чтобы спрашивать тут -- ты мог бы выделить слова, ткнуть правой кнопкой и поискуать в сети, но если ты оказался неспособен на это, значит тебе доступен только вайбкодинг, когда ты умоляешь курсор выдать тебе рабочее решение, не применяя мозга.
250 3501731
>>501729
Почему я должен подбирать с пола? Тебе сука лень нормально написать названия софта??? Схуя ты взял что я обязан угадывать про что ты говоришь?
251 3501737
Чуваки, а как нынче работенку ищут? Что то я на хх все заполнил, по приколу даде некоторые навыки тестами поподтверждал, куда ни откликнусь - везде тишина. Одна охотница сама на меня вышла с предложением продать меня в хуяндекс, я конечно поржал с обязательного прохождения алгоритмической секции для вакансии, в которой надо круд шлёпать под фастапи и естественно отказался, и всё. Может быть я не в курсе каких то новых тенденций в поиске работы?
252 3501738
>>501424

>туда лезут


Если знаешь sql до оконных функций включительно - аналитические двери в любую контору открыты. Хуй знает, кого вы там делите на джуна и не джуна в sql. Есть сайт старый, его все знают. Как только на нем прорешал оконные функции - тебе везде рады.
253 3501740
>>501737
Что ты хочешь? Волшебных рецептов "как наебать систему и устроиться с первого раза"? Их нет. Мы не управляем рынком и сделать "специально для типя конкуренцию ниже))))" не можем. Именно так и ищут! Ебутся по 6-12 месяцев, откликаются на сотни вакансий. И где-то там на 162-ой попытке их моооожет быть возьмут на работу.
254 3501741
>>500431
Чувак, это никому нахуй не надо. Читай мой пост выше про оконные функции. И да, питон аналитику тоже не нужен, онли sql, но глубоко.
255 3501742
>>501740
Не не. Я просто спрашиваю, нормально ли это на сегодняшний день. Просто лет 10 назад я быстро находил и по собесам гонял. Но с тех пор какой хуйни только не произошло, вот и интересуюсь, правильно ли я всё делаю. Просто неделю в ленивом поиске провел и прям вообще ноль выхлопа.
256 3501744
>>493700
Скажи мне пожалуйста, что ты студент. Не могу придумать ситуации, где бы понадобился такой велосипед изобретать.
257 3501745
>>451277
Зачем ебать мозги себе и остальным, если есть loguru
258 3501747
>>453342
Так можно только если твой бот админ в твоей группе. Всё остальное через команду старт, такие правила в телеге.
259 3501754
>>460050
0. купи дешманский впс, подними на нем алпайн + докер
1. подними контейнер torserver (там есть свой апи), но отключи гуй и закрой в файрволле вообще всё, кроме пост-запроса с добавлением кина и гет-запроса с получением потока кина.
2. подними контейнер с постгрес
3. ВОТ ТУТ поднимай свой фастапи в отдельном контейнере, он должен осуществлять базовый круд в твой постгрес + всё, что душе угодно
4. напиши парсер торрентов и подними с ним контейнер, этот парсер будет работать с твоим фастапи по добавлению фильмов (+ добавление в торсервер) по schedule
5. напиши бота на аиограм, который через твой фастапи будет удалять кинцо, что бы удалять говно-кинцо из базы прям с дивана, не включая компа
6. напиши красивую веб-морду.... ну это я уже погнал, никто не обязан учить джаваскрипт
image.png365 Кб, 539x413
260 3501768
>>475937
Многопоточку (ясен хуй псевдо) на питуховене встречал только в pyside (это если ты вдруг решил упороться в написание ебала под десктоп на питоне).
А вот с асинхронщиной ты хамишь, паря.
261 3501770
>>475937

> асинхронщина вообще по мнению многих крутанов в питоне считается чуть ли ни раком


Наверно зависит от применения.
262 3501796
>>501296
Нахуя тут какой то nsum когда если все пишется в 2 строки буквально?
def f(x):
... return sum([x+1 if n < 5 else x+0.5 for n in range(0,11)])
image.png122 Кб, 780x1026
263 3501817
>>501731
Пишу всё в саблайме с темной темой. Там подсветка синтаксиса искаропки. Запускаю код в cmd. Никаких автодописываний и автододумываний, только хардкор. Если где то затупил, стараюсь подгугливать по старинке, без всяких дикпиков. Мозг так устроен, что на третий раз подгугливания начинает шевелиться и вспоминать сам, ибо заёбывается лезть в гугл и вот тут происходит запись инфы на подкорку. А отсутствие автокомплита тренирует мышечную память. Всякие там контекстные менеджеры и прочие шаблонные конструкции пальцы сами пишут.
Вся эта ваша залупа с ии оказывает вам медвежью услугу.
другой мимокрок
264 3501819
>>501817
Кстати, регулярку за одно подтянул на тестовых данных именно в саблайме
265 3501826
>>501817
Подсветка и в нпп изкоробки. Что с дополнением? С генерацией (не ии)?

> Запускаю код в cmd. Никаких автодописываний и автододумываний, только хардкор.


Попробуй pycharm. Не бойся, он бесплатный. Мож поумнеешь.
266 3501840
>>501741
А можешь конкретнее расписать что нужно?
267 3501867
>>501826

>pycharm


>бесплатный


Хехмда...
268 3501876
>>501867
Что не нравится?
image.png888 Кб, 1080x782
269 3501881
>>501817

>отсутствие автокомплита тренирует мышечную память


Бля! Серьёзно?
Мышечную память тренируешь. Набивая втупую последовательность символов, которые можно не набивать, но ты тратишь время на пустую бессмысленную работу вместо того, чтобы абстрагироваться от рутины и решать задачу. Думаешь кто-то будет тебе платить за мышечную память? Да она нахуй никому не упёрлась! Нужны решённые задачи!
270 3501883
>>501819

>именно в саблайме


Какой сюр. Со времён IDE от борланда (вот они, кстати, были охуитительны!) абсолютно похуй, кто в чём пишет. Для нормального разработчика разница между VIm и PyCharm исчезающе мала. Какие же тут нюфани сидят. И ведь верят, что "занимаются программированием", клепая микроскриптики.
271 3501902
>>501883
Клоун с двача, ебло оффни.
272 3501945
>>501883

>абсолютно похуй, кто в чём пишет


ты нахуя залез не вникая в чужую беседу, быдло? Я отвечал анону, который спрашивал:

>Тебе сука лень нормально написать названия софта???

273 3501947
>>501881

>Да она нахуй никому не упёрлась! Нужны решённые задачи!


Типичный додик. Ты еще скажи, что нужен рабочий код и похуй, как он там будет работать, главное работать конкретно сейчас.
274 3501949
>>501826

>Попробуй pycharm


Нахуй надо, это говно пожирает ресурсы, словно его писали двачеры этого раздела. Я бы тогда уж в вскоде писал, если бы хотел что то такое.
275 3501979
>>501883

>клепая микроскриптики


О, а вот и долбоёб, который вкручивает ООП везде, где надо и не надо и считает всё, что не ООП скриптами.
276 3502021
>>501840
https://sql-ex.ru
На этом сайте-решебнике зарегайся и решай задачки, как прорешаешь оконные функции - по крайней мере в один банк, где мой кореш работает старшим аналитиком тебя точно оторвут с руками. Во многие конторы тебя возьмут гораздо раньше оконных функций.
277 3502024
>>502021
И да, естественно решай сам, не скачи по задачам с ИИ за ручку, как козёл, это тебе нихуя не даст. Как упёрся во что то, пошел читать тему соответствующую. Только так.
Лично я в процессе решения понял, что работа аналитиком не моё, слишком скучная хуйня.
278 3502033
>>501947

>Ты еще скажи, что нужен рабочий код и похуй, как он там будет работать


Если бы ты был способен на программирование (а не на кодинг скриптов под себя), то однажды, попробовав заработать на этом умении, ты узнал бы, что для тех, кто платит за человекочасы, проведённые за IDE не существует такой сущности как КОД. Для них есть продукт, который либо помогает сэкономить, либо приносит доход, либо его можно продать и получить деньги. Для этого ПРОДУКТ должен решать некую ЗАДАЧУ. Если он с этой задачей справляется, то заказчику это нравится. Если не справляется, то заказчик недоволен. Всё. Остальное в 99% случаев неважно: ни язык, ни технологии, ни по большому счёту, даже производительность, если она не мешает бизнесу. Даже возможность расширения, доработок и всего такого тоже важны далеко не всегда, более того слишком редко можно понять, потребуется ли расширяемость в будущем (и если что, это будут отдельные задачи).
279 3502034
>>501949
У тебя некрокомп безssd? Но все остальное просто говно нерабочее для тех кто не видел иде в жизни.
280 3502052
>>501796

> Нахуя тут какой то nsum


А теперь добавь-ка сюда два тройных интеграла.
Если бы стандартная функция подходила, то и в тред писать не пришлось бы
281 3502062
>>502021
Понял спасибо
282 3502219
>>502034
Жопабрейнпетуч, тот анон прав.
283 3502221
>>502219
Нет
284 3502275
285 3502604
Питонобояре, сколько нынче не стыдно зарабатывать синьору с овер 5 годами опыта на пайтон? Поддерживаю два важных сервиса, менторю, пишу архитектуры и документацию, немного менеджерю.
286 3502644
>>502604
5к евро
287 3502688
>>502604
Возьми меня в подмастерья, сэнсэй.
288 3502690
>>501742
Вакансий стало в разы меньше, в оставшихся вакансиях появились ебанутые требования типа "3 года в AI и Ed-tech стартапах, чтобы писать нашу хуйню на джанго, только офис в Киргизии". Вакансии на ХХ такое чувство, что 99% фейк, чтобы рыночек мониторить, сколько не откликался - ноль реакции, авто-отписки везде. У меня 8 лет опыта, 6 из них - бигтех. Сократили в петушковом стартапе, второй месяц работу ищу, даже на тех собесы перестали звать. 3-5 лет назад совсем другой рынок был. Еще учитывай сезонный фактор, щас все о отпусках, ближе к осени активнее будут вакансии появляться, но тоже на многое надеяться не стоит
289 3502693
>>501737
Так не нанимает никто в 2025 году. Вот яндекс один из немногих, где вакансии какие-то открытые висят и туда даже нанимают кого-то. Когда рынок восстановится хз, наверное не раньше чем гойда закончится, то есть примерно никогда.
Ну и еще такой фактор, что на питоне перестали писать бекенд. Где надо было, там на го переезжают, где похуй, просто замораживают проект и оставляют на его поддержку пару человек.
290 3502724
>>501737
Крупные компании в телеге завели давно каналы и постят туда вакансии с контактами рекрутёров/HRов. Плюс есть отдельные каналы по разным стекам, которые рекрутёры тоже мониторят и перекидывают туда вакансии. От хх постепенно отказываются, поэтому если ты сейчас только через него ищешь, то ты уже проиграл.
291 3502830
В питоне массивы реализованы в виде объектов типа список. Но ведь списки слишком медленные, там ведь по идее указатели на следующий и предыдущий элементы. А как тогда быстрый доступ по индексу в питоновском массиве реализован? Какие оптимизации для этого используются в интерпретаторе?
292 3502831
>>502830
Массивы и списки (кортежи) - это разные структуры, дебич. И в питоне они реализованы по-разному.
293 3502852
>>502830
Список в питоне - это не связный список, это обертка над массивом, как и везде.
294 3502869
>>502852

>Список в питоне - это не связный список, это обертка над массивом



Ха! Питоновский массив реализован в виде обертки над массивом. А где про это в общих чертах почитать подробнее? Чтобы не лезть сразу в исходники жирнючего интерпретатора.
295 3502880
>>501744

> Скажи мне пожалуйста, что ты студент.


я самоучка, мне по кайфу циферки и переменные писать

>Не могу придумать ситуации, где бы понадобился такой велосипед изобретать.


ну и что ты как опытный сделал бы, чтобы получился тот же самый результат и при этом корректный?
296 3502916
>>502869
Зачем тебе это надо? Добавление в конец за о(1), в середину за о(n). За деталями да, в исходники.

>>502830
Прочел еще раз - у тебя тут хуйня. В питоне нет массивов.
297 3502987
>>502690
>>502693
>>502724
Пиздец, очко какое то. Думаю уже в сервисные инженеры любых аппаратов пойти (вендинг, кофе, весы...) там и бабла больше и мозгоебли меньше. Опыт есть.
>>502880

>ну и что ты как опытный сделал бы, чтобы получился тот же самый результат и при этом корректный?


Ну во-первых такое я бы писал на сях. Питон как минимум на уровень выше этого. Если это алгоритмы сортировки или поиска, то встроенные питонячьи методы уже максимально быстрее всего того, что ты сейчас сидишь и пердишь, при чем написано оно на сях. Почему я и сделал вывод для себя, ты решил окунуться в алгоритмы на питоне.
298 3503000
>>502830
[1,2,3] - массив
(1,2,3) - список
299 3503080
>>503000
Наркоман штоле? list это список по английски
1) list список
2) tuple кортеж
300 3503146
Ору с долбоёбов, которые не могут различить массив и список.
Хотя пихон долбоёбы именовали - там на уровне структур данных list это на самом деле массив, а tuple - это список. Хотя, впрочем, погремистов на пуфоне эти детали ебать не должны.
301 3503151
>>503080
Может, он на перле пишет.
302 3503155
>>503146
Чел, в ПНД и объясняй там, что ты знаешь правильное значение слов
303 3503160
>>503155
Я тут заглянул в репозиторий CPython и узнал, что я сам обосрался с определением, кортеж это не список, это тоже массив, но фиксированной длины. Если б кортеж был настоящим связным списком, то к элементам кортежа было бы нельзя обратиться по индексу.
304 3503163
>>503160
Почему ты решил что tuple это список если
1) Это неизменяемый тип данных
2) Имеет фиксированный тип. Например (1, 2, 3) имеет тип tuple[int, int, int]
305 3503168
>>503163

>Имеет фиксированный тип


Точнее тип с фиксированным количеством элементов
306 3503191
>>503163
Потому что на самом деле я тупица, просто я выучил горсть умных слов, научился делать серьёзное ебало и мне каким-то чудом повезло стать сеньором разработчиком.
307 3503198
Сукааа я ненавижу этот язык. По работе пришлось учить эту хуйню и в итоге приходится искать кучу ошибок даже в простом коде из-за ебаного синтаксиса с отступами. Раньше писал на Delphi, сейчас использую C, rust , vhdl и никаких проблем не было, а здесь из-за нбучего синтаксиса даже простое условие написать без синтаксических ошибок не просто.
308 3503214
>>503198
Пиздец ты неосилятор.
309 3503276
>>503214
А нахуй придумывать язык , который так зависит от синтаксиса ? Вместо того, чтобы думать над логикой программы я должен много времени тратить на поиск тупых ошибок . В Delphi к примеру с этим вообще никаких проблем не было - пиши как хочешь хоть в один столбец только не забывай ; в конце инструкций .
310 3503288
>>503276
Утёнок, спок. В сях-дельфях ваших ебаных если пропустил ";" - то всё, пиздец, ищи-свищи где ты этот кал забыл. Нахуй он нужон? Непонятно.
311 3503295
>>503288
Если в сишке пропустить ; то оно не скомпилится. Оно там лишнее, посему лучшая (с точки зрения синтаксиса) сишка - голенг
312 3503310
>>503276
>>503288
Не похуй ли, какие там отступы и точки запятые? Пишу время от времени код и на питоне, и на си, и на го - один хуй разницы. У питона просто синтаксис самый компактный. Текстовые редакторы, компиляторы и интерпретаторы в 2025 подсвечивают, где ты скобку или точку с запятой забыл, не надо ничего искать
313 3503332
>>503288
>>503295
ебать вы дауны конечно
314 3503337
>>503332
А я почему? В голенге же нет неоднозначного синтаксиса.
315 3503346
>>503337
Там есть богомерзкий :=
316 3503378
>>503346
Он опциональный.
317 3503393
>>503346
В пятоне тожи есть, а ты и не знал, пятонист...
318 3503397
>>503346
Как же ты обосрался, ух бля!
319 3503485
главное чтобы 8=З не было
320 3503490
>>503485
8=З (__!__)
321 3503642
>>503151
На джаве тоже наоборот.
322 3503646
>>503198
На самом деле я тоже сначала пригорал, когда из джавы пришел. Особенно из-за отсутствия четкой типизации, странного фора. Но потом вдруг как понял, что это самый кайфовый и дружелюбный язык, что в сишное даже возвращаться не хочется.
323 3503964
>>503276

>В Delphi к примеру


пипец ты дед, ещё бы фортран вспомнил или кобол
324 3503966
>>503964
Те, кто помнят кобол - лутают сотни тысяч долларов.
325 3504024
>>503964
Делфи ещё апдейты получает, кстати. Ну так, к слову.
326 3504444
За счет чего питон медленный? Почему функция с отключением GIL не дала прироста скорости в общих задачах?
327 3504481
>>504444

> Почему функция с отключением GIL не дала прироста скорости в общих задачах?


Классический "слышал звон". GIL актуален для многопоточных приложений, каковых немного. На однопоточные он не сказывается. Причём в режиме без GIL даже медленнее может работать.

В теории что может ускорять, как это JIT. Сейчас его тоже пытаются встроить в интерпретатор, в версиях 3.13 (действующая, но нужно компилировать специально для этого, по-умолчанию нет) и в 3.14 (в разработке, пока релиз осенью), но там он слабый, приличный JIT есть в альтернативном проекте PyPy. Он реально может на каких-то задачах разгоняться, но там версия 3.11 сейчас, и не со всеми пакетами совместимость есть.

Почему тормозной? Про это книги можно писать. Из-за архитектуры, где даже обычные целые числа это объекты, из-за того, что нужно поддерживать специфичный функционал, из-за чего там сложно оптимизировать, не ломая обратную совместимость.
328 3504483
>>504481
короче из-за архитектуры местами сомнительной начинаются тормоза.
Вот если у тебя функция, в ней примитивный цикл
def func():
ssum = 0
____for x in range(1_000_000):
________ssum += x
____return ssum

этот код будет работать очень медленно, не смотря на то, что вроде тут ничего сложного. Но в питоне ты тут работаешь с итератором, там довольно много операций происходит на каждую итерацию цикла, ssum это не переменная в смысле как в Си и других языках, это ссылка на иммутабельный объект. На каждую итерацию цикла создаётся новый объект, а это требует какого-то времени. Один новый объект для x, и ещё новый объект для ssum. Соответственно обновляется словарь внутренних переменных функции.

То есть реально тут адский оверхед, с которым сложно что-то сделать.
329 3504511
>>504444

> За счет чего питон медленный?


Интроспекция.
330 3504530
>>504444
Медленный для чего, нахуй? Для скриптов, для веб-приложений (где 99% времени это ожидание данных), для инженерных расчетов - он ебать какой быстрый.
331 3504550
>>504530

>для инженерных расчетов - он ебать какой быстрый


Нет. Юля и матлаб быстрее.
332 3504689
>>504530
В сетевых задачах он тоже крайне медленных, вообще всё медленно, что не работает на внешних модулях. Если сетевой код переписать на другой язык, обычно производительность будет выше. Не то, что на Го, даже на Node.js

Просто в реальности производительность обычно не нужна, а тормоза чаще не из-за питона, а из-за БД или ещё чего-нибудь.
333 3504882
>>501066

> DevOps -- тут есть дефицит мидлов, так что ещё можно пытаться.


Это все хорошо, но как попасть на джуна без опыта?

> QA -- хороших спецов даже уровня джунов мало. Всего по 1,5к человек на одну вакансию, даже не из кого выбрать.

334 3505122
>>501066

> это нужно с 12 лет было читать журнал "Хакер", а с 14 -- сидеть на тематических форумах, постепенно погружаясь в пучины даркнета. Тогда к 20 есть хороший шанс найти или уютное место для вайтхэта или неуютные нары.


Ну я лет 10-15 назад увлекался айтисеком. Как ты думаешь, сколько % моих знаний сегодня кому-то нужны? Я думаю что ты про айтисек по телеку слышал.
335 3506371
Чьи гитхабы читаете, аноны?
336 3506470
>>506371
Нахуя их читать?
337 3506820
>>506470
Вы вам перезвоним.
338 3507006
Есть 2 картинки. Какой самый лучший метод определить, есть ли сходство одной картинки с частью картинки в другой?
cv2.matchTemplate даёт очень много ложноположительных и ложно отрицательных мэтчей. Эта хуйня работает только из исходного изображения кропнуть часть, тогда он детектит идеально.

рандомпики
340 3507017
>>507006
Делал много лет назад похожую хуйню по работе. В основном темплейты использовал и на крайняк каскады, ничего лучше на тот момент ещё не придумали. Сейчас наверняка есть куча готовых решений на базе нейронок.

>cv2.matchTemplate даёт очень много ложноположительных и ложно отрицательных мэтчей


Вроде оно возвращает качество мэтча.
341 3507050
>>507006
Капчу ебошишь? Линии и фигуры одного цвета?
342 3507152
>>507050
Да, всегда одного цвета.
343 3507164
>>507152
Картинка монохромная?
344 3507165
>>507017
Нейронками капча разгадывалась еще лет 10 назад.
345 3508577
Все быстро учим БАЗУ
https://habr.com/ru/articles/911920/
image.png162 Кб, 1256x866
346 3508756
>>508577
Бля, да это же классика, хз, это жирные тролли составляли или реальные вчерашние вкатуны так выделываются. Ещё минута чтению и буду читать срачи в комментах
347 3508795
>>508756
Классический двач интернет, люди, которые нихуя не знают, учат других.
348 3508797
>>508756
Лол, так это не на проггера, а на QA? Рус ня совсем ожирела?
349 3508807
>>508756
>>508795
>>508797
Вы от хабрапетушни что то другого ожидали?
350 3508814
>>508807
Кто читает хабр и зачем? Кто туда пишет и зачем?
351 3508820
>>508814

>Кто туда пишет


Школьники
352 3508827
>>508820
Да разве? Туда от фирм копирайтеры серут. Сейчас там 0 коментов под большинством постов. Боты пишут для ботов?
353 3508828
>>508827
А почему ты у меня спрашиваешь? Хабрапараша днищем всегда было, я за этим говном не слежу.
354 3508853
>>508756
Я с множественного наследования угарнул. Кто его в 2к25 юзает?
355 3509235
>>508828
А что не параша?
356 3509263
>>509235
Мамка твоя, зануда
357 3509265
>>509263
Еблан тупой
358 3509417
>>509265
Пошел на хуй, петух
359 3509434
Почему JIT-компиляция не дает такого прироста скорости работы приложения, чтобы его можно было сравнить с аналогом, написанным на изначально компилируемом языке?
360 3509452
надо построить елочку .Я тупой , помогите . В чем тут ошибка ?
n = int(input())
for i in range(1, n + 1):
for j in range(1, i + 1):
print(j, end= ' ')
print()
361 3509469
>>509452
хочу чтобы решение было элегантное без дополнительных переменных и условий. Только на циклах,но как это сделать я понять не могу
1753895559804.mp41,3 Мб, mp4,
640x1136, 0:05
362 3509499
363 3509519
>>509452
print(" " * (n - i), end = ' ')
Я бы такое поставил перед вторым циклом
364 3509618
>>502916

>В питоне нет массивов.


Вообще-то есть array.array.
365 3509634
>>508577
В статье все по делу, такие простые вопросы не требуют подготовки или глубоких знаний, они максимально простые, но позволяют легко фильтрануть челиксов, не написавших ничего сложнее хеллоу ворлда. Просто первичный фильтр, чтобы сразу послать нахуй ебаклаков.
366 3509638
>>509634
В комментах всё по делу, надо код простой и понятный писать, а не изъебываться с тем, как твой обфусцированный говнокод поведёт себя, если ты намешаешь невероятный кейс из кучи крайних случаев, описанных в редакции R34Hui1488 питона версии 3.12
367 3509644
>>508853
Разработчики джанги.

>>509638
Там нет каких-то заумных или нестандартных штук. Компрехеншены пишут все, цепочечные сравнения тоже. Понимать, как они работают - это нормально.

Или ты хочешь сказать, что писать компрехеншены плохо? Если мидл реально думает, что (x for x in array) это тюпл, а не генератор, то это какой-то очень хуевый мидл.
368 3509645
Ну и пример со списком в качестве дефолта это классика любого техсобеса.
Если не знать, как это работает в питоне, очень легко обосраться и не заметить эту ошибку. Поэтому знать такие вещи это реально база, и любой человек, который реально пишет коммерческий код на питоне, с такими вещами так или иначе знаком.
369 3509648
>>509618
Который нахуй никому не нужен.
370 3509677
>>509645

>Ну и пример со списком в качестве дефолта это классика любого техсобеса


Это единственный действительно адекватный пример вопроса, питонист обязан это знать и помнить всегда

Остальные же вопросы из серии, что вчера сел всерьёз изучать питон, теперь считаю, что все остальные должны фишки знать. Это тест для вкатунов, который людей с реальным опытом ставит в тупик, потому что они хуйнёй не занимаются, ненужные вещи забывают.

Множественное наследование где-то используется, в виде миксинов, но такие вещи сложно помнить. Хотя если ходишь по собесам, то это та тема, которую точно стоит освежить
371 3509679
>>509634

>В статье все по делу, такие простые вопросы не требуют подготовки или глубоких знаний, они максимально простые, но позволяют легко фильтрануть челиксов, не написавших ничего сложнее хеллоу ворлда


Это тест для поиска людей, что НЕДАВНО начали изучать питон, обычно это показатель, что авторы тоже недавно его начали изучать, бывают же все эти 22-летние сеньёры
372 3509680
>>509434

>Почему JIT-компиляция не дает такого прироста скорости работы приложения, чтобы его можно было сравнить с аналогом, написанным на изначально компилируемом языке?


Она иногда может работать быстрее, то есть питоновский pypy код может работать быстрее кода на C++ с высокой оптимизацией
373 3509684
>>509644
бугурт это вызывает потому, что вопросы придумывали те, кто сам вчера только что-то изучил, и поэтому считают, что другие вопросы-ловушки должен легко уметь отвечать

Легко их отвечать можно тогда, когда специально к этому готовишься. Обычно это про тех, кто недавно изучал

Я не представляю, что это за код должен быть, где встречается

> 55 == True is True



С генераторами, в реальном коде можно встретиться с
g = (x for x in array)
хотя это больше гипотетически, не уверен, что прямо встречался. Используются генераторы списков-словарей-множеств, но в чистом виде генераторы редко

когда же вопрос формулируется как
print([x for x in array])
print((x for x in array))
print({x for x in array})

то это уже не вопрос на знание, а чисто вопрос-ловушка на невнимательность, на стресс на собесе и т.п. Отношение соответствующее.
image.png8 Кб, 341x292
374 3509686
>>509469
В питоне есть особая фишка для форматирования строк, модификатор "крышечка", что центрирует данные

Возможно это не то, что ты хочешь, тебе нужно именно учебный пример с двумя циклами, но так зато можно сделать элегантно
375 3509687
>>509634
Автор статейки, ты? Давай за множественное наследование поясни, схуяли человек, не пишущий на питуне ооп код, должен знать порядок наследования.
376 3509688
>>509644

>Разработчики джанги


Для чего? Есть примеры?
377 3509702
>>509687
Смотри, пример там сам простой, а вот пояснение показывает, что у автора судя по всему проблемы с головой серьёзные

Реально же всё проще, тебе эти слова "линеарилизация С3" знать не нужно. Класс D наследуется от B, C, в обеих классах определён метод hello(), поэтому на класс A можно не смотреть вообще. Соответственно вопрос, чьи методы в приоритете, первого класса или второго. Здесь B будет

Вопрос куда менее очевидный, если бы в B не был определён метод hello. Здесь уже надо знать специфику питона. По одной логике можно ожидать ответ A (как если бы мы класс B запустили, очень ожидаемое поведение), по другой C, что будет правильным ответом).

Вот на это уже совсем не так просто ответить на холодную, а можно вещь ещё сложнее придумать, сделав глубже наследование.

Наследование, в том числе множественное, всё-таки довольно часто используется, стандартный паттерн "mixin", на холодную на такие вопросы может быть сложно отвечать, но если ты ходишь по собесам, то эта та тема, которую стоит освежить. Само по себе наследование и минимальное ООП в любом проекте есть, без этого никуда.

Настоящее ООП это в любом случае не про питон.

Конечно, это не тест на мидла-сеньёра, то есть человек с опытом отвечать будет не лучше вкатуна на такие вопросы.
378 3509907
>>503198

>кучу ошибок даже в простом коде из-за ебаного синтаксиса с отступами


Имнно из-за него я абсолютно убеждён, что КАЖДЫЙ кодер в мире должен в обязательном порядке проходить курс по Питону. КАЖДЫЙ. Потому что блядь заебало, когда так наплевательски относятся к отступам и чуть что -- сиди и за очередным долбоёбом табы расставляй, чтобы понять, что он сказать-то хотел!
379 3509923
>>503964

>пипец ты дед


Зря ты так. Язык хороший, годный. У него две проблемы: нет прям свободного компилятора (inb4: Lazarus, но это не совсем тоже самое, там затык в относительно проприетарных VCL) и он очень многословен. Зато как и у питона у него есть фича: почти невозможно случайно выстрелить себе в ногу, так что идеологически языки очень близки.
Да, в Питоне до появления нотаций типов по ногам стрелять было проще, но чем дальше, тем меньше таких проблем.
380 3509959
>>509702

>ООП параша


Абсолютно бесполезная хуйня, просто трата времени и когнитивного ресурса.
>>509907

>кодер


Кодомакака не человек.
>>509923

>Да, в Питоне до появления нотаций типов по ногам стрелять было проще, но чем дальше, тем меньше таких проблем.


Они опциональны, дядь.
381 3509972
>>509907
чел, давно автоформаттеры придумали
382 3510042
>>509677
Покажи хоть одного вменяемого питониста, который не знает как использовать компрехеншены или цепочечные сравнения.

>>509684

>хотя это больше гипотетически, не уверен, что прямо встречался. Используются генераторы списков-словарей-множеств, но в чистом виде генераторы редко


Плохо, что не используешь. Да и скорее всего используешь, просто даже не знаешь, что это генераторное выражение.
' '.join(a for a in x) - это передача генераторного выражения в качестве аргумента например.

Алсо, "генератор списков" и "генератор" - это абсолютно разные вещи, он только на русском по какой-то причине называется генератором, на английском это list comprehension.

>>509687

>не пишущий на питуне ооп код


ООП это промышленный стандарт разработки. Если ты пишешь коммерческий код и не используешь ООП - сочувствую тому, кто будет твое говно потом разгребать.

>>509688
Посмотри код джанги, оно там буквально везде.

>>509702

>Настоящее ООП это в любом случае не про питон


А про что? Про ДЖАВУ?

>>509907
База
383 3510067
>>510042

>' '.join(a for a in x) - это передача генераторного выражения в качестве аргумента например.


У тебя реально такой код бывает?
384 3510070
>>510042

>А про что? Про ДЖАВУ?


Да, про джаву в первую очередь, и про совсем старый C++, новый давно в другую парадигму перешёл

Я надеюсь тебе не нужно объяснять, чем в контексте ООП общего у питона и джавы мало
385 3510078
>>510042

>ООП это промышленный стандарт разработки. Если ты пишешь коммерческий код и не используешь ООП - сочувствую тому, кто будет твое говно потом разгребать.


На самом деле это херня, если именно ООП, а не использование классов.

Не использовать классы в разработке не получится, куча библиотек на этом построена, в том числе некоторые стандартные модули, но использовать классы это ещё не значит "использовать ООП".

В основном мультипарадигмовые подходы, что-то, реально похожее на ООП, лишь в части проекта.
386 3510097
>>510070

>Джава


>правильный ООП


Понял, вопросов больше не имею
387 3510151
>>510070

>и про совсем старый C++


>ООП


>C++


Мань, ты серишь, вообще не понимаешь что пишешь, водочки ебни и успокойся.
388 3510175
>>509972

>чел, давно автоформаттеры придумали


В тепличных условиях, когда один язык и 100% контролируемая среда разработки -- да. Но чуть ты оказываешься в условиях ограничений -- появляется серьёзный шанс СОСНУТЬ.
А в реальном мире, вне твоей теплицы, этих шансов полно.
>>509959

>Кодомакака не человек.


Что поделать? Последний программист ушёл на пенсию лет 10 назад, а остались только кодеры, крудошлёпы, рисователи кнопочек на цсс и прочая нечисть.
389 3510185
>>509959

>Они опциональны, дядь.


Ну и что? Зато во встроенной либе и большинстве модулей они прописаны и IDE может понять, как пользоваться переменной.
То время, когда питон был настолько гибок, что из рук выскальзывал с его вообще-хер-пойми-какой-тут-окажется-тип в прошлом.
390 3510211
>>510042

> ' '.join(a for a in x)


Чем отличается от

> ' '.join(x)


?
391 3510252
>>510211
Конкретно тут ничем, я просто абстрактный пример привел.
392 3510298
>>510151
Это ты ничего не понимаешь, только баззвордов нахватался и думаешь, что умный. Старый C++ это настоящая классика ООП, прямо вершина из массовых языков, лучше джавы. Но позже его засрали STL и практика кодирования на нём сменилась

>Конкретно тут ничем, я просто абстрактный пример привел


Вот именно что абстрактный пример, потому что в реальном коде такого не будет
393 3510308
>>510298
C++ это антипаттерн ооп языка
394 3510356
>>509679
Статья про мидлов или сеньоров, но QA. А из всего этого выблева реальный пример только параметр по умолчанию.

>>510175

> В тепличных условиях, когда один язык и 100% контролируемая среда разработки -- да. Но чуть ты оказываешься в условиях ограничений -- появляется серьёзный шанс СОСНУТЬ.


> А в реальном мире, вне твоей теплицы, этих шансов полно.


Штоблядь? В любом вменяемом проекте есть правила оформления.
395 3510357
>>509686

> модификатор "крышечка", что центрирует данные


Хуясе. Это из дотнета портанули?

>>510211
Это просто пример. В реале будет (a.attr for a in x)
396 3510434
>>510042

>ООП это промышленный стандарт разработки


Дык автор статейки и не разработчик. И питун используется не только в разработке. Поэтому нет, ООП это давно не стандарт.

>Посмотри код джанги


Куда смотреть? Открыл гитхаб джанги, открыл core, посмотрел, нашёл только ThreadedWSGIServer который от двух классов наследуется. Куда смотреть, чтобы было "буквально везде"?
397 3510520
>>510175

>А в реальном мире, вне твоей теплицы,


валидаторы разметки придумали еще в прошлом веке. в нормальном проекте ты даже коммит сделать не сможешь если у тебя код стайл-гайдам не соответствует. во всех иде автоформат включен перед коммитом.
image.png23 Кб, 361x385
398 3510740
>>510434

>Дык автор статейки и не разработчик.


Это многое объясняет, в том числе такое странное видения разработки и скиллов разработчиков

>Куда смотреть?


На питоне убогая ООП модель и поддержка ООП, поэтому в чистом виде ООП никто не пытается делать. Вообще ООП была в моде 20 лет назад и раньше, с тех пор ушли от этого.

Без классов в питоне никуда, множественное наследование крайне редкая штука, но иногда встречается, в виде MixIn. У того автора примитивный пример, но по его объяснению видно, что он реально нихрена не понимает, но хочет казаться крутым и умным. Это диагноз.

Логика наследования в питоне абсолютно алогичная, с ней можно разобраться, но запомнить, чтобы решать задачи без подготовки, вряд ли. Потому что наркомания. Только если в проекте это используется активно, но лучше этим не пользоваться.

Вот скрин с действительно неочевидным примером, скорее всего 90% ответят неправильно, как будут работать эти два класса, потому что в адекватную логику это поведение не вписывается

Ответит только тот, кто недавно вгрызался в тему.

Нелогичной магии много, поэтому лучше этого просто избегать
399 3510771
>>509634

>В статье все по делу


Тащемта спорно.
Вот смотри:

> 55 == True is True


работает как

> (55 == True) and (True is True)


Круто. Но зачем мне это? Я знаю, что в цепочке

> Condition_1 or Condition_2 or Condition_3


я получу первое истинное утверждение или самое последнее, а в

> Condition_1 and Condition_2 and Condition_3


первое ложное или самое последнее. Это практически полезно потому, что ты можешь сделать что-то типа (пример из реального кода):

> ....def _enter_parameter(self, param: str, default: str = "") -> str:


> ........default = default or self.defaults[param]


Тут если значение по-умолчанию не пришло (оно определено для всех, но для кого-то оно переопределяется снаружи), то возьмётся значение из словаря.
Это - полезно и нужно от цепочек сравнения, а тот код это чисто лабораторная история, так что я не готов сразу сказать, в каком порядке он выполнится, я знаю, что bool(55) == True, но при этом True == 1 и True != 55, но приведённый код у меня в проекте никогда не появится в таком виде потому, что он нахуй не нужон.
Мне не нравится то, что интуитивно мне показалось, что это отработает как

> (55 == True) is True


которое будет ложным, но если его модифицировать до

> (55 == True) is False


то оно становится истиным.

Или вот:
{("a", [1, 2]): "value"}
Я как-то курил, так что я скорее всего правильно ответил бы. В процессе своих экспериментов я доходил до того, что делал ключом словаря кортеж функций. Но что важно, так это то, что по итогам я пришёл к мысли "ух, оказывается, как можно... Только НАХУЯ?" Эталонный троллейбус из буханки. А поскольку в реальном коде такого никогда не появится даже за 10+ лет практики, то этого нормально не знать.

Это я к тому, что критикуемый аффтаром ответ "у меня такого не было" НА САМОМ ДЕЛЕ единственно верный. Более того если у кого-то в коде ПОЯВИТСЯ такая конструкция, то я всерьёз спрошу с её втора, НАХУЯ. Потому что они почти все имеют неявное поведение, а в дзене питона сказано:

> Explicit is better than implicit.


При чём в самом начале, на второй строке. А использование такого мозгоёбства этот принцип нарушает.
399 3510771
>>509634

>В статье все по делу


Тащемта спорно.
Вот смотри:

> 55 == True is True


работает как

> (55 == True) and (True is True)


Круто. Но зачем мне это? Я знаю, что в цепочке

> Condition_1 or Condition_2 or Condition_3


я получу первое истинное утверждение или самое последнее, а в

> Condition_1 and Condition_2 and Condition_3


первое ложное или самое последнее. Это практически полезно потому, что ты можешь сделать что-то типа (пример из реального кода):

> ....def _enter_parameter(self, param: str, default: str = "") -> str:


> ........default = default or self.defaults[param]


Тут если значение по-умолчанию не пришло (оно определено для всех, но для кого-то оно переопределяется снаружи), то возьмётся значение из словаря.
Это - полезно и нужно от цепочек сравнения, а тот код это чисто лабораторная история, так что я не готов сразу сказать, в каком порядке он выполнится, я знаю, что bool(55) == True, но при этом True == 1 и True != 55, но приведённый код у меня в проекте никогда не появится в таком виде потому, что он нахуй не нужон.
Мне не нравится то, что интуитивно мне показалось, что это отработает как

> (55 == True) is True


которое будет ложным, но если его модифицировать до

> (55 == True) is False


то оно становится истиным.

Или вот:
{("a", [1, 2]): "value"}
Я как-то курил, так что я скорее всего правильно ответил бы. В процессе своих экспериментов я доходил до того, что делал ключом словаря кортеж функций. Но что важно, так это то, что по итогам я пришёл к мысли "ух, оказывается, как можно... Только НАХУЯ?" Эталонный троллейбус из буханки. А поскольку в реальном коде такого никогда не появится даже за 10+ лет практики, то этого нормально не знать.

Это я к тому, что критикуемый аффтаром ответ "у меня такого не было" НА САМОМ ДЕЛЕ единственно верный. Более того если у кого-то в коде ПОЯВИТСЯ такая конструкция, то я всерьёз спрошу с её втора, НАХУЯ. Потому что они почти все имеют неявное поведение, а в дзене питона сказано:

> Explicit is better than implicit.


При чём в самом начале, на второй строке. А использование такого мозгоёбства этот принцип нарушает.
400 3510787
>>510740

>множественное наследование крайне редкая штука, но иногда встречается


Дык в том и дело, что и тут, и на петухабре утверждают, что оно повсеместно встречается. Джанго два раза упомянули. Я открыл репу и не нашёл "повсеместного" использования. Вот у меня и конфуз. Может в сферах, отличных от разработки и обработки данных, это реально какая-то сверх-тактика, до которых ещё не дошли веяния из остального мира, где к наследованию уже пару десятков лет прохладно относятся, а уж к множественному тем более (независимо от языка)?
image.png66 Кб, 840x337
401 3510906
>>510787
На проекте, где я работаю, используется, но это MixIn

Смысл в том, что есть классы, описывающие объекты-модели Sqlalchemy через declarative_base, скрит из документации, и помимо Base добавляются ещё некоторые классы

Это принцип MixIn, эти классы содержат методы, что используются одновременно в разных моделях, чтобы не было дублирования кода. Это не совсем принципы ООП, в некотором роде это отступление от чистого ООП

В подобном варианте не только в алхимии используется, довольно часто, но всё-таки это не совсем множественное наследование. Здесь, например, предполагается обычно, что методы не конфликтуют друг с другом
image.png85 Кб, 810x503
402 3510908
>>510906
Чуть не то отскринил, вот пример из документации алхимии, как это выглядит
403 3510915
>>510771

>> 55 == True is True


>>работает как


>> (55 == True) and (True is True)


>Круто. Но зачем мне это? Я знаю, что в цепочке


Что забавно, что вот написанное пояснение автором это ещё в добавок полный бред
Потому что работает это так
(55 == True) is True
нет никого and
При этом True это сравнение по id, то есть
A is B
по смыслу эквивалентно
id(A) == id(B)
оператор is нужен только для того, чтобы сравнивать, что два класса это строго два одинаковых класса
В 99 процентах случаев нужен для
some_var is None

Автор не только спрашивает бесполезную херню, пытается ловить на невнимательности, но и сам не понимают в тех вещах, которые спрашивает
404 3510921
>>510915

>Что забавно, что вот написанное пояснение автором это ещё в добавок полный бред


Хотя нет, не бред в данном случае, а именно магия не очевидная совсем

У питона есть фишка, известная, что можно делать
a < b < c
и это исполняется как (a < b) and (b < c)
это очень полезная возможность, это бытовое интуитивное восприятие этого выражения

Я так понимаю, оператор is подчиняется этому же правилу, хотя ни разу не очевидно. Но вот предлагать знать и помнить такую хрень это заведомо бред какой-то

Не представляю в принципе код, где что-то такое может быть разумно
image.png25 Кб, 587x573
405 3510947
>>510915
>>510921
Там чел сразу приложил пик в комментах. Но не автор статейки, что показательно.
406 3511046
Тут выше был срач, что в питоне ненастоящее ООП. Я понимаю, что в данном случае тут течет жир, но вообще я не единожды встречал такой базар.
Что вообще под этим имеется в виду? Почему так говорят? Типа в питоне нельзя создать объект с некоторыми свойстваим или че?
407 3511116
>>511046
Настоящее ООП есть только в единственном языке Smalltalk
image.png45 Кб, 368x142
408 3511145
>>510915

>Что забавно, что вот написанное пояснение автором это ещё в добавок полный бред


>Потому что работает это так


Нет, это не так, автор тут прав.
image.png141 Кб, 411x834
409 3511146
>>511046
Это адепты единственно правильного и лучшего ООП языка в мире.
410 3512281
>>511046
Предположу что потому что в питоне нет приватного скоупа и как следствие - инкапсуляции. Но соблюсти все условия каноничного ООП практически невозможно и по-моему ни один язык их не соблюдает полностью (не уверен насчет смолтока).
Но на ООП естественно лучше не зацикливаться, лучше писать попроще.
411 3512302
>>512281

>Предположу что потому что в питоне нет приватного скоупа


Приватность такого скопа это условность, залезть туда не составляет ни какого труда при желании из любого места. И что это тогда, просто оформленная в синтаксис защита от дурака? Другими словами, это то же самое соглашение, только более формальное. Питон не выебывается и имеет менее формальное соглашение: просто не трогать _нэйминг.
Алсоу, ООП это абстракция, споры про настоящесть ооп это конечно же толстота.
412 3512343
>>512302
Парадигма ООП нужна для того, чтобы разрабатывать огромные и сложные программы. Она не про учебные примеры, где всё неизбежно высосано из пальца.

Главное здесь это особая строгость, чёткая иерархия наследования, типов, интерфейсов, без этого сложно поддерживать большие программы, с долгим циклом разработки.

Когда шизят про то, как плохо без типов в питоне, что можно вместо числа подставить строку, это реально шиза, высосанная из пальца. Но когда идёт речь про сложные типы данных, про классы, это не ерунда.

Ты строишь одну иерархию классов-интерфейсов, там есть какой-то класс с методом, что берёт одни параметры, возвращает другие. Какие-то другие части твоего кода работают с этим классом. Если ты захочешь чуть изменить параметры метода, то тебя ждут проблемы с поддержкой, питон проглотит это, слетит что-то лишь в момент исполнения.

Слабая инкапсуляция это тоже история, отсутствие final и другое

Впрочем сам чистый ООП подход больше вопросов вызывает, нужно ли. Модно было в начале нулевых, но потом отказались от этого в пользу мультипарадигмовых подходов.
413 3512384
>>512343
Надо просто не жопой, а глазами читать аннотацию и комментарии к методу. Всё, проблема решена.
414 3512394
>>512384
Ты что-нибудь крупнее 100к строк писал?
Нахуй мне читать что-то, если компилятор подскажет? Подсветит красненьким, не даст ошибок сделать? Ты хоть понимаешь, как это экономит время и деньги?
415 3512412
>>512384
Только на мелком проекте
На большом, который делается годами, массой разработчиков, это не работает.

Интерфейс фиксирует стандарт, когда ты меняешь интерфейс, в компилируемых языках ты так просто ничего не сломаешь. А в питоне легко.

Главное, ООП придумывали как раз для того, чтобы добавить такую строгость в проектирование, а питон от неё ничего не оставляет, поэтому ООП там неполноценный.
416 3512431
>>512412
Если тебе надо поменять интерфейс в питухоне, то, вероятно, будет неплохой идеей хотя бы одну извилину временно включить, ради такого случая и не кататься ебалом по клавиатуре, пускать слюни и плакать что компилятор тебе сопли не утирает.
417 3512445
>>512431
Алсоу. В питоне более чем достаточно инструментов чтобы не срать в штаны из за того что всё не так как в твоей любимой жаве, ты год уже ИТТ ноешь об одном и том же, мог бы и повысить скилл в этом направлении. Ну или тебе просто нарвится сраться на эту тему.
418 3512448
>>512445
копинг какой-то
Питон не предназначен для действительно серьёзной разработки, масса аргументов для этого есть. Но да, на нём при этом ведут серьёзную разработку иногда.

Надо просто уметь называть вещи своими именами
419 3512454
>>512394

>Нахуй мне читать что-то, если компилятор подскажет? Подсветит красненьким, не даст ошибок сделать? Ты хоть понимаешь, как это экономит время и деньги?


Во всех более-менее адекватных проектах используют тайпхинты и/или модельки на пайдантике. Так что при передаче неверного типа ИДЕ тебе точно так же будет подчеркивать ошибку.
420 3512456
>>512302

>Приватность такого скопа это условность, залезть туда не составляет ни какого труда при желании из любого места. И что это тогда, просто оформленная в синтаксис защита от дурака?


Да, очень много чего в программировании - это защита от дурака, потому что такие ошибки "ненароком" и составляют большинство.

>Питон не выебывается


И тем не менее вводит type hints, что суть такая же защита от дурака.
421 3512469
>>512456
Ну так я про то и пишу и там условность и тут условность. Только "там" более строгая, а питон не выебывается и соглашения тут по рукам макаку не бьют, потому что это всё равно от ошибки не спасет, если ты мозг отключаешь, когда питонируешь.
422 3512473
>>512469
Так я о чём и говорю, если бы это не спасало, тайп хинты бы не вводили, что суть статическая типизация.
Наоборот это признание того что статические проверки нужны, и да, нужно выебываться.
423 3512835
>>512473
Куда-то тебя понесло. Это ни какого отношения к нити не имеет. Изначальный пост был что "ваше ООП не ООП потому что нет приват скопа". На что я отвечаю что приват скоп это соглашение, в питоне есть своё соглашение которое закрывает именно этот вопрос, это _нейминг. И в контексте ООП это не имеет значения, потому что ООП само по себе абстракция.

>статическая типизация


Тайпхинт это даже не близко статическая типизация. Это прежде всего подсказка макаке, не обязательная часть описания блока кода, и только бонусом на неё всякие надстройки ориентируются, чтобы проверять ошибки макаки. Но в первую очередь это для человека. Как и соглашение в виде _нэйминга.

Я не вижу в этом ни какой проблемы, если ты ебалом по клаве катаешься то тебя типизация и приват скоп не спасут, а если не катаешься, то спокойно идешь и применяешь все инструменты которые тебе помогают комфортно работать и не допускать ошибок в больших приложухах.
424 3512853
>>512835

>Я не вижу в этом ни какой проблемы, если ты ебалом по клаве катаешься то тебя типизация и приват скоп не спасут, а если не катаешься, то спокойно идешь и применяешь все инструменты которые тебе помогают комфортно работать и не допускать ошибок в больших приложухах.


Остаётся только вопрос зачем тайпхинты ввели, если они так сильно не нужны.
425 3512878
>>512853

>если они так сильно не нужны


Как сильно? Ты этот тезис сам придумал.
426 3512938
>>512835

> Это прежде всего подсказка макаке,


Какой блядь макаке? Кто такая макака? Ты?
Это подсказка иде чтобы дополнение работало и материалась.
427 3512973
>>512938
Этой макакой был Альберт Эйнштейн, нет ТЫ
428 3512988
>>512853
Чтобы подсказывали сигнатуру метода. Ты че за тупые вопросы задаешь?
429 3513089
>>512835

>ваше ООП не ООП потому что


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

Когда у тебя большой проект. тебе необходимо дорабатывать одни части программы так, чтобы они при этом не ломали другие, и одновременно чтобы какая-то гибкость была.

Ради этого пытались придумывать ООП. Где у тебя части программы общаются через классы, что выстроены в нужную иерархию.

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

В питоне же не такой типизации, там принцип утиной типизации, или прототипной (или протоколы, в терминологии питона). Ты можешь передавать что угодно куда угодно, главное для работы, чтобы был соблюдён нужный интерфейс, строго говоря, ты может общаться через класс, который даже не наследник от того, что обычно. И всё будет работать. Это даёт больше гибкости, но одновременно создаёт проблемы,, нет строгости, нет возможности что-то дорабатывать, не ломая то, что есть.
430 3513381
>>513089

>ООП это технология


Дальше не читал.
Как эта болезнь называется?
431 3513448
Решил вкотиться в эту вашу змею после 6+ лет на .Net + SQL + JS.
Начну вот с этого:
https://docs.python.org/3/tutorial/index.html

Цель: мышинное обучение. Может быть, найду что-то в связке с ML.Net.

Годная идея?
432 3513466
>>513448

>мышинное обучение


>Годная идея


нет, там знание питухона вторично, первично это либы и матчасть. Начни с Нампи он везде и книги Тарика Рашда и зделой свою нейронку.
433 3513485
>>513448

>Решил вкотиться в эту вашу змею после 6+ лет на .Net + SQL + JS.


>Начну вот с этого:


>https://docs.python.org/3/tutorial/index.html


Да, официальный туториал более чем годен, если ты программировать в принципе умеешь, даётся как раз то, что нужно

Это про питон вообще, сам предмет ML конечно надо отдельно изучать, это более ёмкая сфера, чем особенности питона
434 3513603
>>513485

>Это про питон вообще, сам предмет ML конечно надо отдельно изучать, это более ёмкая сфера, чем особенности питона


Я бы с большим удовольствием работал с ML.Net, потому что там и производительность лучше, и стек крутой и морально близкий, и те же нативные либы С++ подключать не сложно.
Но Питон мне точно нужен.
И в параллели уже уходить в математику. Мне это интересно.
435 3514056
>>513448

> .Net + SQL + JS.


Объясни почему почти все дотнетчики - фулстаки?
Ни в одном бэкенд-ориентированном языке (кроме JS) такого не видел.
436 3514226
>>514056

>Объясни почему почти все дотнетчики - фулстаки?


Много сложных систем на .Net (всяких CRMок), где нужно и с БД возиться, и с фронтом. Кстати, я передумал становиться модным фуллстеком и изучать всякие Ангуляры и Реакты в глубину. Они не особо сложные, но суть в другом. Сейчас надо любой ценой катиться в бекендовский машоб.
437 3514553
>>514056

>Ни в одном бэкенд-ориентированном языке (кроме JS) такого не видел.


Ты шутишь? В джаве практически всегда фулстак
438 3514563
Здравствуйте уважаемые кодеры.
Возник такой вопрос. А не утопия/зашквар ли делать на python андроид приложухи?
Можно ли сделать что то годное с красивым дизайном на подобии современных приложух. Просто чекал экземплы киви фреймворка и честно говоря - лагучая хуйня. Что скажете?
439 3514774
>>514563

>Что скажете?


звучит как хуйня. Реакт Натив без вариантов.
440 3514801
>>514553

> Ты шутишь? В джаве практически всегда фулстак


Лолшто
Почти не видел вакух на джаву, где требуют серьезное знание фронта.
441 3514802
>>514563

>утопия/зашквар


This
Не выебывайся и пиши на котлине
442 3514841
>>514563
В теории ты можешь на Jython написать, но это конечно будет непросто
443 3515016
>>514774
Да я понимаю что звучит как хуйня. А реакт нейтив я знаю, просто мне было интересно прав ли я насчёт python+android
Как оказалось да. Ну и хуета блять
444 3515057
Попытался установить чтобы py файлы открывались старой версией. Не работает, сука! Py запускает нужную версию, а вот файлы открываются новой! Ебаный питон!
445 3515068
вкатываюсь в питухон, заебало сидеть, ещё и в хуёвый вуз поступил
446 3515084
У вас в пайтоне можно из метода в блоке return несколько переменных вернуть, охренеть! В джаве такого нет.
447 3515085
>>515084
Можно, но не нужно.
448 3515234
В бэкенд на Python (Django, Flask, FastAPI) еще реально вкатиться?
449 3515272
>>515084

>return несколько переменных вернуть


Это как?
450 3515285
>>515234
Выбери что-то одно. Шансов мало, но они есть
451 3515330
>>515234
В питон вообще тяжело вкатиться, из бэка наверное за Django, чаще в виде DRF, какой-то рынок есть. FastAPI тоже используется, но есть ощущение, что это редко и совсем не для джунов там, но может я не прав.

Остальные фреймворки (Flask, AioHTTP) как самостоятельные не существуют

Если вкатываться в бэк, может стоит на PHP смотреть. Если желудок достаточно крепкий, конечно. Питон оверхайпед, дикая конкуренция, а веб бэк на нём не то, чтобы активно делают. А PHP брезгуют, при этом так нереально много на нём чего сделано, что нужно поддерживать

>>515272

>Это как?


def foo():
____return 1, 2, 3

v1, v2, v3 = foo()

это через неявное создание tuple, фишка красивая, но по-моему в реальной жизни не то, чтобы очень часто используется
452 3515347
>>515084
Это называется "кортеж". Как массив, только иммутабельный.
453 3515363
>>515234
Я в начале 2024 вкатился со знанием бэка на Питоне (django/drf) + Джаваскрипт (vuejs) + Линукс, но было сложно. Щас наверное ещё сложнее.
454 3515367
>>515363

>+ Линукс


Нинужно.
455 3515372
>>515367
Линукс это стандарт профессионализма, вместо линукса может быть умение работать в консоли MacOS. Дружба с линуксом даёт тебе сразу много баллов в рейтинг, возможность сильно выделиться из других, шансы на существенно возрастают
456 3515378
>>515372
Пчел, никто не пользуется линуксом.
457 3515391
>>515378
Линукс это стандарт индустрии. Все пользуются линуксом. Если ты не пользуешься докер-контейнерами, тебя обоссут, а докер-контейнер это по-определению линукс, даже не Макось

Подавляющее число всех серверов работает под линуксом, по крайней мере пока речь идёт о питоне, а не dotnet/c#

Короче, я бы настоятельно рекомендовать вложиться в том, чтобы освоиться более-менее с линуксом, это реально полезно, особенно с точки зрения шансов на устройство куда-либо
458 3515422
>>515367

>>+ Линукс


>Нинужно


Джвачую, пердолики не нужны
image81 Кб, 1038x735
459 3515429
>>515391
Ты вот про эту хуйню? А линукс тут при чём?
460 3515528
>>515429
Ну давай, напиши мне докерфайл для контейнера чтобы туда все зависимости подтянуть и вот это все. Без знаний линуха.
461 3515538
>>515528
Фанатик, плес. Нахуя нужно знание линукса для написания докерфайла? Или ты вот эти вот RUN mkdir -p $MY_PROJECT_PATH называешь знанием линукса?
462 3515552
>>515330
А где на питоне есть вакансии? Только не надо ML и прочие дата аналитика - там питон 0,1% от знаний.
463 3515558
>>515330

> это через неявное создание tuple, фишка красивая, но по-моему в реальной жизни не то, чтобы очень часто используется


Это пиздоблядофича. Перепутал параметры - привет, баги. Поэтому и не используется.

>>515367
+. Прошивка для хостинга.

>>515372

> умение работать в консоли MacOS.


Не ну программу из сосноли я умею запустить.

>>515391
Кто все, блядь? Ты про кого сейчас? Про хостинг? Про разработчика? Про пользователя?

>>515538
+. Еби этого прыщедебила.
464 3515569
>>515558

>Поэтому и не используется.


А как же:
zalupa, created = Zalupa.objects.get_or_create(name="zalupa", defaults=defaults)
465 3515570
>>515569
Где это?
466 3515571
>>515558

>Это пиздоблядофича. Перепутал параметры - привет, баги. Поэтому и не используется.


Иногда всё-таки используется, но обычно это для каких-то приватных методов. Ты выносишь функционал в отдельную функцию-метод, возвращаешь несколько значений. В такой ситуации перепутать сложно.

Вот чтобы это светило куда-то во внешний мир, такое уже сильно реже, но иногда может

>Не ну программу из сосноли я умею запустить


Минимальный джентельменский набор, это права на файлы, утилиты типа kill и разные прерывания, перенаправление вывода, утилиты вроде ps ну и прочая такая всячина. Если ты это умеешь, и если не умеешь, уже большая разница. Всякие tcpdump ещё.

Если знаешь на ещё более продвинутом уровне, то лучше. Это твоё конкурентное преимущество, довольно серьёзное. Это показывает, что ты настоящий айтишник, к тебе относиться уже по-другому будут.

>Кто все, блядь? Ты про кого сейчас?


Про сферы, где используется питон, про бэкенд и т.п. Не про ML скорее всего, там свой мир

>>515552

>А где на питоне есть вакансии?


Довольно много, вне ML, Django и тестирования. В основном это, наверное, бэкент и системный софт. Тут, конечно, тоже нужна масса своих знаний помимо питона. Но по-моему только в Java/C++ можно выбрать чисто на языке, в других направлениях предполагается охват в ИТ достаточно широкий
467 3515572
>>515570
А ты точно пайтон девелопер?
468 3515580
>>515572
А что? Какой нужен?

>>515571
Один хуй когда-то перепутаешь или добавится лишняя переменная и привет.

> прерывания,


Что?

Не ну настолько я знаю и линупс и винду

> Это твоё конкурентное преимущество, довольно серьёзное. Это показывает, что ты настоящий айтишник, к тебе относиться уже по-другому будут.


И каким образом оно тебе поможет? Если ты будешь работать на фирме то к боевому хостингу тебя никто не подпустит.

> Про сферы, где используется питон, про бэкенд и т.п. Не про ML скорее всего, там свой мир


См выше

Django это есть бекенд :) А кроме него?
469 3515588
>>515580

>> прерывания,


Бля, травмы детства, живу на линуксе, а вот иногда возьми, да прорвёт. Сигналы, конечно же

>И каким образом оно тебе поможет? Если ты будешь работать на фирме то к боевому хостингу тебя никто не подпустит


В боевому нет, а к отладочному да. И вообще, это показывает, что ты реальный айтишник, в отличии от многих других непонятных херов, с которыми ты конкурируешь

>Django это есть бекенд :) А кроме него?


Джанго это веб-фреймворк, он сомнительный. Во многих случаях у тебя система работает через питон, но веб части может толком не быть. Задача питона обслуживать работать с базой данных, редисами всякими, получать-пересылать данные, работать с ОС в том числе. Это стандартный системный бэкенд. В таких задачах питон достаточно активно используется.
470 3515592
>>515588

>Джанго это веб-фреймворк, он сомнительный


Нихуя себе, у нас в треде ЭКСПЕРТ
471 3515614
>>515588

> а к отладочному да.


Это который manage.py runserver? :).так там никакого линупса нету.

> И вообще, это показывает, что ты реальный айтишник, в отличии от многих других непонятных херов, с которыми ты конкурируешь


Ну я неебу как у вас в манямирке, но джангоебы которых я видел работали на Винде и в хуй не дули.
472 3515628
>>515614

>Ну я неебу как у вас в манямирке, но джангоебы которых я видел работали на Винде и в хуй не дули


Вопрос ещё в том, что за руководство у проекта, если там все сплошные виндусятники, то может быть но лучше в такие места не идти

А так, тут примерно как с когда-то модным литкодом, по работе нахуй не нужно, но крутым алгоритмистам предпочтение

Ты просто поставь себя на место тех, то набирает на работу. Если мы про вкат, конечно. Вот есть куча херов, но пойди пойми, кто из них адекватный, кто не, как специалист.

Если у тебя нормальные знания линукса, это сразу показывает, что ты скорее всего айтишник, ты мыслишь как айтишник, а не рядовой вкатун-перекатчик с продаж.

Короче, надоело спорить. Тем, кто хочет вкатываться, просто заметка, квалификация в линукс-части это то, что реально замечают. Конечно, если ML, там наверное уже не так важно, но может тоже работает. Конечно математика там важнее, но если у вас вышки математической нет, то вы так просто её не получите уже. А квалификацию по ИТ повысить можно
473 3515632
>>515628

> Вопрос ещё в том, что за руководство у проекта, если там все сплошные виндусятники, то может быть но лучше в такие места не идти


Прыщееб интернетный, иди нахуй. Проект работает и приносит бабки.

> крутым алгоритмистам предпочтение


Олимпиадным программистам? В твоём манямирке разве что.

Да, я даже не с ращки.
474 3515641
>>515632

>Да, я даже не с ращки


Тису переплывал?

>>515632

>Прыщееб интернетный, иди нахуй. Проект работает и приносит бабки


Даже на PHP проекты бывают, что бабки приносят. Вообще не показатель, с клиентами продажники работают, они не видят, какой лютый треш может быть внутри
475 3515651
>>515641
На поезде переезжал, а что?

Нахуй мне с тобой дискутировать?
476 3515692
>>515628
Крутых алгоритмистов как раз и скипнут потому что когда им предложат проект, в котором их знания будут юзаться в полной мере они свалят. Термин оверквалификейтед не просто так придумали.
477 3515787
>>515558

>Кто все, блядь?


Ну я.
478 3515833
>>515787

> >Кто все, блядь?


> Ну я.


😀😀
479 3515867
>>515651
Когда нечем гордиться по делу, даже с главной ОС индустрии разобраться не можешь, остаётся гордиться только своим паспортном, ясно, понятно...

>>515570

>Где это?


В джанго
480 3515876
>>515867

> Бабах


Ты себя чувствуешь опущенным по сравнению с другими странами?
Я хз как у вас, но у нас так.

> даже с главной ОС индустрии разобраться не можешь,


Пиздуй в s, пердоля. Здесь тебе не рады.

> В джанго


Ну ок, бывает, но нечасто.
481 3515887
>>515422

>Ряяя пердолики


>Ряяя прыщи


Тем временем соседний тред С++ обезьяны до сих пор не могут срать юникодом в виндовую калечную консольку.
482 3515888
>>515876

>Ты себя чувствуешь


Ты хоть сам вкатится, в IT работаешь? Или тебя не берут? Если не берут, то совет, освой линукс, реально за человека считать станут. Но и алгоритмы тоже полезны

Я давно в индустрии работаю, на сенько-позиции (чувствую себя мидл-мошенником)

>Пиздуй в s, пердоля. Здесь тебе не рады


Пытающиеся вкатиться может быть. Ну типа зачем мне квалификация серьёзная, так возьмите, я же не ращаванин, сам видел, работают херы непонятные, бабло гребут

Хочешь быть спецом, изучай линукс, сети, специфику БД и массу ввего ещё
483 3515893
>>515888
Я видел как люди на винде работают. То наверно не спецы, ну или не такие спецы. В душе неебу зачем рядовому джангоебу знать как оно будет на луниксе пахать.

Как у вас в раш ке - в душе неебу.
484 3515895
>>515887
Можно пояснить, это проблема винды или cpp?
485 3515897
>>515895

>Можно пояснить, это проблема винды или cpp?


>>515887

>Тем временем соседний тред С++ обезьяны до сих пор не могут срать юникодом в виндовую калечную консольку.


винды, с питоном такая же история
486 3515900
>>515897

>винды, с питоном такая же история


хотя nodejs вроде бы нормально работает, но это не точно. Точно то, что питон не работает. в win10 по крайней мере
487 3515905
>>515900
кстати, вопрос тем, кто виндой пользуется, как вы выводите в консоль текст на русском языке или украинской мове?

Не так давно с этим столкнулся, когда пытался что-то под виндой запустить. Сам пользуюсь только линуксом, там нет этих проблем

Нода-жс при этом умеет выводить юникод в консоль, а питон нет, pypy по крайней мере

Наверное это как-то перебарывается, но не было времени разобраться
488 3515912
>>515897
Винда могла в юникод самое позднее в нт 4. Питон работает замечательно. Может с руками что-то не так?
489 3515917
>>515905
Все работает из коробки. Ты не во времена двойки последний раз питон щупал? И проблемы были только с умляутами на русской винде, например.
490 3515925
>>515917
Я посмотрел, стандарный CPython работает нормально, а вот PyPy версия с юникодом не дружит

pypy нужен главным образом для того, чтобы можно было высылать софт в виде zip-архива и без лишнего гемора запускать, народу, далёкому от этих вещей

ладно, надо думать, как обходить тогда
491 3515930
>>515925
Pypy проблемки. Нахуй он нужен?

> чтобы можно было высылать софт в виде zip-архива и без лишнего гемора запускать, народу, далёкому от этих вещей


В экзешник можно сконпилить.
492 3516025
Аноны, как по феньшую делать свои декораторы для методов класса?

class Test:
def decorator(func):
def wrapper(args, kwargs):
print('foo')
result = func(
args, kwargs)
return result
return wrapper

@decorator
def method(self):
print("bar")

Вот это единственный вариант, но в таком виде это просто сторонняя функция, которая сидит в скоупе класса и ни как к нему не относится, какое-то это васянство? Или так делают? А выносить декоратор вне класса я тоже не хочу, хочу чтобы всё было в одном блоке класса.
493 3516230
>>516025

>А выносить декоратор вне класса я тоже не хочу, хочу чтобы всё было в одном блоке класса.


Зачем? Логика декораторов другая, они применяются в момент создания функций-классов-методов

Когда ты применяешь декоратор к методу класса, самого класса ещё не существует, соответственно тут поведение будет очень неочевидное

Логика декораторов в другом, они и не должны быть частью твоего класса. Описывай просто класс в отдельном модуле, и в нём не декораторы

Возможно вообще тебе нужны не декораторы, а что-то ещё
494 3516234
>>516230
У меня класс это графическая часть приложения запускаемая в своем потоке. Декоратор, который я добавляю к методам, добавляет этим методам определенную потокобезопасность. Очень удобно шлёпнул сахарак над методом и готово, не нужно городить огород. Саму логику обертки тоже удобно менять в одном месте. По всему получается что место этого декоратора именно в этой абстрации, она логически его часть, но синтаксически это получается просто функция внутри скоупа класса, которая не имеет отношения к экземпляру.
Вся загвоздка только в том, что синтаксис декоратора не позволяет его приписать к классу, а логика приложения чотко говорит что ему тут самое место. Вот я и спрашиваю какие ваши практики по этому вопросу, как делают обычно. Но я влюбом случае его тут оставлю. Я просто хочу выяснить, может я что-то в синтаксисе не знаю, может есть специальный бубен для декораторов внутри класса ?
495 3516255
>>516234

>Вот я и спрашиваю какие ваши практики по этому вопросу, как делают обычно


Никто не делает декораторы внутри класса. Польза какая-то очень мифическая, а серьёзные вопросы к этому есть

Идея декораторов в том, чтобы разделить логику декоратора и того, где ты его применяешь

Если у тебя универсальное решение, то разумно его держать вне класса, например чтобы можно было использовать не только в нём. Если оно завязано на конкретный класс, то другие подходы используют, с ними больше гибкости
496 3516264
>>516255
Оно нигде в другом месте не применяется. Этот мой декоратор просто удобная для модификации надстройка, экономия сотки строк, которая определенное типовое поведение добавляет ко всем методам.

>Идея декораторов в том, чтобы разделить логику


Декоратор это синтаксический сахар обертки. Это и есть по сути обычная обертка, только сокращенная в синтаксисе для экономии места и красоты, где ты тут увидел идею разделения логики? Обертки используются... да как только не используются, и совсем не обязательно для того чтобы логику разносить по разным концам приложения.

Я например импортирую этот класс куда-то и мне конечно удобней чтобы и этот декоратор вместе с этим классом всюду сразу импортировался. Он больше нигде не нужен, он логически его часть, как я уже писал.
497 3516274
>>516264

>Я например импортирую этот класс куда-то и мне конечно удобней чтобы и этот декоратор вместе с этим классом всюду сразу импортировался


Этот момент не понял. Зачем тебе думать тут про импорт декоратора? Декоратор применяется на этапе "компиляции", первого прохода питона по коду, тебе его потом по-определению уже не нужно куда-то импортировать. Это что-то, что используется на этапе разработки (тебе с ним удобнее описывать методы), а не использования

Если же ты хочешь применять его где-то снаружи, то можно определить его внутри класса под @staticmethod, хотя я бы не стал так делать, я бы просто определял декоратор в модуле

Кстати, если ты вдруг ещё не смотрел, посмотри на wraps из functools, это как корректно декораторы создавать, чтобы минимизировать побочные эффекты
498 3516283
>>516274

>Зачем тебе думать тут про импорт декоратора?


Ну да, не подумал т.к. декоратор не часть экземпляра, он оборачивает всё сразу, а не при создании инста т.е. внести в обертку изменения под определенный инст не получится.

Вот как неудобно. Значит если я своим декоратором буду явно оборачивать методы НОВОГО экземпляра класса new=warp(meth), то всё нормально, бэст практис. А оборачивать методы используя синтаксис декоратора через @ собачку, это нельзя.

Т.е. чтобы всё было "по феньшую" мне в мой класс надо зафигачить отдельную фабрику, которая при инициализации пройдет по всем методам и все явно обернет. Вот такая хуита получается. Мде.

>@staticmethod


так декоратор вообще работать не будет, по крайней мере методы своего класса статический метод оборачивать не может.

>wraps из functools


Спасибо посмотрю, но я не люблю делать импорты, если в них не нуждается логика, а вопрос с декораторами это скорее вопрос красоты и синтаксиса. Ради этого импорт делать... как то не очень.
499 3516292
>>516283
>>516274

>Декоратор применяется на этапе "компиляции"


Так, я даун. Теперь я всё понял. Спасибо анон.
500 3516312
>>516292
Не не не погодите. Декоратор применяется не на этапе компиляции, а по ходу выполнения, когда встречает определение функции.
Всё я правильно про него думал, им методы не оборачивают только по причине убогости синтаксиса.
501 3516325
>>510357

>Это из дотнета портанули?


Зная майков - скорее наоборот.

>>510356

>В любом вменяемом проекте


>>510520

>валидаторы разметки


Так вот В РЕАЛЬНОМ проекте у тебя может произойти ЧТО УГОДНО. Например (из практики), может появиться встроенный язык конфигурации/логики/описания внутренних справочников или моделей или ещё чёрт знает, что! И такой встроенный язык может не повторять синтаксис реальных языков программирования и разметки и не иметь никаких форматеров или валидаторов, пока ты сам его не напишешь. И когда говнокодер запилит на нём СТЕНУ ТЕКСТА без отступов, пусть даже дефолтный пример, то его захочется выебать раскалённой кочергой!

>коммит


А это вообще делается через пре-коммит-хуки, которые некоторые не все правильно у себя настроят, так что хорошо ещё если репозиторий настроен грамотно, есть CI и хоть что-то, что не позволит влить код в мастера, если он не соответствует гайдлайнам, но есть это далеко не везде.
502 3516330
>>513381

>Дальше не читал.


>Как эта болезнь называется?


СДВГ.
503 3516336
>>514563

>А не утопия/зашквар ли делать на python андроид приложухи?


некоторое время назад (кажется, в прошлом году) в тред прибегал чувак, который на киви писал под мобилки, в том числе иос. Насколько я понял, по крайней мере под яббл писать более чем реально. Вёдра меня не интересовали и не интересуют, если что.
image.png965 Кб, 1021x576
504 3516340
>>515057

>Py запускает нужную версию, а вот файлы открываются новой!

image.png7 Кб, 186x165
505 3516348
>>515084

>блоке return несколько переменных вернуть, охренеть!


Одну. Он возвращает один кортеж. а вот магия присвоения элементам одного кортежа элементы другого кортежа

> a, b = b, a


вот это действительно охренеть. И такого синтаксического сахара в языке столько, что может приключиьться синтаксический диабет.
506 3516356
>>515378
Линуксом пользуются абсолютно все, кто выходит в интренет и почти все, чьи задачи по работе отличаются от вордика с одинэской.
Весь современный интренет работает на Линуксе, а поскольку кроме сайтиков (ой, блядь, простите, веб-приложений) сейчас не пишется по сути, почти весь написанный код в конечном итоге запихивается в контейнеры и запускается в кубере на линуксах.
>>515429

>Ты вот про эту хуйню?


Это игрушка более-менее работает для тестирования, но работать ПО всегда будет в настоящей среде, хоть усрись.
507 3516365
>>515592

>Нихуя себе, у нас в треде ЭКСПЕРТ


Ну, чтобы сказать, что MVC это сомнительно не нужно быть экспертом. В нормальных проектах представление (фронт) существует отдельно, а модель (база) и контроллер (бэк) -- отдельно и общаются они через API-интерфейсы бэка, это даёт много плюшек, которые на джанго оказываются недоступны.
508 3516374
>>516264

>Я например импортирую этот класс куда-то


Ты импортируешь модуль.
типа

> import my_module


Если из модуля тебе нужен класс, то ты можешь написать

> from my_module import MySuperClass


то в этот момент интерпретатор пройдёт по коду класса и инициирует его вместе с декоратором, который может лежать в модуле рядом. Воспользоваться декоратором отдельно ты не сможешь, но нужные методы будут обёрнуты.
Если же декоратор нужен тебе отдельно, то можешь импортнуть и его:

> from my_module import mu_ultra_decorator, MySuperClass


Это нормально, когда в модуле есть что-то кроме единственного основного класса.
509 3516389
>>516325

> Зная майков - скорее наоборот.


Ты не в курсе что {} форматирование из дотнета, как и оператор асинк? Подозреваю.прыщедебила.

>>516340
Py в командной строке запускает интерактивный интерпретатор. Не слышал никогда?

>>516348

> И такого синтаксического сахара в языке столько, что может приключиьться синтаксический диабет.


Не пизди. Куда ему до того же сисярпа.
image.png89 Кб, 803x306
510 3516410
>>516389

>Py в командной строке


В 98% случаев `py` это симлинк. (типисчно: py -> python, python -> python3, python3 -> python3.12, см пик.) При чём в виэнвах он по крайней мере по-умолчанию не создаётся.
А вот при исполнении скрипта интерпретатор будет зависеть от шебанга и в шебанге ТОЖЕ МОЖЕТ БЫТЬ СИМЛИНК.

В общем, кури матчасть и вместо подрывов тащи конкретный код (целиком, с шебангами) и что у тебя не так.
Кстати, единственный верный шебанг это '#!/usr/bin/env python3'.
511 3516426
>>516389

>Py в командной строке запускает интерактивный интерпретатор. Не слышал никогда?


Когда ты кликаешь на файл, запускается ассоциация, прописанная где-то в реестре для этого типа файлов

Когда ты запускаешь из командной строки, запускается то, что командная строка находит в PATH, если находит вообще, если ты не по полному пути запускаешь
512 3516436
>>516312

>Не не не погодите. Декоратор применяется не на этапе компиляции, а по ходу выполнения, когда встречает определение функции.


Декоратор запускается один раз, когда питон проходит по коду программы (условно компиляции), декоратор возвращает функцию-враппер, что уже вызывается постоянно.

Если у тебя есть класс, где методы отдекорированы, то для каждого метода декоратор по идее вызовется ровно один раз, при первом импорте куда-либо. Не важно, будешь ли ты использовать класс, и если будешь, то сколько раз, но должен по идее один раз вызваться

Уверен примерно на 98%, пару процентов на глюки оставляю, можно проверить

Это не совсем компиляция, согласен, компиляция это создание pyc-файлов, в этом значении некорректно. Поэтому в кавычках было
513 3516437
>>516410
Я про винду, само собой.

> В общем, кури матчасть


Или в пиздень со своей матчастью. Я ставил питон и больше ничего не трогал. Править чужие баги не собираюсь.

>>516426
514 3516457
>>516437
по идее ты можешь сделать
import sys

print(sys.executable)
и посмотреть, откуда твой питон в каждом случае запускается
515 3516471
>>516457
Так Я знаю что он запускается новой версией, читай внимательно.
516 3516481
>>516437

>Я про винду, само собой.


Буэ. На ней вообще ничего нормально не работает.
Но тут тебе тогда правильно сказали:
>>516426

>Когда ты кликаешь на файл, запускается ассоциация, прописанная где-то в реестре для этого типа файлов


правь реестр.
Это вендопроблемы. Слава яйцам у меня их не бывает. Заебался решать, свалил нахуй и забыл как страшный сон.
517 3516495
>>516471
Тогда смотри ассоциации файлов и то, как у тебя PATH настроены, не помню точно, как это делается

В консоли посмотреть пути можно командой path
518 3516500
>>516481

> Буэ. На ней вообще ничего нормально не работает.


На ней не работает крывое ебаное прыщеговно. Вообще если ты ее по телеку видел то не надо отвечать.

> правь реестр.


Нахуя? Короче лень тебе объяснять. Сиди дальше на прыщах.

>>516495
Еще один с прыщей?
519 3516507
>>516500

>Еще один с прыщей?


Не много ли ты на себя берёшь? Ты не в состоянии разобраться с проблемой, разобраться с которой для айтишника должно быть элементарно

Сидишь на своей винде, ну сиди, мало ли сросся с ней, пока менеджером по продажам работал. но изучи как она работает. Бля, почему я и то лучше знаю, хотя давно виндой не пользуюсь...
520 3516517
>>516507
Тупое ты существо, с виндой все в порядке, это питон чудит. Изучи как он на винде работает, потом пиши сюда, красноглазик хуев.
521 3516526
>>516517
Так это ты пришёл с проблемой, что не понимаешь, почему у тебя разные интерпретаторы запускаются. Это ты не понимаешь, как работает операционная система, под которой ты работаешь. Даже про то, что можно команду path в консоли запустить, не знаешь. Если что, это под виндой, в линуксе нет такой команды

>Изучи как он на винде работает, потом пиши сюда, красноглазик хуев


Я давно сюда не писал. Не думал, что за пару лет доска скатится к тому, что всерьёз будут думать, что пользоваться виндой это нормально для питон-разраба. Причём одновременно даже не понимая, как винда работает. Раньше такие как ты тут не задерживались, гнали их сразу
522 3516538
>>516517
Во-первых питон нормально работает, сука ещё раз почти весь питонячий код в итоге работает на линуксах. Но и под дриснятки его собрали, пользуйтесь. Но ты, блядь, обвиняешь язык в проблемах системы, с которой не можешь справиться. Ты вообще е-бо-бо. У тебя же не с питоном проблемы, а с твоим локалхостом. При чём это не было искаропки, это ты своё локалхочт настроил жопой и теперь страдаешь.
При этом даже не можешь ни нормально описать проблему. Как это ДОЛЖНО БЫТЬ:

> я так-то и так-то настроил систему, я делаю икс, полчуаю игрек, а хочу получать зэд


Покажи, где у тебя хоть что-то похожее! Только подрывы и обвинения. Это потому, что ты не понимаешь, как что работает вообще и это есть печаль.

>>516526

>Я давно сюда не писал. Не думал, что за пару лет доска скатится


Вкатышков много, сам видишь. Им на курсах сказали, что венда - норм, а когда уточняли что будет на практике (про линуксы, WSL, виртуалки и т.п.) они, естественно, не слушали. Половина треда в вопросах "куда вкатываться".
Обычно оголтелых вендосектантов тут не так много или они не проявляются..
523 3516552
>>516526

> всерьёз будут думать, что пользоваться виндой это нормально для питон-разраба.


Иди нахуй. Работают и зарабатывают.

> Причём одновременно даже не понимая, как винда работает.


Это ты скотина тупая нихуя не знаешь, а лезешь.

>>516538
Тупое мудло, разберись как питон запускает нужную версию на винде потом вякай.

А нахуя мне вообще что-то понимать? Я все сделал по инструкции, оно не работает. Ручками реестр или боже упаси pylauncher пусть всякий пердоскот вроде тебя ковыряет
524 3516553
>>516436

>Это не совсем компиляция


Это самая настоящая компиляция, питон такой же компилируемый как и джава
мимо душнила
525 3516560
>>516552

>разберись как


Ты, видимо, разобрался, поэтому у тебя проблемы?

> Я все сделал


Что, всё? По пунктам.

>по инструкции


По какой инструкции?

>оно не работает


Что именно не работает?

>Ручками реестр


Если сломал, то придётся.

>Тупое мудло


>пердоскот


И это на секундочку я тебе пытаюсь помочь. Не уверен, что ты вообще достоин моей помощи, но сегодня мне лень.

И да, чтобы ты знал, я перешёл на линуксы как основную систему очень давно и в первую очередь из лени. Потому, что на линуксах кратно меньше пердолинга. Особенно когда дело касается разработки (ЛЮБОЙ).
526 3516564
>>516560
>>516552

> Это ты скотина тупая нихуя не знаешь, а лезешь.



Нахуй пошла, скотина. Нахуй ты лезешь в вопрос в котором нихуя не понимаешь и не пытаешься разобраться? Ты ж скотина ебаная сюда пришла винду обсирать!
image.png89 Кб, 803x306
527 3516600
>>516564

>нихуя не понимаешь


Зато ты понимаешь, поэтому у тебя нет проблем! Ой, то есть есть! Только ты их ни изложить не можешь, ни исправить. Видимо, ты тоже не понимаешь. Вот только вопрос, "тоже" или ты просто тупой, а если бы рассказал всё подробно, то выясилось бы, что тебе кто угодно может помочь, даже я, хотя со спермохлёбскими осями я не работал много лет.

> сюда пришла винду обсирать!


Не-а. Вообще мимо. Впрочем, мне её обсирать и ненадо, ты с ней на пару сами справляетесь.

Вот тебе как выбтрается интерпретатор в системе здорового человека. Напоминаю, что на пике ты можешь увидеть пример ls /usr/bin/py*.
Итак, дано. Например:
py -> python
python -> python3
python3 -> python3.12
python3.10
python3.11
python3.12

Например, я хочу, чтобы у меня скрипт запускался версией 3.11, я могу слделать несколько вешей.
1. Правильный путь. Создать виртуальное окружение и запускаться внутри него.

> md .venv && python -m venv .venv && source ./.venv/bin/activate


> ./script.py


2. Прописать шебанг
#!/usr/bin/env python3.11
3. Перенаправить симлинк (но это глобальное изменение, оно скажется на всех, у кого в шебанге прописано "py"/"python"/"python3"):

>ln -s python3.11 python3



Как работает в недоОС (работало во времена ХР, но вряд ли они стали ломать): есть реестр, в котором прописано сопоставление типа файла (определяется только по расширению) и бинарника. Когда ты делаешь запуск -- он смотрит, какой программой открывать ЭТО, а потом начинает её искать в $PATH. Реестр это вообще ёбань страшная, её запилили на заре ОСи и с тех пор не знают, как избавиться от этой помойки потому что слишком многое на неё теперь завязано.
Так что тебе надо либо разобраться с $PATH, либо с реестром, но ты же не способен никак рассказать, что у тебя творится.

>Нахуй пошла


>скотина


>Нахуй


>Ты ж скотина ебаная


Нет, ты всё-таки недостоин помощи.
image.png89 Кб, 803x306
527 3516600
>>516564

>нихуя не понимаешь


Зато ты понимаешь, поэтому у тебя нет проблем! Ой, то есть есть! Только ты их ни изложить не можешь, ни исправить. Видимо, ты тоже не понимаешь. Вот только вопрос, "тоже" или ты просто тупой, а если бы рассказал всё подробно, то выясилось бы, что тебе кто угодно может помочь, даже я, хотя со спермохлёбскими осями я не работал много лет.

> сюда пришла винду обсирать!


Не-а. Вообще мимо. Впрочем, мне её обсирать и ненадо, ты с ней на пару сами справляетесь.

Вот тебе как выбтрается интерпретатор в системе здорового человека. Напоминаю, что на пике ты можешь увидеть пример ls /usr/bin/py*.
Итак, дано. Например:
py -> python
python -> python3
python3 -> python3.12
python3.10
python3.11
python3.12

Например, я хочу, чтобы у меня скрипт запускался версией 3.11, я могу слделать несколько вешей.
1. Правильный путь. Создать виртуальное окружение и запускаться внутри него.

> md .venv && python -m venv .venv && source ./.venv/bin/activate


> ./script.py


2. Прописать шебанг
#!/usr/bin/env python3.11
3. Перенаправить симлинк (но это глобальное изменение, оно скажется на всех, у кого в шебанге прописано "py"/"python"/"python3"):

>ln -s python3.11 python3



Как работает в недоОС (работало во времена ХР, но вряд ли они стали ломать): есть реестр, в котором прописано сопоставление типа файла (определяется только по расширению) и бинарника. Когда ты делаешь запуск -- он смотрит, какой программой открывать ЭТО, а потом начинает её искать в $PATH. Реестр это вообще ёбань страшная, её запилили на заре ОСи и с тех пор не знают, как избавиться от этой помойки потому что слишком многое на неё теперь завязано.
Так что тебе надо либо разобраться с $PATH, либо с реестром, но ты же не способен никак рассказать, что у тебя творится.

>Нахуй пошла


>скотина


>Нахуй


>Ты ж скотина ебаная


Нет, ты всё-таки недостоин помощи.
528 3516606
>>516600

> Правильный путь. Создать виртуальное окружение и запускаться внутри него.


Самый надёжный это запускать по глобальному пути
/opt/venv/zhopa-project-py313/bin/python my_file.py

Так у тебя без лишнего пердолинга запускается всё из нужного окружения, всё наглядно и т.п.
529 3516626
>>516600
Пшел нахуй, прыщепидор. Разберись как питон на винде работает сначала.

> Нет, ты всё-таки недостоин помощи.


Ты скотина винду по телеку видала, кому ты помогать собралась?
530 3516756
>>515085
С хуя ли? Кортежи для чего придуманы?
531 3516762
>>515330

>это через неявное создание tuple, фишка красивая, но по-моему в реальной жизни не то, чтобы очень часто используется


def divide(a: Number, b: Number) -> tuple[Number, str]:
____if b == 0: return None, "Divizion by zero"
____return a / b

res, err = divide(10, 5)
if err != None:
print(err)
print(res)
532 3516763
>>516762

>err != None


*is not None
533 3516764
Перекочуйте.
534 3516766
>>516762

>return a / b


*return a / b, None
535 3516767
>>516600
Сижу на винде потому что привык и мне так удобно. Линуксы и прочее говно в виртуальных машинах, если понадобится.
В системе установлено 3 версии питона. Помимо "явного запуска" из некоего виртуального окружения можно ещё из любого места запустить скриптик .py, который подсосется python.exe, а нужную версию выберет через шебенг, причем можно даже не писать полный номер версии #!/usr/bin/env python3 . Это поведение из коробки.
Брат воскрес зависимость есть, о чем вы тут так яросто спорите вообще не понятно.
536 3516770
>>516762

>res, err = divide(10, 5)


Вообще в питоне исключения есть
Это ты предлагаешь собрать худшие особенности питона и го
537 3516776
>>516770
Так это может быть не только ошибка.
Флаг успеха, как в примере из джанго выше, сообщение, что угодно.
538 3516799
Как заебали коллизии имен модулей в питоне и в локальном каталоге. Как гарантированно испортировтаь из системы или из локального каталога?
539 3516849
>>516626

>Разберись как питон на винде работает сначала.


Мне-то зачем? Я не идиот, чтобы запускать его на этом недоразумении, которое ты по безграмостности считаешь операционкой.
>>516606

>Самый надёжный это запускать по глобальному пути


Надёжный, хули тут спорить. Ну по факту это виэнва без активации. У меня, например, есть entrypoint.bash (для запуска в контейнере, ясен орган), так там я делаю вызовы питона по относительному пути:

> pizda_env/bin/python3 hooy.py


В контенерах могу себе позволить. Но в IDE и консоли -- проще всё-таки активировать окружение.

>/opt/venv/


Используешь какую-то упрощалку типа pipenv? Я что-то к ним так и не привык, по старинке, ну я приводил пример.
Даже скорее так по сути:

> mkdir --parents .venv && python -m venv .venv && source ./.venv/bin/activate && [[ -e requirements.txt ]] && pip install --requirement=requirements.txt

540 3516859
>>516767

>Сижу на винде потому что привык и мне так удобно.


Просто привык. Как правило виндузятники не знают, что такое удобно на самом деле, просто пользуются тем, что подсунули не задумываясь о том, нравится ли им система, как было бы ей удобнее пользоваться и т.п. Я в этом уверен по одной простой причине: я в разных местах проводил опросы и переклички и среди всей массы почти не нашёл возвращенцев, которые нормально посидели на разных линуксах/макосях, а потом поняли, что для них ШИНДОШС объективно лучше и осознанно вернулись. Типичный возвращенец, которого я находил, попадает в одну из двух категорий: либо "я попробовал, но столкнулся с минорным багом, мой спермачий опыт не помог и я поджав хвост сбежал назад под привычную шконку", либо "я попробовал, просидел больше года (иногда сильно больше), но потом обстоятельства потребовали и я с большим сожалением вернулся".

>Линуксы и прочее говно в виртуальных машинах, если понадобится.


Более чем приемлемый выход на самом деле.

>В системе установлено 3 версии питона.


>подсосется python.exe, а нужную версию выберет через шебенг


Ну охуеть. То есть я был прав тут >>516410, а спермодаун подрывался на ровном месте. Хотя для такого поведения python.exe должен делать дохуя лишней работы по поиску альтернативных версий... Ну да хуй бы с ними, система всё-равно не профильная.

>о чем вы тут так яросто спорите вообще не понятно.


Ну ты видишь, спермохлёб-фоннатег утверждает, что он тут единственный, кто понимает, как работает винда и питон и кричит, что венда божественна, а питон днище, хотя я так и не добился от него даже детального объяснения, что точно у него за проблема. Между всполохами из его жопы ещё как-то можно понять, что у него стоит несколько версий и скриптики запускаются не той версией, которую он хочет, но без деталей, что у него есть и как работает я просто любуюсь полыханием.
541 3516878
>>515558

>Это пиздоблядофича. Поэтому и не используется.


ЧТОА? Даже dict.items() не используешь? И enumerate(list) не пользуешься?

> Перепутал параметры - привет, баги.


Ну, если ты чайник, не способный на правильные нейминг и расстановку операндов, то возможно.
В моём коде это встречается часто. Да, чаще в приватных методах, но бывает по-разному.
542 3516898
>>515558

>Перепутал параметры - привет


Каждый раз проигрываю с этих вкатунов из НОРМАЛЬНЫХ ЯЗЫКОВ, которые без типизации непрерывно срут в штаны и не могут в уме держать более одно аргумента, а если надо запомнить что функция возвращает первым элементом а что вторым, то тут вкатун падает в обморок от перенапряжения.
543 3516952
>>516859

>Ну ты видишь, спермохлёб-фоннатег утверждает, что он тут единственный, кто понимает, как работает винда и питон и кричит, что венда божественна, а питон днище, хотя я так и не добился от него даже детального объяснения, что точно у него за проблема


Не, он не говорил, что понимает, как винда работает, он говорил, что ему не нужно это понимать, потому что он программист, а не сисадмин. А если ты сидишь на линуксе, значит ты сисадмин, а если ты сисадмин, ты должен понимать как питон на винде работает, а если понимаешь, то должен сказать, что у него за проблема и как решить, но так, чтобы он, программист и не сисадмин, понял. Ведь если он сидит на винде, то имеет право знать и не желать знать, что такое реестр, консоль и команды там.

>а потом поняли, что для них ШИНДОШС объективно лучше и осознанно вернулись


Причин бывает много, например то, что ОС используется не только для работы, а тут винда уже частно имеет преимущества, под линуксом многие вещи не поддерживаются. Правда кто серьёзно работает, по-моему интерпретаторы под виндой не запускают, тут варианты, или ты запускаешь виртуалку-докер локально, либо же, наверное чаще, ты запускаешь приложение на удалённом сервере. В любом случае эти сценарии подразумевают, что с линуксом ты работаешь довольно свободно, на уровне продвинутого пользователя-разработчика консоли.

А вот в том, что гоняют приложения при этом локально на винде, я не верю. Если только это не про ML направления какие-нибудь и некоторые близкие по духу.
544 3517044
>>516859

>разных местах проводил опросы и переклички и среди всей массы почти не нашёл возвращенцев, которые нормально посидели на разных линуксах/макосях, а потом поняли, что для них ШИНДОШС объективно лучше и осознанно вернулись. Типичный возвращенец, которого я находил, попадает в одну из двух категорий: либо "я попробовал, но столкнулся с минорным багом, мой спермачий опыт не помог и я поджав хвост сбежал назад под привычную шконку", либо "я попробовал, просидел больше года (иногда сильно больше), но потом обстоятельства потребовали и я с большим сожалением вернулся


Неистово двачую, тричую! Меня как во время практики один программист подсадил на линукс, я так им увлекся и понял насколько это удобно, что от винды как от прокаженного бегаю, в жизни не вернусь никогда. А когда имеешь опыт, то любая проблема решается за пару минут, хотя на самом деле, если руки не из жопы то и проблем не возникает, ни разу ещё не сталкивался с какими-то нерешаемыми проблемами в отличие от винды, когда единственный способ что-то решить, это либо откатиться назад, либо полностью переустановить её
Обновить тред
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах.Подробнее