Главная Юзердоски Каталог Трекер NSFW Настройки

Программирование

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 45 9 27
Питон-тред №174 /python/ Аноним 08/05/25 Чтв 15:30:48 3449085 1
image 104Кб, 630x630
630x630
Тред, посвящённый языку программирования Питон, #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
Аноним 08/05/25 Чтв 15:34:23 3449090 2
С предыдущим тредом проебался: >>3375375 (OP)
Аноним 08/05/25 Чтв 16:19:45 3449124 3
maxresdefault.jpg 130Кб, 1280x720
1280x720
Остались еще вкатуны в питон?
Не свитчеры, а именно с нуля первым языком?
Какой у вас план?
Аноним 08/05/25 Чтв 17:19:00 3449156 4
изображение.png 80Кб, 300x168
300x168
Аноним 09/05/25 Птн 02:36:51 3449332 5
>>3449124
>Какой у вас план?
Просто берешь и без задней мысли вкатываешься.
Аноним 09/05/25 Птн 05:45:33 3449354 6
>>3449124
Ну, я. Но мне питон для автотестов нужен. И то не могу сказать, что это прям ПЕРВЫЙ мой язык, 10 лет назад я знал js, правда с того момента больше им не пользовался и не программировал. Но ООП и прочую залупу я уже знаю.
Кстати, охуел как изменилось обучение за эти 10 лет, когда я вкатывался раньше, то было дай бог 2-3 курса на английском по js, и книги с кучей воды и ненужной хуйней. То есть то, что ты сейчас можешь выучить за 2-3 видоса на ютубе растягивалось на 2-3 недели потного дрочева с книгой. И всякие ии - просто пиздец как удобно, я вот раньше ждал, когда мне на дваче ответят почему моя хуйня не работает, а мне отвечали "пошел нахуй" или "ты долбаеб", а теперь нахуй все подробно можно разобрать и пофиксить проблему за 1-2 часа, а не за ебанных 2 месяца глубокого тильта, когда ты просто сидишь и не ебешь что делать вообще + чувствуешь себя говном все это время.
План писать автотесты. Ну, как бы, я за час уже первый тест написал. Мой план просто задрочить это и не ломать голову и вспоминать "а чо там была та", а просто спокойно по лайту писать эти тесты.
Аноним 09/05/25 Птн 05:52:34 3449355 7
>>3449354
Кстати пиздец обидно, ебать бы я щас охуенно жил, если б тогда js не бросил. А бросил я его знаете почему? Потому что ебаная нормисная хуйня меня задрочила до конца, то иди блядь шарагу закончи, то иди блядь вуз закончи, то блядь иди уже работать пора, то блядь ищи новую работу побыстрее, в итоге нахуй как долбаеба палкой гонят, а профита 0 нахуй. Че доебались до меня тогда все эти люди? Гореть им в аду бы, конечно.
Аноним 09/05/25 Птн 10:45:11 3449418 8
>>3449354
Рано нахваливаешь всю эту мишуру, потому что ни тогда, ни сейчас у тебя результата пока что нет.
Вот когда будет, тогда и нахваливай.
Аноним 09/05/25 Птн 11:51:17 3449449 9
>>3449355
даже не представляю, это наверное как купить биткоин и продать чуть дороже, а потом смотреть как он дорожает в разы.

Я не бросил 10 лет назад и вкатился но сейчас один хуй, что ты, что я сидим и в новую хуйню на общих основаниях вкатываемся так как в старой уже работы нет.
09/05/25 Птн 18:37:49 3449689 10
>>3449449
А что не так с работой?
Аноним 09/05/25 Птн 19:27:24 3449709 11
>>3449689
Сейчас один из немногих реальных способов найти работу на питоне это выучить React. Не шучу. Чистых бекендеров требуется очень мало, в основном разные фулстеки (бекенд + МЛ, бекенд + фронтенд).
Аноним 10/05/25 Суб 04:12:32 3449863 12
>>3449085 (OP)
Братья-питухонисты
Поясните за exec
Как правильно запускать в нем код, чтобы он выполнялся как отдельный запущенный скрипт? Пилию свою иде, я понимаю что надо как то передать ему словарь глобалсов идентичный тому какой создаётся при python -m file_name
Но просто сделать import __main__ в функции запуска и передать не канает, разбирать pydeved больно очень
Аноним 11/05/25 Вск 00:42:42 3450693 13
— Мощности бы ещё подкинуть...
— Та не, нормально, у меня всё само — память выделяется динамически, GC сработает, не парься. У меня ж Python, всё своё. О-о... О-о... Вот это рантайм! Как же всё гладко обёрнуто в декораторы! Просто zen! Так уж... О! О! О! Контекстный менеджер, ты моя хорошая, да?
— Да ничё.
— А? Ха-ха-ха! Импортируй меня полностью! О! Я даже GIL уже почувствовал. Почувствовал?
— Потоки не тормози.
— Асинхронно?
— Как тебе нравится — await или multiprocessing.
— О-о! О-о! О-о!
— Почувствуй силу duck typing'а.
— Он даже хрустит, блин, у меня! Интерпретатор прям жарит, как будто Cython прикрутил! О-о! Я давно такого сетапа не видел, чтобы и Flask, и NumPy, и скрипты, и джобы, всё в одной обвязке!
— Главное — не держать в памяти список на миллион строк.
— Ну смотри, хочешь — сбрось всё в генератор. Или пульни через итератор.
— Е-мое… полдня дебажил через pdb, чтобы скрипт крашнулся из-за None в поле?
— А-ха-ха! Конечно! Вот ты мне нравишься — как list comprehension на одной строке! А другие — по for’у пишут, и радуются. А-а! А-а! А-а!
— Столько времени оборачивал в классы, чтобы…
— О-о... да!.. нет!..
— Ещё будешь запускать?
Аноним 11/05/25 Вск 13:31:16 3451002 14
Аноним 11/05/25 Вск 18:05:05 3451277 15
image.png 53Кб, 972x219
972x219
Суп. Вопрос, наверное, простой. Мне тут понадобилось написать примитивненький 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 не приходит.
Аноним 11/05/25 Вск 19:40:31 3451340 16
>>3451277
можен он в лог файл пишет
Аноним 12/05/25 Пнд 10:40:25 3451767 17
>>3451340
Если я нигде в коде не указал пути и имени для логфайла, то это было бы странно, не находишь?
В общем, я тут откопал плейлист: https://rutube.ru/plst/440890?r=wd
Оказалось, что устройство модуля логгинг вообще пиздец нетривиальное и замороченное и моего беглого заглядывания в доку хватить не может. Пока решил обойтись самой-самой базой, а потом -- покурю внимательнее.

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

Я допускаю, что это ОЧЕНЬ ГИБКО, и я даже ПОЧТИ оценил, но в текущей задаче у меня на разборы с логированием уйдёт больше кода и времени, чем на саму проблему!
Аноним 12/05/25 Пнд 12:20:24 3451915 18
>>3451767
>Я допускаю, что это ОЧЕНЬ ГИБКО, и я даже ПОЧТИ оценил
держи нас в курсе, неосилятор
Аноним 12/05/25 Пнд 18:13:23 3452399 19
>>3451915
На то, чтобы выплёвывать одни сообщения в stderr, а другие в stdout можно потратить 1 простейшую строку кода как у меня теперь, а можно -- 100-200+ строк злоебучего конфига со сложными связями плюс с переопределённым классом.
Короче иди нахуй, стандартный логгер реально ебанутый и оправдан только если у тебя прямо большой бэйр-метал-хостет стейтфулл и логи идут то в опенсёч, то шлются по смс прямо из приложения (а не собираются штатным функционалом кубера куда-надо в 10 раз проще, в 100 раз фичастее, а главное -- В 1000 РАЗ СТАНДАРТНЕЕ).
Аноним 13/05/25 Втр 19:15:52 3453342 20
Здравствуйте, Питонисты. Столкнулся с такой проблемой. Есть ли способ инициировать работу бота в чате телеграмма через питон без необходимости запуска через команду /start, или хотя бы чтобы тригерился по словам или как то замаскировать эту функцию?
Аноним 13/05/25 Втр 20:49:46 3453401 21
>>3453342
import telebot

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

ну и дальше уже @bot.message_handler настраиваешь как тебе нужно.
Аноним 13/05/25 Втр 22:22:29 3453489 22
>>3453401
Шо так, шо так ничего не выходит. Сам-то себе я могу написывать, а в других чатах только через /start.
Аноним 13/05/25 Втр 22:24:12 3453495 23
>>3453401
В смысле, могу писать себе в боте без команды /start только через эхо бота, а в других чатах хуй.
Аноним 13/05/25 Втр 22:33:08 3453503 24
>>3453495
При том, что если я выдам ему права администратора в своем чате, то все работает.
Аноним 14/05/25 Срд 12:36:02 3453913 25
>>3453342
Насколько я понимаю, это сделано, чтобы нельзя было пользователей случайно подписать на бота без ведома юзера, а только чтобы он явно запускал, понимая, что далет.
Но по крайней мере ты можешь распространять ссылку прямо со стартом, тогда он будет отправляться сам, да ещё и параметр какой приклеит, например ID реферала:
> https: //t. me/nastyanovelbot? start=1854544298
Аноним 14/05/25 Срд 13:13:23 3453941 26
>>3453913
>чтобы нельзя было пользователей случайно подписать на бота без ведома юзера
Именно так. Я проверил с телефона, компа и эмуля под разными аккаунтами в разных чатах и пришел к выводу, что говной занимаюсь. Это нужно делать прямо с аккаунты через машину.
Говоря откровенно, мне вообще-то спамер нужен для рекламы. Может есть ссылки какие?
Аноним 15/05/25 Чтв 17:12:15 3455324 27
>>3452399
>Короче иди нахуй, стандартный логгер реально ебанутый и оправдан только если у тебя
А он по-умолчанию более-менее сконфигурирован, тебе нyжна всё та же одна строчка кода, конфигурировать надо, если у тебя нестандартные запросы

Зато если вдруг понадобится что-то нестандартное, тебе не придётся переделывать весь код
Аноним 15/05/25 Чтв 19:44:01 3455485 28
1747323356022089.gif 3332Кб, 718x800
718x800
Колеги, жизненно?
Аноним 15/05/25 Чтв 19:49:38 3455491 29
>>3455485
>Видитие, Канбан Канбаныч, с растом деньги будут быстрее двигаться
Аноним 15/05/25 Чтв 20:52:38 3455570 30
Аноним 15/05/25 Чтв 21:18:05 3455576 31
>>3455570
Тебе для каких целей?
Аноним 16/05/25 Птн 00:46:43 3455685 32
>>3455485
Зачем тебе делать миллиард вложенных циклов? Ты ебанутый?
Аноним 16/05/25 Птн 11:15:10 3455866 33
>>3453941
Меня арестовали. Вопрос закрыт.
Аноним 16/05/25 Птн 20:56:00 3456475 34
image.png 65Кб, 451x306
451x306
Аноним 18/05/25 Вск 00:34:23 3457342 35
>>3453342
start это дефолтная тг функция старта бота, обойти ее насколько мне известно нельзя, только можно настроить автосообщение бота перед стартом как приветствие, а туда уже кинуть хендлер клавиатуры и дальше по плану
Аноним 18/05/25 Вск 00:36:03 3457343 36
>>3455485
похуй абсолютно, пока вакансии есть похуй, тем более следим дальше за отключением мьютекса , грядет новая эра питона
Аноним 18/05/25 Вск 10:58:28 3457473 37
>>3457343
>грядет новая эра питона
Ты про что?
Аноним 19/05/25 Пнд 02:15:29 3457949 38
Делаю чат бот для работы по документации. Юзеры настолько отупели что не могут осилить 20 страниц текста.

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

Нашел

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


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

Это в теории. Кто реально пробовал?
Аноним 19/05/25 Пнд 19:34:42 3458270 39
16538168828740.jpg 286Кб, 810x1080
810x1080
>>3457343
>мьютекса
Что такое мьютекс.
Аноним 19/05/25 Пнд 19:37:22 3458271 40
Гиркич.mp4 998Кб, 848x432, 00:00:07
848x432
>>3457343
>грядет новая эра питона
То есть, лет через 6-9 (когда GIL удалят и из флагов, а его удалят!) приличный кусок маленьких проектов, которые авторы писали для себя, и выложили в сеть по доброте душевной, превратятся в тыкву, если тысячи людей за эти 6 лет не потратят дополнительный кусок своей жизни на переписывание проектов, которые им давно не интересны.

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

Интересно, если суммировать все это время, сколько человеческих жизней, получается, убило одно недальновидное решение?
Аноним 19/05/25 Пнд 21:27:19 3458307 41
>>3458271
>лет через 6-9
Окончательно сдохнет х86говнище и один хуй придется весь код переписывать.
Аноним 19/05/25 Пнд 22:45:01 3458328 42
>>3458271
Зачем ты скопировал комент с петухабра?
Аноним 20/05/25 Втр 09:31:41 3458467 43
Ананасы, а есть тут кто работает data/DWH engineer или просто аналитиком данных? Хочу перекатиться из системной аналитики на подобное направление. Из прикладных навыков есть SQL на среднем уровне, в целом базово знаю питон.
Какую часть питона лучше вкатывать? Попсу типа pandas либо сейчас есть что-то ещё актуальное в этом направлении? Мб есть тут кто уже успешно работающий, был бы благодарен ему за совет.
Аноним 20/05/25 Втр 14:40:17 3458675 44
image.png 752Кб, 800x1020
800x1020
Аноним 20/05/25 Втр 14:49:00 3458686 45
>>3458675
А ML это до сих пор хайповая тема?
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов