— Какие книги считаются лучшими? На слуху чаще всего Лутц, но там очень много воды. Ещё на слуху Марк Саммерфильд, Эл Свейгарт "Автоматизация рутинных задач с помощью python". Эти книги рекомендуют чаще всего, но книги довольно старые, а питон развивается.
— А как учить джангу? Нахожу книги по джанге 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[РАСКРЫТЬ]
— Как можно без лишней возни ускорить программу на питоне 1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь. 2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пин##сии живём Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
>>3449124 Ну, я. Но мне питон для автотестов нужен. И то не могу сказать, что это прям ПЕРВЫЙ мой язык, 10 лет назад я знал js, правда с того момента больше им не пользовался и не программировал. Но ООП и прочую залупу я уже знаю. Кстати, охуел как изменилось обучение за эти 10 лет, когда я вкатывался раньше, то было дай бог 2-3 курса на английском по js, и книги с кучей воды и ненужной хуйней. То есть то, что ты сейчас можешь выучить за 2-3 видоса на ютубе растягивалось на 2-3 недели потного дрочева с книгой. И всякие ии - просто пиздец как удобно, я вот раньше ждал, когда мне на дваче ответят почему моя хуйня не работает, а мне отвечали "пошел нахуй" или "ты долбаеб", а теперь нахуй все подробно можно разобрать и пофиксить проблему за 1-2 часа, а не за ебанных 2 месяца глубокого тильта, когда ты просто сидишь и не ебешь что делать вообще + чувствуешь себя говном все это время. План писать автотесты. Ну, как бы, я за час уже первый тест написал. Мой план просто задрочить это и не ломать голову и вспоминать "а чо там была та", а просто спокойно по лайту писать эти тесты.
>>3449354 Кстати пиздец обидно, ебать бы я щас охуенно жил, если б тогда js не бросил. А бросил я его знаете почему? Потому что ебаная нормисная хуйня меня задрочила до конца, то иди блядь шарагу закончи, то иди блядь вуз закончи, то блядь иди уже работать пора, то блядь ищи новую работу побыстрее, в итоге нахуй как долбаеба палкой гонят, а профита 0 нахуй. Че доебались до меня тогда все эти люди? Гореть им в аду бы, конечно.
>>3449355 даже не представляю, это наверное как купить биткоин и продать чуть дороже, а потом смотреть как он дорожает в разы.
Я не бросил 10 лет назад и вкатился но сейчас один хуй, что ты, что я сидим и в новую хуйню на общих основаниях вкатываемся так как в старой уже работы нет.
>>3449689 Сейчас один из немногих реальных способов найти работу на питоне это выучить React. Не шучу. Чистых бекендеров требуется очень мало, в основном разные фулстеки (бекенд + МЛ, бекенд + фронтенд).
>>3449085 (OP) Братья-питухонисты Поясните за exec Как правильно запускать в нем код, чтобы он выполнялся как отдельный запущенный скрипт? Пилию свою иде, я понимаю что надо как то передать ему словарь глобалсов идентичный тому какой создаётся при python -m file_name Но просто сделать import __main__ в функции запуска и передать не канает, разбирать pydeved больно очень
— Мощности бы ещё подкинуть... — Та не, нормально, у меня всё само — память выделяется динамически, GC сработает, не парься. У меня ж Python, всё своё. О-о... О-о... Вот это рантайм! Как же всё гладко обёрнуто в декораторы! Просто zen! Так уж... О! О! О! Контекстный менеджер, ты моя хорошая, да? — Да ничё. — А? Ха-ха-ха! Импортируй меня полностью! О! Я даже GIL уже почувствовал. Почувствовал? — Потоки не тормози. — Асинхронно? — Как тебе нравится — await или multiprocessing. — О-о! О-о! О-о! — Почувствуй силу duck typing'а. — Он даже хрустит, блин, у меня! Интерпретатор прям жарит, как будто Cython прикрутил! О-о! Я давно такого сетапа не видел, чтобы и Flask, и NumPy, и скрипты, и джобы, всё в одной обвязке! — Главное — не держать в памяти список на миллион строк. — Ну смотри, хочешь — сбрось всё в генератор. Или пульни через итератор. — Е-мое… полдня дебажил через pdb, чтобы скрипт крашнулся из-за None в поле? — А-ха-ха! Конечно! Вот ты мне нравишься — как list comprehension на одной строке! А другие — по for’у пишут, и радуются. А-а! А-а! А-а! — Столько времени оборачивал в классы, чтобы… — О-о... да!.. нет!.. — Ещё будешь запускать?
Суп. Вопрос, наверное, простой. Мне тут понадобилось написать примитивненький 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 не приходит.
>>3451340 Если я нигде в коде не указал пути и имени для логфайла, то это было бы странно, не находишь? В общем, я тут откопал плейлист: https://rutube.ru/plst/440890?r=wd Оказалось, что устройство модуля логгинг вообще пиздец нетривиальное и замороченное и моего беглого заглядывания в доку хватить не может. Пока решил обойтись самой-самой базой, а потом -- покурю внимательнее.
В частности: Во-первых там создаются отдельные сущности "логер", "фильтр", "обработчик" ("хэндлер"), "форматер" и, возможно, ещё какие-то, до которых я не добрался и от настроек каждой из них зависит где-какие логи окажутся. Во-вторых просто настроить 4 сущности может быть недостаточно! В частности они используют связи многие-ко-многим: один логер может быть связан с несколькими обработчиками, а один обработчик -- с несколькими логерами и настраивать придётся куда больше всего. Напрмер, повесить разные хендлеры, чтобы по-разному обрабатывать логрекорды с разной важностью. А в-третьих -- саами логеры выстраиваются в иерархическую структуру и их связь сохраняется! То есть, при определённых настройках, отправленное тобой в лог сообщение может обработаться хэндлером от одного из родительских логеров.
Я допускаю, что это ОЧЕНЬ ГИБКО, и я даже ПОЧТИ оценил, но в текущей задаче у меня на разборы с логированием уйдёт больше кода и времени, чем на саму проблему!
>>3451915 На то, чтобы выплёвывать одни сообщения в stderr, а другие в stdout можно потратить 1 простейшую строку кода как у меня теперь, а можно -- 100-200+ строк злоебучего конфига со сложными связями плюс с переопределённым классом. Короче иди нахуй, стандартный логгер реально ебанутый и оправдан только если у тебя прямо большой бэйр-метал-хостет стейтфулл и логи идут то в опенсёч, то шлются по смс прямо из приложения (а не собираются штатным функционалом кубера куда-надо в 10 раз проще, в 100 раз фичастее, а главное -- В 1000 РАЗ СТАНДАРТНЕЕ).
Здравствуйте, Питонисты. Столкнулся с такой проблемой. Есть ли способ инициировать работу бота в чате телеграмма через питон без необходимости запуска через команду /start, или хотя бы чтобы тригерился по словам или как то замаскировать эту функцию?
>>3453342 Насколько я понимаю, это сделано, чтобы нельзя было пользователей случайно подписать на бота без ведома юзера, а только чтобы он явно запускал, понимая, что далет. Но по крайней мере ты можешь распространять ссылку прямо со стартом, тогда он будет отправляться сам, да ещё и параметр какой приклеит, например ID реферала: > https: //t. me/nastyanovelbot? start=1854544298
>>3453913 >чтобы нельзя было пользователей случайно подписать на бота без ведома юзера Именно так. Я проверил с телефона, компа и эмуля под разными аккаунтами в разных чатах и пришел к выводу, что говной занимаюсь. Это нужно делать прямо с аккаунты через машину. Говоря откровенно, мне вообще-то спамер нужен для рекламы. Может есть ссылки какие?
>>3452399 >Короче иди нахуй, стандартный логгер реально ебанутый и оправдан только если у тебя А он по-умолчанию более-менее сконфигурирован, тебе нyжна всё та же одна строчка кода, конфигурировать надо, если у тебя нестандартные запросы
Зато если вдруг понадобится что-то нестандартное, тебе не придётся переделывать весь код
>>3453342 start это дефолтная тг функция старта бота, обойти ее насколько мне известно нельзя, только можно настроить автосообщение бота перед стартом как приветствие, а туда уже кинуть хендлер клавиатуры и дальше по плану
>>3457343 >грядет новая эра питона То есть, лет через 6-9 (когда GIL удалят и из флагов, а его удалят!) приличный кусок маленьких проектов, которые авторы писали для себя, и выложили в сеть по доброте душевной, превратятся в тыкву, если тысячи людей за эти 6 лет не потратят дополнительный кусок своей жизни на переписывание проектов, которые им давно не интересны.
В то же время, мы понимаем, что если бы 15 лет назад (или когда там змея родилась?) послушали инженеров, а не маркетологов, усиленно напирающих на популярные, а не полезные фичи, то через 8 лет мы бы оказались в точке не хуже, чем та, где GIL сначала разработали, потратив кучу ресурсов, а потом удалили, потратив еще одну кучу.
Интересно, если суммировать все это время, сколько человеческих жизней, получается, убило одно недальновидное решение?
Ананасы, а есть тут кто работает data/DWH engineer или просто аналитиком данных? Хочу перекатиться из системной аналитики на подобное направление. Из прикладных навыков есть SQL на среднем уровне, в целом базово знаю питон. Какую часть питона лучше вкатывать? Попсу типа pandas либо сейчас есть что-то ещё актуальное в этом направлении? Мб есть тут кто уже успешно работающий, был бы благодарен ему за совет.
>>3458686 Тут специфически. Есть типы которые используют для машинного обучения готовые инструменты и библитеки готовые в том же питоне, особо не вникая не в матанализ ни в прочую хуйню для ботанов. А есть типы с высшим образованием которые эти инструменты разрабатывают. Там да, дохуя дефицит кадров требование к матбазе и оч большие зарплаты. Но твое резюме даже не посмотрят если нет вышки.
>>3458700 >А есть типы с высшим образованием которые эти инструменты разрабатывают. Там да, дохуя дефицит кадров требование к матбазе и оч большие зарплаты. Вот. У меня просто есть ощущение, что ML сейчас остался во всяком крупняке, где условно занимаются раскаткой и обучением собственных ИИ-моделей и всё в таком духе.
>>3460050 Напиши имадж борду, че ты как не как двачер? Тут постоянно начинают замену двачу писать то на луа, то на расте и незаметно уходят в закат, после того как не могут решить где хранить картинки с постами...
>>3455485 Но ведь питун это высокоуровневая обертка для Си, там под капотом всё на ПРАВИЛЬНОМ языке написано. Если питонический код медленно работает, значит ты опять ни хуя не понял где горлышко бутылки.
Суп. А подскажите, как правильно написать тайпхинты в этом случае? > Type "str | list[str]" is not assignable to type "list[str]" У меня вэлью дикта может быть строкой, а может быть массивом строк, почему массив строк не может быть передан там, где ждут массив строк? Скрипт работает, с логикой всё норм.
>>3465114 > , почему массив строк не может быть передан там, где ждут массив строк? Он может. Только вот ошибка говорит про другое. Ты в качестве аргумента, тип которого должен быть строго list[str], пытаешься подсунуть выражение, тип которого либо str, либо list[str]. Вот тебе и пишут, что если тип этого выражения внезапно окажется str, то такой вызов будет невалидным.
Подскажите, кто знает, не знаю, куда написать, нужен быстрый ответ. Через месяц сдавать экзамены, нужно научиться решать задание по информатике, установил Sublime Text, а тут такая хуйня пикрелейтед, когда пытаюсь на питоне писать. Короче, куча иероглифов вместо результата. Пользуюсь Виндовс 8.1. Как исправить?
>>3465425 вскод для красивой подсветки буковок + запуск скрипта из консоли. Большего тебе не надо для огэ твоего или как его там. Бля, а я ведь сдавал в последний год когда код ещё писали на листочке, выпуск 2020
>>3465362 >cmnd: str | list[str] Финт, конечно, понятный. Но там str впихнуть можно только через split()… Пока что так и сделал: заменил "str | list[str]" в дикте на "str" и добавил split() туда, где он используется. Но это какая-то странная хуйня.
>>3465425 Есть правильный способ, есть полу-правильный способ и есть то, что подойдёт тебе. Правильный способ: ставь Линукс и не выёбывайся, венда не предназначена для работы от слова вообще. Ставь хоть на виртуалку, хоть на некро-пк/ноут, оставшийся от прадедушки, куда и как угодно. Если только для Питона, то бери серверные сборки без гуя, тебе кроме консоли ничего не понадобится. Бонус: у многих облачных провайдеров можно разжится бесплатной виртуалкой с линуксом (придётся платить только несколько рублей в месяц за публичный IP) и заходить на неё по ssh. Многие IDE умеют исполняться на ремоут-хостах по ssh. Полу-правильный способ: ставь WSL и работай в нём. Это почти линукс, затянутый внутрь венды. Лучше, чем ничего. Подойдёт тебе: запускайся не в этой консоли. Где точно — зависит от того, что из имеющегося на твоём компе нормально работает с Unicode. Можешь попробовать IDLE, CMD, сам PS в отдельном окне или поставить, например, git-bash или Б-гомерзкую MobaXterm.
>>3465832 > Пока что так и сделал: заменил "str | list[str]" в дикте на "str" Охуенно. Но при этом значения в дикте у тебя как были и str и list[str], так и остались? И нахуй тебе вообще эти тайпхинты, если они неверные?
> split При чем тут split вообще? Ты фактически просто решил отдельные строки сделать списками из одной строки. В отрыве от твоего говноскрипта - это вполне себе нормальное решение, только пишется оно как [str]. Нахуя для этого split вызывать, я в душе не ебу. Ты походу вайбкодер какой-то.
> Но там str впихнуть можно только через split() Где там?
Купил бумажный вариант Изучаем Python Марка Лутца 1 том на русском языке. Взял не разобравшись 5-ое издание, а на данный момент уже вышло 6-ое, но пока на английском, а я в нём нихуя хуа. Сильно проебался? 5-ое издание вроде питон 3.5 разбирает, а сейчас уже и 3.11 вышел. Спросил дипсик, говорит похуй, учи, только некоторые темы отдельно уточняй, а так 80% одинаковые. На скрине темы, которые по мнению дипсика будут изменены в 1 томе. Прав ли он? Стоит ли ебать себе голову или серьёзные изменения будут только со второго тома? Мб взять что-то актуальнее, ведь как везде пишут Питон - активно обновляющийся язык
>>3466386 Зачем это учить и читать вообще, когда у тебя есть дипсик, который в любой момент объяснит как писать правильно? Ты просто пишешь код, а в непонятный момент спрашиваешь у нейронки. Это самый эффектинвый способ обучения. Талмуды были нужны 50 лет назад, когда их заучивали, т.к. в случае чего информацию было взять неоткуда, кроме библиотеки. Сейчас у тебя все знания мира в телефоне даже без поиска.
>>3466386 f строки мастхев тайп хинты упростились pathlib изучить отдельно не проблема датаклассы все еще юзаются (или Pydantic, что очень похоже) морж только на легаси остальное отдельно погугли, в целом книга вполне хороша
>>3465851 > в дикте у тебя как были и str и list[str], так и остались? Нет, там теперь str. Примерно так, в дикте было: > "Command": ["managed-postgresql", "cluster"], Стало: > "Command": "managed-postgresql cluster", А там, где используется значение (в виде не строки, а листа строк) — я делаю её сплит. Так по крайней мере заявленные хинты соответствуют реальности, а не как предлагал >>3465362, у которого выходило, что метод готов прохавать строку, хотя тогда она вызвала бы ошибку. Теперь оно готово принимать строки, самостоятельно приводя их к правильному листу.
>Ты фактически просто решил отдельные строки сделать списками из одной строки Нет. В 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, …)", которому первым параметром надо именно лист строк.
> Ты походу вайбкодер какой-то. Только сейчас узнал, что это и нет, наоборот я уже несколько человек обоссал за то, что они мне подсовывали галюны нейросетей. Программирование это, конечно, не мой основной профиль, но когда я что-то делаю — я стараюсь сделать правильно, потому и прислушваюсь ко всем замечаниям линтеров и гайдлайнов, чтобы разобраться, почему именно так.
>>3466386 >сейчас уже и 3.11 вышел 3.13.3 есть, а скоро выйдут новые, тебе так и так с каждой версией разбираться с изменениями и новыми возможностями. Так что можешь фундамент получить и по условно-старой книге (но не 4 издание, там было слишком много про 2.7, которое сильно отличалось, а теперь — окончательно депрекейтед), а потом просто почитаешь пепы с изменениями.
>>3466467 >Зачем это учить и читать вообще, Правильно, делай без понимания, главное просто делай, однажды нейронка угадает, как надо. Очень напоминает вот эту шутку: https://sortvisualizer.com/bogosort/
>>3466647 Есть два полярных подхода, на одном из них справочники типа таких: https://goalkicker.com/ , тут только важное, минимум постороннего текста. А на другом — Лутц, в котором идея будет разжёвываться и повторяться, зато запомнить 10% прочитанного ≡ выучить справочник наизусть. Для меня Лутц это идейный наследник автора лучшего в моей жизни учебника по физике — Лансберга.
>>3460106 > , после того как не могут решить где хранить картинки с постами... Ничего подобного у меня всё просто. C:/document and setting/Матвей_2015/изображения/двач
Вас не достало что в питоне миллиард инструментов с пересекающимися фичами, но не полность, так что нельзя выбрать один. pyright - хорошая интеграции с lsp, поддерживает недокументированные возможноти lsp которые работают только в vscode (тормоза на ноде) python-language-server - интеграция всего в lsp от rope до mypy (тормоза на питоне) pylyzer автор забросил недопилив толком (работал быстро на расте) ty (на расте, еще не рабочий, может тоже забросят) ruff в основном линтинг и форматирование, но имеет lsp интеграцию (работает быстро на расте, но сосет у pylint по анализу проекта) pylint гипертормоза и считает что у моделей sqlachemy слишком мало методов isort - сортирует импорты (ruff тоже могет, но сосет у isort) flake8, pyflake, black и пр полудохлое
Пацаны, нужно изучить базу по питону (пельменные, функции, супер-базово ООП и тд) для автотестов.
Есть какой-то курс на степике хороший? Или книжка? И как вообще вариант в дипсике написать промпт, чтобы он составил план для меня и всё пояснял по плану?
Начни план с базового синтаксиса (1 неделя), но сразу включай примеры из целевых областей (например, тесты для простых функций). К 6-й неделе — углубление в автоматизацию, к 10-й — интеграция всех навыков (например, бот, который парсит данные и сохраняет в БД). Последние 2 недели — работа над комплексным проектом (например, тестовый фреймворк + CI).
Дай рекомендации по IDE (PyCharm, VS Code), инструментам (Docker, Postman) и лайфхакам для запоминания. Упомяни, как избегать выгорания."
>>3468232 >>3468232 >Ты — гуру Python с уровнем знаний создателя языка >Состать мне план для полного нуба с акцентом на элементарные навыки на популярных фреймворках
>>3468232 Хуйню нереалистичную задумал. У тебя нет ресурса чтобы выучить и скрэпи, и селениум, и гитлаб с докером. Нейросети магическим образом тебе времени не добавят. Используй 20/80 промпт. Закрывай только важные дыры.
>>3468293 Понял. Но дипсик всё равно задрачивает с докером. И выдаёт просто сухой текст, типа: >REST API-тестирование (requests) >Многие проекты требуют проверки API. Пока я это всё буду у него спрашивать и расспрашивать, пройдёт уйма времени. Я в целом изи схватываю всё. В ВУЗе в многопоточность мог на ++, но к 29 годам щас всё нахуй забыл и хочется с базы базовой начать. А хуйсик расписал базу как > Базовый синтаксис, структуры данных (list, dict, set), условия, циклы, функции. Без этого невозможно писать автотесты. Нет бы сразу все по пунктам дал.
Короче по твоему принципу буду разбираться, в общем. Спасибо тебе!
>>3468083 >проприетарный Во-первых это точно минус? Почему? Во-вторых: > https://github.com/microsoft/pylance-release > CC-BY-4.0 license Ты уверен, что правильно понимаешь смысл слова "проприетарный"? Что оно для тебя значит? Опиши, пожалуйста. А то окажется, что приблизительно всё ПО в мире проприетарное.
>>3468224 Придумай проект простенький да крути его с подсказками ии. Я себе тг бота сделал с напоминалками, алертами и поиском по своему хранилищу различных файлов, поскольку уже заебался руками по папкам скрипты и записи искать. Это чисто твой проект и насилуй его на сколько фантазии хватит. За месяц и ооп, и основные библиотеки и даже гит с логированием освоил.
>>3468358 Тоже рассматривал этот вариант. Именно чат бота, а потом уже автотест на него.
Только вот, допустим, как я узнаю о множествах (set) в питоне при таком подходе?
Мне тупо надо питон для того, чтобы потом автотестером пойти, ручником заебало + потолок в 180-200к в основном на рынке.
Я сейчас с дипсиком всю базу пройду за пару дней (типы данных, преобразование, функции базово и т.д.). потом буду пилить чат-бота и тесты на него... план такой, в общем.
>>3468305 Изучи базовый синтаксис ООП Всякие обработки ошибок в блоках try/except Логирование Паттерны проектирования автотестов Принципы программирования
По фреймворкам Pytest - база для автотестов, изучить надо подробно его возможности, маркеры, параметризацию, фикстуры, как тесты запараллелить через xdist какой-нибудь Selenium / playwright для UI тестов (playwright в наше время выглядит интереснее) requests / httpx - для rest аpi (лучше httpx, т.к. на нем еще асинхронщина есть) grpc - либа для grpc протокола SQLAlchemy для БД (там тоже есть асинхронщина, для синхронного пг какого-нибудь psycorg2) Allure для отчетов
докер нужен супербазово, как и ci/cd понимание (по типу набросать yaml файл для gitlab) Все остальное, что тебе там написало выкинь нахуй, там большая часть либ для разработки, в автотестах тебе понадобятся они примерно никогда
>>3469198 А нахуя ему grpc в одном ряду с основами? grpc апи разве такая распространённая штука уже, что прям с начинающих тестеров требуют? Не быкую, интересуюсь просто, с остальным согласен.
>>3469443 >grpc апи разве такая распространённая штука уже Я лично вижу часто. Конечно, не так часто, как REST, но если что-то предоставляет публичное API, то там очень часто REST+gRPC. Так что лишним не будет. В конце концов, зная REST понять gRPC не так уж сложно мягко говоря.
кто-нибудь встречал софт для нормального скачивания .whl файлов, а не как мудацкий pip download или pip-downloader? чтобы я сказал ему пакет, и софт скачал этот пакет и все его зависимости в текущую папку, а не в ~/.cache/pip/хуй/пизда/джигурда/a/b/c/2/2/8/dsfdskjfhdskjfhsdhfdskhfkjdshkdshfdsfs.bin
блядь какая же говна этот ваш пидон 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 тип если на последней секунде загрузка обрывается >>3471951 > 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)) сука мать ебал этих питонистов
>>3472048 Чел. Какой пидон тебе. Ты с твоим мобильным легасистанским интернетом не сможешь гитом пользоватся. Ты просто не сможешь большую репу склонировать. В гите просто не может быть докачки при клонировании..
работает кривовато, но намного лучше, чем дефолтный pip, спасибо! случайно не знаешь, как заставить его качать архивы .whl вместо отдельных уже распакованных файлов? > $ uv --cache-dir ./tmp pip download bitsandbytes > error: unrecognized subcommand 'download' если сделать uw pip sync requirements.txt, то какие-то пакеты он качает в виде .whl, а какие-то уже распакованные папки, мне хотелось бы все пакеты в виде .whl
>>3472693 Но ведь это реально так и есть. По сравнению с той математикой, что уже придумана, скоринг это уже прост как калькулятор. А учиться так и так нужно. Даже есть пойдёшь бухгалтером, тебе надо освоить предметную область хоть немного и научиться в 1с, зато все действия в эске в итоге делаются двумя педалями.
я внезапно осознал всю мудрость дидов с их 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 просто переизобрели разные папочки лол
>>3473408 Как тебя папочка спасет от замусоривания site-packages разными версиями зависимостей? При том pip сам по себе не умеет удалять зависимости зависимостей.
Venv это именно окружение, а не контроль файлов твоего проекта
>>3473408 >>3473408 >Version Control System в виде разных папочек Ну такое. Пока я не узнал о существовании гита это было норм, сука, нам даже в универе на первом курсе (в 2003м) предодша по программированию советовала сохранять разные версии кода в отдельных папочках! >venv Но ведь виэнв нужен для другого. А именно только для дебага, к рабочему продукту он отношения не имеет потому, что Docker. И вообще по дефолту виэнв прописывает фул-пас и его уже нельзя просто так скопировать.
>>3473423 1) Ну о том и речь. Если ты будешь Новая папка Новая папка (1) ты так же можешь все зависимости срать в одну кучу куда нибудь ~/.cache/pip/site-packages/ 2) venv похуй где у тебя сайт пакеджес. Оно не обязательно у тебя в папке с кодом. Всякие pipenv например автоматически создают для тебя твои venv в отдельной .virtualenvs/ директории, когда ты делаешь pipenv install numpy
>>3473425 реально не дошли, анон >>3473431 прав, пидорский чулочный пидон всё равно срёт в ~/.cache/pip/site-packages вместо локальной папки внутри venv какое же дерьмо этот пидон я хуею
>>3474137 > мне не нужны десятки гигабайт говна в ~/.cache Но ведь ~/.cache буквально предназначен для десятков гигабайтов говна. Если бы оно вместо этого сохранялось в /tmp было бы ровно тоже самое, только перекачивать, возможно, пришлось бы чуть чаще, если ребутаешься регулярно.
>>3475340 пчел я хочу чтобы при создании "виртуального окружения" всё питонье говно складировалось именно внутри этой конкретной папки, а не срало мне в ~/, в /tmp, в небо, в аллаха.
>>3475413 Проверил у себя. ОКАЗЫВАЕТСЯ, МНЕ В ~/.cache/ НАСРАЛИ: Абсолютно все браузеры (больше всех). Абсолютно все редакторы (видео, фото, текстовые), PIP, несколько эмуляторов терминала, игры, видеоплееры, скриншотилки и ещё, наверное, сотня программ из категории "разное". Пиздец! Как они все посмели хранить кэш в папке для кэша? Маня, ты обосралась, просто признай это. Разрешаю умолкнуть без извинений.
>>3475413 И да, для совсем уже дегенератов: > ~ ➤ 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.
Заметил, что многие к питону довольно предвзято относятся, дескать из-за простоты в освоении он потерял очки престижа. Хотя по факту вакансий на питон в разы больше. Но вопрос в другом, какое направление вы выбрали для дальнейшего развития и на чем выбор основывался?
Анонс, подскажите что можно почитать человеку, которому питон нужен не для вката, а для работы. Задача такая: имеется набор данных, нужно построить линейные уравнения регрессии. Короче говоря, нужно на огромном наборе данных найти уравнение, которые позволить прогнозировать конечные свойства.
>>3475738 >В чем тогда смысл кэша? Ты путаешь кэш и бэк. Суть кэша только в том, чтобы не проводить заново некую операцию, временно сохранив её результаты.
>>3475937 "Асинхронщина" это хлеб и кровь и плоть и вообще единственный смысл который в 25 году остался в питоне. Если для тебя это новость, значит ты какая-то залетуха с курсов.
Пиздец, пол года в тред не заходил а тут одни нуфани и скриптокиди остались.