Двач.hk не отвечает.
Вы видите копию треда, сохраненную 30 июля 2022 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
chispy.png602 Кб, 757x924
Питон тред №134 /python/ 2248924 В конец треда | Веб
Тред, посвящённый языку программирования Питон, #134

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

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

#######################################

ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года

Вопросы-ответы:
— А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.

— Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х

— А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html

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

— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4

— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.

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

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

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

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

ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
Исходник: https://dumpz.org/bASGKD8cCFDf
2 2249038
когда гил уберут?
3 2249073
>>2248895 →
Ох, там огромный пайплайн из селери-тасков, на одном из этапов мы запускаем параллельно несколько тасков и передаем их айдишники в следующий таск, какой-то из них может упасть но по итогу ошибка будет обрабатываться только после того как все они выполнятся, а надо бы завершать их как только 1 упадет, чтоб ресурсы не жрать и пользователя меньше ждать заставлять
4 2249081
Прочитал как "Путин-тред"
5 2249094
>>49081
Абамка-абизьянка тред.
image.png44 Кб, 1659x274
6 2249100
>>49073
Вот примерно такое говно у меня получилось. Вроде работает, но лишь QA покажет насколько это норм
7 2249105
>>49100
У тебя строка длиннее 78 символов
8 2249106
>>49105
И похуй вообще
У меня 120 лимит
9 2249107
>>49106
Нужно придерживаться 78-80, потому что человеческий глаз не воспринимает строки длиннее стольки символов
10 2249112
>>49107
Это историческая хуйня, которая пошла от испопаемых терминалов, офтальмолог юный.
11 2249114
>>49112
Ну так эволюционно глаз привык так сказать.
12 2249118
>>49114
40 лет эволюции! Как еще дополнительных глаз не наросло у наследственных ойтишнеков.
13 2249143
Ебат докер охуенная штука
14 2249145
>>49143
Веселуха начнется когда будешь оркестрировать кучу разных контейнеров, ебаться с репликами баз, нодами и нагрузкой
15 2249146
>>49145
Да не буду, я только учусь...
16 2249175
>>49146
Кабаныч скажет, значит будешь
17 2249188
>>49145
Посоны, я научился итерироваться по строчке!
@
Веселуха начнется, когда будешь делать 9000кк рпс и отдавать петабайты статики.
image.png97 Кб, 2802x747
18 2249473
Почаму Сваггер в Фастапи показывает мне такую херь на респонс когда я четко написал что и как он возвращает (обозначил response_model). Для входных данных он все подтянул и показывает как надо
19 2249480
>>49473
Патамушта

Ты на что рассчитываешь, когда кидаешь скрин с неправильным результатом? Что у всех в треде твои исходники имеются что ли?
image.png393 Кб, 800x800
20 2249488
>>49480
Я работаю над крайне засекреченным приложением. Сурс код кидать нежелательно
image.png422 Кб, 660x420
21 2249494
22 2249531
Как Django Messages работает? Оно как-то "отсылает сообщение юзеру" но как это технически реализовано? Просто взять и без задней мысли отослать данные клиенту в браузер можно только через вебсокет
23 2249541
Можно в джанге вручную написать x-token для доступа к urls? Я смотрел на djangorest-api-key, но там ключи надо самому через admin добавлять, да и работает он странно через api_view, который показывает debug page (который выключен блядь), вместо простой ошибки.
Вручную сделать декоратор? Как-то топорно получается. Неужели нет простого способа это сделать. Зачем это надо? Ко мне идут запросы с других апи, не с пользователей, а апи. Для них авторизацию крутить что-ли, это же ебанизм.
изображение.png5 Кб, 711x31
24 2249755
>>49531
В доке всё написано
25 2249942
В чём прикол asgi?
26 2249991
>>49942
Поддержка асинхронности или типа того.

В питоне асинхронность реализована просто уебищно, практически скопировав это дерьмо с js. Пихают, естественно, везде где только можно, в синхронном языке блядь. Все эти awat async и прочие блевотные названия из js. Concurens использовать гораздо приятнее.
27 2249997
>>49991
Не бывает синхронных и асинхронных языков.
28 2249998
>>49991
https://en.wikipedia.org/wiki/Async/await#History
Первым придумал микрософт, а потом все у него спиздили, ололо.
29 2250067
C каких бесплатных курсов посоветуете вкатываться?
30 2250101
>>49991
Чел, спок
31 2250116
>>49991

>практически скопировав это дерьмо с js.


Который давно является lingua franca в плане асинка. Забавно

>Все эти awat async и прочие блевотные названия из js.


Чел...

>Concurens


Чел))
32 2250150
>>50101
>>50116
Чел, не чели, чел.
33 2250205
Пуйчарм сам подсвечивал красным ошибки а желтоватым маркером выделял ворнинги. VS Code-у вообще похуй, установил расширение для Питона, но по-прежнему - нихуя. Могу импортировать несуществующие модули, обращаться к несуществующим атрибутам класса - ему поебать. Как это фиксить? или может это не фиксится нихуя и я был слишком строг к Жидбрейнсам и по факту ничего лучше на рынке сейчас нет?
34 2250229
>>50205
Ну а ты думал? Питон молодой ведь язык, не успели нормальных иде изобрести еще.
image.png188 Кб, 715x1053
35 2250238
36 2250241
>>50205
>>50229
Ну а что вы хотели от скромной инди-опенсорс компании "Майкрософт"?
Зато VScode легковеснее и удобнее и вообще, юзай vim
37 2250320
>>48924 (OP)
https://ideone.com/V0T0lV
Класс для получения рандомных значений из больших файлов. Что хуево сделано, кроме того, что велосипед?
Алсо, как тут правильно организовать файловые эксепшены?
38 2250352
Можно как-то заставить линтер вроде flake или black ругаться, если у функций и методов не проставлен тайпинг?
39 2250366
>>49038
Жди сабинтрепретаторов
40 2250370
>>50352
Pyright
41 2250371
У меня есть пара предложений (скорее даже репорт на потенциальные баги) к Pycharm, куда писать, чтоб они обратили внимание?
42 2250375
>>50320
А зачем вообще делать какой-то отдельный велосипед с чтением строк, если можно readlines()?
Ну и можно будет заюзать with open('file.txt', 'r') as fp:
и избавиться от бессмысленного деструктора
И зачем разделять bigfile и не bigfile?
43 2250377
>>50371
Pycharm - Help - Contact Support/Submit a Bug Report/Submit Feedback
44 2250380
>>50375
Чтобы не читать файл в 500мб полностью, очевидно же.
А маленький можно и читать, чтобы не дрочить i/o.
45 2250383
>>50380
Штоблять...
А если у тебя будет одна строка в 500Мб?
46 2250385
>>50383
Не будет. Речь про файл с списком значений и из них нужно брать рандомные.
47 2250390
>>50385
Ну чел, всё равно у тебя в конструкторе читается сразу весь файл. yieldов или чего-то такого не видно
48 2250392
>>50390
Читается и строится массив оффсетов, потом по запросу читается по рандомному оффсету.
Суть в эффективном использовании памяти. Предложи лучше.
49 2250481
>>50320
В код не вникай, сразу отвечай

Ебани реализацию __enter__ и __exit__, в которых ты открываешь и закрываешь файл. А в коде юзай класс как контекстный менеджер. Тогда и файловые эксепшены обработаешь
50 2250497
>>50481
Не, не канает.
51 2250502
>>50497
Схуяли это?
Выносишь свои строчки до open в enter, из del в exit. Остальное оставляешь там же.
52 2250505
Как в Джанге (DRF) отключить авторизацию по Bearer-токенам? Бесит, отключить бы чтоб локально легче апишку гонять
53 2250506
>>50502
Потому что файл открыт и по нему идет чтение в процессе работы.
Открывать и закрывать каждый раз ради того, чтобы завернуть в контектст менеджер это хуевая идея, по-моему.
54 2250514
>>50505
'DEFAULT_AUTHENTICATION_CLASSES': []

Отключит везде
55 2250515
>>50506
Тебе чо мешает внутри менеджера все свои дела сделать, чтобы по итогу файл нормально закрылся?
Циклы и if-ы там не запрещены
56 2250516
>>50515
Ну вникни уже в код, блять. Ты уже второй начинаешь бессмысленно спорить, не разобравшись.
57 2250531
>>50516
with YobaRandom('list.txt') as yoba:
___huinya1 = yoba.choice()
___huinya2 = yoba.choice()

Ты какой-то дурачёк, видимо. По тому коду, что ты прикрепил, нихуя не мешает использовать контекстный менеджер. Если ты там ракету в космос запускаешь, то тащи подробный код
58 2250533
>>50505
Поставить токен какой надо и не еби мозг
59 2250540
>>50531
Потому что я его инициализирую на старте и потом буду использовать.
Нет смысла заворачивать ВЕСЬ КОД в контекстный менеджер только чтобы использовать контекстный менеджер, это хуйня.
Не стоит аж так серьезно воспринимать его необходимость. Да, это удобно, когда тебе надо пару строчек завернуть в какую-то операцию, но не более.
60 2250547
>>50540

>я его инициализирую на старте и потом буду использовать.


>Ну вникни уже в код, блять.


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

>Не стоит аж так серьезно воспринимать его необходимость


>как тут правильно организовать файловые эксепшены?


Ну и нахуя тебе тогда вообще об этом заботиться? Можешь вообще файл не закрывать например
61 2250554
>>50533
Легко сказать бля
ОТКУДА его достать-то? Где он нахуй ставится я вообще не ебу. у меня только АПИшка свагера, фронтенда с формочками у меня под рукой нет
62 2250568
>>50547
Потому что есть целесообразность и уместность.
Но некоторые почему-то впадают в крайности. Одни заворачивают каждый отдельный доступ к файлу или запрос в базу в менеджеры, другие заворачивают вообще всё в менеджеры и сидят там.
Это суть небольшое удобство для некоторых ситуаций, не стоит возводить его в правило.
63 2250667
>>50568
В питоне нет деструкторов, это не C++, __del__ про другое и закрывать там файл неправильно.

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

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

ХОтя есть вариант изобрести свой собственный велосипедный контекстный менеджер, имитирующий настоящий. Чем ты и хочешь заняться.
64 2250677
>>50238

>188Кб, 715x1053


2021 истекает, а телефон не full hd
65 2250762
>>50205
Надо пользоваться venv и всё будет как у здоровых людей.
66 2250908
>>49105
И что?
67 2250957
>>50205
Если ты работаешь через ssh, то плагины надо перекидывать на сервер в соотвествующей вкладке. Тогда и будет работать
68 2250961
Как сделать что-то типа requests builder-а?
У меня есть интеграция с несколькими сторонними сервисами, каждому я прописал по 10-15 различных запросов.
Есть идеи или примеры как их сделать красивее и универсальнее? С учётом sessions и тд. Чтоб где-нибудь можно было прописать urls-ы, headers, payloads и тд. И где их лучше прописывать? Прямо в коде или где-то отдельным файлом?
Используются токены авторизации, которые хранятся в базе как есть, хто тоже правильно или лучше закодировать?

Куча примеров как сделать апи, но почти нет как адекватно организовывать запросы к этим апи, когда их много. Как это называется? Я просто недавно в вебе
69 2250965
>>50961
Ну блядь изи же
Пишешь базовый класс, в котором подготавливаешь урл/заголовки/авторизацию/логирование/парсеры ответа/запрос и базовую обработку ошибок.
Наследуешься и привязываешь нужные параметры.
Статичные вещи, типа урлов - храни в конфиге. Авторизацию - в секретах или переменных окружения. Остальное можешь хоть в классе забить. Токены в бд, если они периодически меняются - норм. Если нет, стоит в секреты вынести
70 2250972
>>50965
Просто это довольно тривиальные вещи, подумал, может есть какая-нибудь готовая либа под это дело, а я тут велосипеды делаю
71 2250983
Хочу, чтобы на клиенте выполнялось шифрование по сложному алгоритму. Это можно сделать в Django, или только в JS?
72 2250986
>>50972
От request.Request наследуйся. Определи свой таймаут, хоста, заголовки и т.д
Сделай свой клиент, отнаследовавшись от requests.Session. Определи свой query, обработку, подготовку запроса.
Потом просто Лепишь потомков от своего request.Request и оставляешь один клиент для сессии и все.
Делаешь request = MyRequest(...); result = MyClientSession().query(request)

Может что есть проще или умнее. Я примерно подобное делал. Расширять дочерние классы довольно легко
73 2251226
>>50908
Надо соблюдать PEP8
74 2251270
>>51226
Почему надо? У нас 120 символов и это норм. 78 для дебилов.
75 2251789
>>51226
Даже если код станет нечитаемым от переноса строк?
76 2251819
>>50986
Да, наверное, так и буду делать.
Хочу чтоб потом было легко это менять всё. Одни сервисы просят токены, другие хеш-сумму запроса, третьи нестандартный oauth и прочие.
Пишешь одно, потом натыкаешься на ещё одного нестандартного и переписываешь всё заново.
77 2251859
Нубик в треде
Посмотрел уроков на ютубе методы, аргументы, функии, циклы хуе мое
А дальше что делать ? книжки читать?
Какую?
я не задушусь и заброшу ? Есть что то с задачками для нубов ?
78 2251862
>>51859
Че по кайфу то и делай.
79 2251865
>>51862
Мне по кайфу ничего не делать и деньги получать.
Та че не делать?
80 2251867
>>51865

>Мне по кайфу ничего не делать и деньги получать.


Тогда тебе охранником или сторожем.
81 2251873
>>51867
Из охранников меня уволили на следующий день. Заболел в тот день, температура была 39, под камерами уснул.
82 2251875
>>51873
А еще здоровье мое не очень... то лапы ломит, то хвост отваливается.
83 2251876
>>48924 (OP)
Я хуею, пацаны
Работаю с одним проектом, там в celery-таске происходит ошибка, решил подебажить ее и спустя десяток минут таки осознал, что я и celery воркер работаем с разными файлами! Я сука вообще удалил нахуй все тело проблемной функции, а это мудло по-прежнему мне высирает ошибку с тем же трейсбеком на той же строчке (которой вообще уже нет блять). Это че за хуйня? КАК это блять может происходить? Проблема именно с celery-таском, когда ставлю логирование в верх модуля то при обычном импортировании оно конечно же срабатывает

Запускаю все в докерк-композе если вдруг это как-то меняет дело
84 2251878
>>51875
А на днях, я линять начал. Старая шерсть с меня сыплется, хоть в дом не заходи.. Зато новая растет - чистая -шелковистая.
85 2251899
>>51876
Если код таски не подключен к контейнеру как часть volume, а собран как часть образа, то нужно пересобрать докер образ.
86 2251913
>>51899
Помогло. Но остается вопрос: нахрена так делать? Это реально фича что ли?
87 2251915
>>51913
Да, чтобы закешировалось и не менялось
88 2251942
>>51913
Если не нравится эта сорт оф базовая фича докера, пользуйся уже упомянутой фичей волюмсов. Хз зачем вы вообще интерпретируемый код прибиваете гвоздями к образу.
89 2251951
>>51942

> Хз зачем вы вообще интерпретируемый код прибиваете гвоздями к образу.


Очевидно, для воспроизводимости образов
90 2251954
>>51899
Не обязательно пересоибрать. Можно внутри контейнера поправить файлы и рестартнуться. Если авторемув флаг при запуске не стоит, то заработает. А учитывая, что сам через компз запускаешь, то даже если стоит, то можно легко удалить. В таком случае даже по ссш из иде можно внутрь контейнера подключиться и редачить файлы прямо там из редактора
image.png271 Кб, 750x394
91 2252094
>>48924 (OP)
Питонисты, всем привет! С наступающим!

Нужна помощь, советом.
У нас с друзьями есть ламповый чятик в телеге
Появилась идея, используя питон, распарсить его и подсчитать статистику (количество сообщений, среднюю длину, все дела)
В телеге есть кнопка "выгрузить в html формате". В принципе, эти html можно парсить
Но писать что-то самому как-то лениво, и выглядит сложно, могу и не успеть
Мб кто слышал про какой-то более легкий способ / готовое решение
Ну или как тогда сделать? резать по определенным тегам и потом обрабатывать каждое сообщение?
92 2252128
>>52094
Если уж выгружаешь в хтмл, то максимально простой и ленивый способ - без парсинга прямо в консоли браузера выполнить однострочник на жиэс, который посчитает хоть небо, хоть Аллаха. Будет что-то вроде
document.querySelectorAll(message selector).length // количество
[...document.querySelectorAll(message selector)].map(el => el.textContent.length).reduce((a, b, _, all) => a + b / all.length) // средняя длина
и т.д.

А если надо именно на змее практиковаться, то лучше тогда апи телеги дергай.
image.png2 Кб, 255x43
93 2252143
94 2252170
>>52094
1.поставь десктопную телегу
2. сделай это

import pandas as pd
chatseries=pd.read_json('exported_chat.json')
chat = chatseries.messages.apply(pd.Series)
chat.to_csv('output-chat.csv')

3. Это все.
95 2252173
>>52170
зачем ебаться с питоном для преобразования в эксель формат, когда сам эксель умеет читать жсоны?
96 2252177
>>52173
потому что ты в треде про питон запускать эксель - зашквар.
97 2252195
>>52177
Зачем тогда вообще экспортировать в его формат? len(messages) в 2к22 уже не модно?
98 2252197
>>52195
потом в другой программе (тоже на питоне) загрузишь и проведешь анализ.
ты вообще здесь откуда? загугли "pandas jupyter notebook"
99 2252200
>>52197
Изначальный вопрос прочитал жопой ты, а гуглить мне? Так держать, чо.
100 2252201
>>52200
Крудошлеп по ТЗ, помолчал бы когда Аналитики и ЛПР общаются.
Твое дело таски ковырять.
101 2252210
Анон, стоит ли давать уникальное имя каждому виртуальному окружению? Или тупо веде оставлять его как venv?
project1->project1, project2->project1 vs project1->venv, project2->venv
102 2252212
>>52210
Конечно стоит. Вернешься ты к нему и по названию вспомнишь какой говнокод ты писал полгода назад
103 2252268
Так, нубовопрос.
Для полноценной работы pycharm разве нужен уже установленный питон?
Разве он не качает каждый отдельный питон в своё виртуальное окружение?
104 2252270
>>52268
Вот и нубопроблемы. Пучарм ставят, а нужен ли питон вообще - не знают.
105 2252271
>>52270
Нужен ли предустановленный питон? Вопрос в этом.
Конда сама всё делает - ты ее поставил у теюя у же есть питон, потом спокойно можешь создать ещё окружение с нужной тебе версией и библиотеками.
Но мешать кондапроекты с venv'ом не очень хочется.

Так что вопрос ещё в силе.
106 2252273
>>52268

>в своё виртуальное окружение


А это окружение как ты создашь? Из нихуя родишь?
8.png4 Кб, 760x87
107 2252280
>>52273

>А это окружение как ты создашь? Из нихуя родишь?


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

Окей.
Есть чистый пайчарм.
1) Я ставлю нужную версию питона или использует python.exe конды.
2) Создаю проект с этой версией.
3) Работаю.
Правильно?

Если мне нужен будет проект с другой версией питона, мне его надо ли самостоятельно ставить? Или используя базовый интерпретатор пайчарм сам всё сделает?
image.png122 Кб, 1715x672
108 2252282
>>52280
Когда создаешь venv, ты указываешь базовый интерпретатор
109 2252365
>>52282
>>52273
Спасибо.
110 2252447
>>52282
Мне стало интересно что делает твой проект ПИЗДЕР
111 2252572
Если мы вызываем аттрибут класса (callable func) ничего не наебывается? Или питон попытается метод вызвать с таким же именем и тупанет?
112 2252773
>>52572

>Или питон попытается метод вызвать с таким же именем


У тебя не может метод иметь то же имя, что и какой-то атрибут. Одно перезапишет другое.
113 2252777
Всех с наступающим.
Что-то я запутался малость
Есть задача - отсортировать словарь по возрастанию значений
Сделал, как описано тут
https://coderoad.ru/39635256/Сортировка-словаря-как-по-убыванию-так-и-по-возрастанию-в-Python
Если коротко, то получилось, но получился лист с парами словаря

Что-то вроде [('D', 0), ('F', 0), ('A', 1), ('B', 1), ('C', 1), ('E', 2)]
А мне-то нужен словарь
Есть какой-то безболезненный способ трансформации этого листа в словарь? (ну, убрать квадратные скобочки
114 2252784
115 2252786
>>52271
А без конды как? Никак? Ахуеваю с долбаебов
116 2252794
>>52777
Словарь не имеет порядка. Если ты запихнёшь свой список пар назад в словарь, то весь порядок потеряется опять. Можешь в сторону OrderedDict глянуть, если тебе прям обязательно словарь (доступ по ключам) нужен.
117 2252795
>>52794
Дед, тебя даже вчерашний шторм не разбудил.
Словари упорядочены начиная с 3.6 де юре, де факто ее раньше
Screenshot20211231-02065902-08-54.jpg373 Кб, 1080x1920
118 2252796
>>52794
Брат, ты на три года от жизни отстал
119 2252797
>>52795
с 3.7
самофактчек
Screenshot2021-12-3113-10-25.png161 Кб, 1061x788
120 2252863
Блджад, как же меня бесит этот йобанный недоязык! Постоянно с ним сплошная ебля. Вот что ему надо а?
121 2252892
у КОГО НИБУДЬ ЕСТЬ НОВГОДНИЙ КОД?
123 2252927
>>52892
print("C новым годом Леха!")
124 2252962
Так, знатоки асинхронности, подскажите, пожалуйста.
Есть старый код, который выглядит как:
def ms(ur):
t = urllib.request.urlopen(url)
s = BeautifulSoup(thepage, "html.parser")
return s

Вопросы:
1. Можно ли это переписать через асинхронность?
2. Стоит ли это переписывать через асинхронность?
3. urlib и BeautifulSoup при переписывании еще понадобятся? Или надо смотреть в сторону aiohttp?
ок.png9 Кб, 185x273
125 2252965
126 2252980
>>52962
Ты можешь реквесты писать асинхронно, а суп нет, так как это парсер. Да и имеет смысм переписать только если ты хочешь пачку страниц сразу получить, а потом уже их обработать.
Вкат в django 127 2253031
С наступающим, аноны.
В общем слышал от некоторых программистов что в python и js можно и нужно вкатываться через фреймворки сразу. Знаю основы программирования на C#, ООП понимаю, есть ли смысл вкатываться сразу в джанго, не изучая чистый python?
128 2253032
>>52773
Тогда выходит можно вообще вызвать аттрибут как метод если в нем функция хранится? Утиная оптимизация и тут работает?
129 2253049
>>52863
from configparser import ConfigParser
130 2253051
>>53031
Потрать один день на синтаксис и подводные камни, дальше делай, что хочешь. Почти в любом языке так.
131 2253101
>>52980

>если ты хочешь пачку страниц сразу получить, а потом уже их обработать.


Хочется получать ссылки со страниц и сохранять их.
Стоит ли для начала формировать список ссылок, а потом их сохранять? Или делать это на лету сразу после получения?
132 2253235
Ну че, малята, Папка зашел поздравить вас с Наступающим. Будьте благодарны епта
133 2253300
С нг
134 2253333
>>53300
Кто таков, пес? Имя кличку назвал, быстро!
135 2253341
>>53333
Я олд
kekubitthread.png9 Кб, 349x329
136 2253665
бля а как убить треды с помощью ctrl-c?
137 2253698
>>53665
Папка в треде

Что такое сtr+C хоть знаешь? Штудируй вот это:
http://citforum.ru/programming/unix/signals/
https://docs.python.org/3/library/signal.html
https://www.geeksforgeeks.org/python-daemon-threads/

Как пройдешься, Папку поблагодарить не забудь
138 2253702
>>53665
Ты ж в курсе что твое говно на пикриле не работает? (почти сразу же завершается). Нахер тебе это все в тредах запускать?
139 2253712
>>53702
Уверен? У меня все заебись работает
140 2253715
На самом деле мне надо после запуска фласки открыть вкладку с адресом
141 2253786
Узнали? Согласны?

https://youtu.be/3PcIJKd1PKU
14385199386782.jpg87 Кб, 800x575
142 2253933
Анон, помоги плес.
Не работает. Отрабатывает без ошибок, но файлы не сохраняются.
https://ideone.com/ZyEAXm
143 2254055
Аноны, как сделать прокидывание аргументов в функцию более красивым?

Допустим, у меня есть файл app.py, в котором у меня 40 функкций, возвращающих от одной до четырех переменных.
Все это я импортирую в другой файл, например main.py, в котором тоже есть дофига функций, аргументами которых служат ретурны импортированных функций. В каждой функции может быть по 5-8 таких аргументов, поэтому меня получается примерно такая структура:

from app import *

def main_func1(return1, return10, return20, return21, return7, return13, return3)
,,,,,,,,

def main_func2(return21, return11, return9, return16, return19, return2, return8, return24)
........

return1, return2, return3, return4 = app_func1()
return5, return6, return7, return8 = app_func2()
return9, return10, return11, return12 = app_func3()
return13, return14, return15, return16 = app_func4()
return17, return18, return19, return20 = app_func5()
return21, return22, return23, return24 = app_func6()

f1(return1, return10, return20, return21, return7, return13, return3)
f2(return21, return11, return9, return16, return19, return2, return8, return24)

Как это можно переформатировать, чтобы глаза не кровоточили? PEP 8 охуевает от происходящего в файле.
144 2254056
Сонный уже, фикс в конце своего говнопримера:

>main_func1(return1, return10, return20, return21, return7, return13, return3)


>main_func2(return21, return11, return9, return16, return19, return2, return8, return24)

145 2254067
>>54055
Не делать функции, принимающие десяток аргументов и возвращающих тупл длиной с <insert cuckold joke here>. Скорее всего данные, которыми ты оперируешь, что-то объединяет, и это что-то можно описать классом, или, на худой конец, словарем.
146 2254077
>>54055
Принимать параметры через args, внутри функции слайсить нужные наборы в отдельные кортежи и потом эти коржеты перевадать как аргументы опять же через args.
Либо передавать всё через kwargs, но тогда надо делать маппинг, где ключом будет строкое имя функции, а значение сама функция.
147 2254095
>>53933
бамп вопросу
148 2254102
>>53933
Предлагаешь твою хуйню в мозгу моделировать? Ее даже воспроизвести не получится.
Ставишь брейкпоинты, запускаешь в дебаге, находишь ошибку, чинишь, писоешь, какоешь.
149 2254104
>>54102
Мне нужен совет от знающего человека.
Ты знаком с асинхронностью?
150 2254107
>>53933
Алсо, проиграл с поиска изображений по цсс a[href] img, чтобы потом достать родительский a
151 2254109
>>54107
А как лучше сделать?
152 2254111
>>54109
Сразу искать ссылки, не? Зачем этот бессмысленный поиск изображения, если ты его не используешь никак, кроме как вручную достаешь ссылку из родителя?
153 2254116
>>54111
У меня есть файл с ссылками на нужные страницы (with open('C:\Test.txt', 'r') as file:). На каждой странице разное число нужных мне файлов, картинок, и прочих pdf-ок. Мне нужно их сохранить на диск.
Те примеры, которые есть, они подразумевают, что у нас просто есть список ссылок, который превращается в таски, которые потом гонятся.
Но у меня тут 2 цикла - один для прогона по страницам, второй по прогонам по файлам каждой из страницы. И несколько не понятно как это должно выглядеть. Как вложенная асинхронность?
154 2254127
>>54116
что ты имеешь в виду под вложенной асинхронностью?
асинхронность имеет смысл натягивать только на io операции - сеть, или сохранение на диск, исходи из этого, циклы тут не при чем
Добавляешь таски на скрейпинг страниц, они добавляют таски на загрузку-сохранение картинок в ту же очередь. Руками распределять таски по 3 как в примере не надо, просто задаешь размер пула воркеров при создании ивентлупа. Посмотри на классы asyncio.Queue и функцию asyncio.create_task

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

Алсо, если ты это для сохранения картинок с двачей делаешь, что у него есть api, что значительно удобнее и быстрее.
155 2254136
>>54127

>что ты имеешь в виду под вложенной асинхронностью?


Что мне надо асинхронно получать доступ к нужным страницам. В свою очередь каждая страница асинхронно скачивает файлы.
Или я здесь ошибаюсь?

>Добавляешь таски на скрейпинг страниц,


У меня сделано так. Но меня терзают сомнения, что что-то не то.
with open('C:\Test.txt', 'r') as file:
--async with aiohttp.ClientSession() as session:
----futures = [take_image(session, line, number) for number, line in enumerate(file)]
----loop = asyncio.new_event_loop()
----loop.run_until_complete(asyncio.wait(futures))

>Посмотри на классы asyncio.Queue и функцию asyncio.create_task


Хорошо.

>так что просто поставь брейкпоинт и не еби себе мозг.


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

> с двачей делаешь


Не с двачей.
156 2254145
>>54136
Мысли не страницами и файлами, а тасками. Таска на скрейп страницы добавляет таски на скачивание файлов. В ту же очередь.
Если все сделаешь правильно, необходимость создавать ивентлуп внутри такжой таски отпадет, будет один ивентлуп на все таски.
157 2254146
>>54145

>такжой


каждой*
158 2254150
>>54145
Буду смотреть, спасибо.
Ты ещё сегодня тут будешь?
159 2254242
>>48924 (OP)
Линуксовопрос. Я что-то не понимаю. Почему у GdkX11.X11Window есть set_title, но нет get_title?
И как быть?
Вот я делаю:
from gi.repository import Gdk
root=Gdk.get_default_root_window()
А дальше поменять заголовок окна я могу. А вот узнать его из питона не могу. Хм...
160 2254356
>>54077
А как избавиться от этого?
return1, return2, return3, return4 = app_func1()
return5, return6, return7, return8 = app_func2()
return9, return10, return11, return12 = app_func3()
return13, return14, return15, return16 = app_func4()
return17, return18, return19, return20 = app_func5()
return21, return22, return23, return24 = app_func6()
161 2254474
>>54356
Переделай app.py так, чтобы у тебя там не было ни одной функции, возвращающей сразу кучу переменных.
В main.py не передавай никаких результатов, передавай только список функций из app.py, например. Если непременно надо передать список аргументов, то и передавай список (или словарь, или объект какой-нибудь специального класса), а не кучу переменных.
Вместо return1, return10 и тому подобного используй нормальные имена переменных.
А вообще создаётся впечатление, что ты хочешь странного. Если бы объяснил, зачем - было бы можно что-то советовать, а так хз.
162 2254548
>>54356
Очевидно, в app_func1, ... , app_func6 нужно возвращать не return a, b, c, d
А нужно return [a, b, c, d], либо {'a': a, 'b': b, 'c': c, 'd': d}
163 2254557
Объясните, анончики, что такое асинхронность. Я когда-то работал с сишным mpi; я правильно понимаю, что асинхронность - это когда потоками занимаешься не ты явно, а язык?
164 2254573
>>54474
У меня упрощенный пример, в самой программе переменные называются не return1-10, у них нормальные названия.

Суть программы в следующем:
У меня есть набор функций, которые обращаются к удаленной БД, запрашивают необходимые данные и форматируют их. В каждой функции несколько ретурнов, потому что один и тот же набор данных мне нужно форматировать по-разному - списком, строкой, жсоном и т.д., то есть у функции получаются ретурны в духе uniq_parentlog_dict, uniq_parentlog_str и т.д. Всего таких функций у меня порядка 40 - они запрашивают данные из разных таблиц БД и по-разному их форматируют, привести их к одному виду практически невозможно.

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

def set_entity_names(unit_names, coin_names, refillable_names, gear_names):
____with open("app/templates/entityNames.txt", "r", encoding='utf-8') as file:
________data = file.read()

____imported_data = data.replace("template_unit", unit_names)
____imported_data2 = imported_data.replace("placeholder_coin", coin_names)
____imported_data3 = imported_data2.replace("placeholder_refillable_name", refillable_names)
____imported_data4 = imported_data3.replace("placeholder_gear_name", gear_names)

____f = open("output/enitityNames.txt", "w+", encoding='utf-8')
____f.write(imported_data4)
____f.close()

Это простой пример с 4 аргументами, есть функция с 12 аргументами.
165 2254612
>>54573
Ну и почему твои "ретурны" не могут передаваться в виде словаря с плейсхолдером в качестве ключа, например?
А что если плейсхолдера нет? Такое может быть? Тогда что? Отформатированные данные просто будут выкинуты?
А как на счёт того, чтобы не производить все возможные варианты форматирования раньше, чем они понадобятся?
Встретился плейсхолдер - отформатировали данные, вставили. Встретился плейсхолдер ещё раз - взяли уже отформатированные данные из кэша или отформатировали ещё раз.
166 2254617
>>54612
Не, плейсхолдеры всегда железно есть. Файлы в /app/templates статические, не изменяются.

>Ну и почему твои "ретурны" не могут передаваться в виде словаря с плейсхолдером в качестве ключа, например?


Вот это вот я не совсем понял, можешь объяснить? Как это будет выглядеть?
167 2254618
>>54242
Блин, я нифига не понимаю, использую Wnck - глючит шопездец (всё окно приложения начинает мигать).
Пытаюсь использовать xlib - там хз вообще что такое и как это использовать. Непонятно, как создать инстанс дисплея или окна.
В Gdk нужных методов нет.
Ну неужели придётся xprops через пайп подключать?
И это хвалёный питон с кучей библиотек? Пайпы так-то можно и в баше использовать.
168 2254621
>>54573

substitutes={}
substitutes['placeholder_coin']=coin_names
substitutes['placeholder_gear_name']=gear_names

...

def set_entity_names(substitutes):
____for key in substitutes:
________imported_data = imported_data.replace(key, substitutes[key])

Ну что-то типа того.
169 2254622
11111111111.JPG21 Кб, 579x142
170 2254624
А чой-та ВС Код %d подсвечивает другим цветом?
171 2254660
>>54621
Хммм. То есть скармливать функции не аргументы как таковые, а сразу набор аргументов, завернутый в переменную?
172 2254663
>>54660
Прямо как в самом первом ответе на твой вопрос, прикинь?
173 2254701
>>54663
Кстати, да.
174 2254732
>>54624
Думает, что это часть форматирования строки https://pythontect.com/python-d-for-formatting-integer-inside-string/
175 2254838
>>53031
Почему в Asp.net не вкатываешься если c# знаешь?
176 2254848
>>54618
Ну подскажите, заебался я уже с этим питоноам.
Ну вот захожу в https://docs.gtk.org/gdk4/index.html , ввожу там в поиск get_default_root_window, а там просто нет такого. Класс окна? А хз, где его искать. Получить экран? А хз как. Получить дисплей? А хз. Никак.
Уже целый день бьюсь над элементарной задачей - получить заголовок сраного окна. И не понимаю, как её решать. Куча исходников, ни один не работает. Ну кроме пайпа на xprop, но это уж совсем уж пц какой-то будет. Неужели в питоне всё делается через такой вот геморрой? Это же пиздец. Я уж хз сколько времени на изучение этого языка потратил, а до сих пор банальные вещи сделать не могу.
177 2254863
>>54848
На си та же фигня:
https://stackoverflow.com/questions/16258390/how-do-i-read-the-title-property-of-a-gdk-window
Но, блин, почему? Заголовки окон это что, какой-то секрет? Но ведь xprop выводит гораздо больше инфы без каких-либо дополнительных прав!
Бред какой-то.
178 2254865
Я понимаю, что это, конечно, сорта... но мне очень интересно, чем отличаются aiogram, pyTelegramBotAPI и python-telegram-bot?
Что, чем и когда лучше других?
DsMrnDLWoAAYA2V.png123 Кб, 309x407
179 2254882
С нг анчоусы. Мне нужно:
прочитать из бд > положить на диск > прочитать с диска > записать в бд

Пробую делать через csv reader/writer, НО этот пидор вместо NULL, ставит просто пустое поле, им соответственно во втроую бд пишутся просто "", а не NULL, как заставить его писать NULL, без использования pandas?
180 2254883
>>54882
Да, забыл добавить, можно конечно на уровне SELECT из бд сделать подстановка, но это какая-то уж совсем дрисня костыльная
181 2254894
есть у кого лутц 2019 на русском в нормальном качестве в пдф?
182 2255006
>>54882

>csv


Нахуя а главное зачем? Ты в Экселе эти файлы собираешься потом открывать? Сделай нормальный формат, типа паркета православного
183 2255010
>>54624
Блять иди С дрочи, даунина. Как можно не знать таких элементарных вещей?
184 2255012
>>54548

>не return a, b, c, d


>А нужно return [a, b, c, d],


Петушара, ты нахуя собрался возвращать лист вместо тюпла? Что тебе мешает сразу весь тюпл вернуть в одну переменную?
185 2255014
>>54055
Вод для таких как ты, умные люди придумали ООП, чтобы не ебаться со 100500 функциями, их аргументами и ретернами. Скорее всего весь твой набор 40 функций можно запихнуть в 2-3 класса в виде методов, что существенно упростит работу и структурирует исходный код
186 2255038
>>55006
скорость жи, в csv вжух и готово, без накладных расходов
187 2255056
>>54865
aiogram асинхронный, другие два нет
Чо хочешь, то и используй. Абсолютно похуй
189 2255096
>>55012
Чтобы потом его распаковать, ебанашечка. Разницы в производительности что лист что кортеж тут нет никакой.
190 2255098
>>55091
Как можно создать нечто подобное?
191 2255100
>>55098
Хз, свободное время
192 2255103
>>55100
На чем пишут такое? Могу предположить что на плюсах, на шарпе, на сипитоне.
193 2255104
>>55103
Его пишут на питоне, приколи?
1641210723090.jpg14 Кб, 720x234
194 2255106
База
195 2255129
>>55091
Очередной нескучный веб фреймворк? Их же как грязи.
196 2255297
Аноны, хочу тут потихоньку начать осваивать фласк. У меня есть скриптовое приложение с консольным интерфейсом, и я хочу перетащить его в веб. Отсюда возник вопрос - а вообще, когда я разрабатываю что-то, мне нужно сразу в архитектуре приложения учитывать, что у него будет веб-интерфейс? Или там фласк (в данном случае) - это просто слой поверх уже существующей логики?
197 2255298
Аноны, как отправить куки (csrf token) в get запросе, чтоб сервак меня не посылал с ответом page expired, а выполнял запрос?
Такая конструкция не пашет:

url1 = 'https://mifirm.net/imei'
url2 = 'https://mifirm.net/formfind_check'
payload = {'formfind_imei': '000000000000000'}
s = requests.Session()
r = s.get(url1)
x = requests.post(url2, data=payload, cookies=r.cookies)
print(x.text)
198 2255319
>>55298
s.post вместо requests.post тоже ничего не дает кста
199 2255335
>>55298
Отправлять токен в кукисах, очевидно.
200 2255344
>>55096
Давно кортежи стали нераспаковываемыми?
А возвращать мутабельный список, когда можно вернуть иммутабельный кортеж - моветон.
201 2255365
>>55335
Дык а я в чем отправил? cookies=r.cookies Куки взяты из get запроса и подставлены в post
202 2255368
>>55012
Слышь, питух, хули ты на людей раскукарекался? Твоё место возле параши, не забыл ещё?
>>55344
Иногда лист работает быстрее кортежа, представь себе. Никакой принципиальной разницы тут нет. Вполне нормально вернуть dict или set вместо соответствующих frozenset/frozendict, и точно так же нет никакой трагедии в list вместо tuple.
203 2255376
>>55129
А в чём отличие этого Starlite от Starlette?
204 2255394
Как самому скомпилировать на линуксе IDLE? Сорсы лежат вместе с питоном - что с ними делать? makefile для make -> make install есть лишь в общей папке, но он IDLE не устанавливает. Во всех инструкциях из репозиториев качают готовое, но мне нужна старая версия, которой там нет.
205 2255429
Как сделать так чтобы при завершении питон-проги, строго выполнялось определенное действие (например писал некая информация в левый файл), вне зависимости от того, успешно прога завершилась или упала с ошибкой. Напрашивается повесить некий коллбек on_exit, только как? Такое можно сделать в пистоне?
Городить кукую-нибудь хуйню с try-except-finally на высоком уровне?
207 2255535
>>55368
Минуточку, в прошлом посте же говорил, что

>Разницы в производительности что лист что кортеж тут нет никакой.


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

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

>Чтобы потом его распаковать



По-моему, кто-то запизделся. Иди почитай что-нибудь из шапки, если не понимаешь как работет синтаксис распаковки и типы из стдлибы. Потому что пока что выглядишь как вкатун, пробежавший инфоцыганский курс и возомнивший себя д'Артаньяном.
208 2255540
Учу Питон уже около 3-х лет с перерывами, могу максимум написать какой-нибудь скрипт для вычисления дискриминанта из выражения. Всё это время я чувствую, что учу и делаю всё как-то не так, прогресса нет совсем. Сейчас учу по книжке Кори Альхофа "Сам себе программист", всё по-классике: функции, модули, списки, кортежи и т.д., а хули мне со всем этим делать я до сих пор не понял.
Как вы обучаетесь, ваши советы?
209 2255549
>>55540
У тебя хуёвая цель, ты учишь язык, ради того чтобы учить. Прекрати читать книжки и пиши код. Для начала ебани что-нибудь на фласке, например вывод прогноза погоды, если сразу сложно, разложи на части, сначала получи и запиши прогноз погоды в бд, потом выводи в веб.
210 2255551
>>55535
НУЖНО ВЕРНУТЬ ТРИ ЧИСЛА
@
НА СЕРЬЁЗНЫХ ЩАХ ЗАТИРАЮТ ЧТО-ТО ПРОИЗВОДИТЕЛЬНОСТЬ


Вы там совсем ебанулись?
211 2255566
>>55551
Кто мы-то, мне вообще пихуй, это у того шиза один пост опровержительней другого, вот пусть закапыват себя дальше, посмеемся. Никаких бенчей офк не будет, потому что он пиздобол
212 2255598
>>55535

>Минуточку, в прошлом посте же говорил


Это не я (>>55096) отвечал, дебич.

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


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

>По-моему, кто-то запизделся.


По-моему, тебе делать нехуй, как срать в треде и доёбываться до такой хуйни.
213 2255604
>>55598

>Я не рекомендовал изменить тупл на лист


>Я предлагал возвращать список


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


Убедил, ты не шиз, ты в суперпозиции "предлагал, но не рекомендовал".
214 2255607
>>55604
Удебил, я не шиз, пойду почитаю про типы и заодно про PyObject, а то не знаю как работает.
215 2255646
>>55535

>Минуточку, в прошлом посте же говорил, что


>>Разницы в производительности что лист что кортеж тут нет никакой.


И что? Ну кто-то написал так. Я написал иначе. И что? Твой мозг не может вместить в себя анализ двух утверждений? Я не знаю, при чём тут чей-то прошлый пост, я в своём единственном посте в этой ветке написал:
1) Иногда лист работает быстрее кортежа, представь себе.
2) Никакой принципиальной разницы тут нет.
Если ты не способен осознать то, что тут написано простым русским языком, я тут бессилен. Разумному человеку сказанного достаточно.

>А теперь лист быстрее уже? Ну что ж, citation needed, как говорится, Неси бенчи, раз сам себе противоречишь.


Ща всё брошу и буду кому-то что-то доказывать. Больше мне заняться нечем. Чтобы что? Чтобы я потратил полчаса на поиск кода, а ты потом твердил, что мои пруфы не пруфы или в конце-концов даже признал, что я прав? И что мне это даст?

>И, если у тебя трудности с чтением - я спросил, давно ли туплы перестали распаковываться, потому что ты порекомендовал


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

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


Что блядь? Я даже вникать не хочу, что ты тут пишешь.

>По-моему, кто-то запизделся.


О да, ты запизделся.

>Иди почитай что-нибудь из шапки, если не понимаешь как работет синтаксис распаковки и типы из стдлибы. Потому что пока что выглядишь как вкатун, пробежавший инфоцыганский курс и возомнивший себя д'Артаньяном.


Что ты несёшь, упоротый?
>>55566
Так ты и есть шиз. Какой один пост опровержительней другого, когда я в этой ветке всего один пост написал, не считая этого?
>>55566

>Никаких бенчей офк не будет, потому что


Потому что у меня других дел хватает. Скажи спасибо, что я вообще упомянул об этом, мог бы и не упоминать.
>>55598

>Это не я (>>55096) отвечал


И не я.
216 2255661
Если нужно возвращать несколько значений из функции то это онли кортеж, так как тот же mypy пошлет вас нахуй с такими приколами. А если у вас на проекте нет проверки типов, то ваш проект помойное говно. Спасибо за внимание.
217 2255668
>>55661
Могу вернуть кортежем, могу списком, могу словарем, могу кастомным типом или датаклассом, и аннотации всё это указать. И линтер нахуй меня не пошлёт. Если это работает и не создаёт лишних строк кода и операций, то где твой бог теперь?
218 2255670
>>55668
Списком ты не сможешь вернуть так как в типе не укажешь количество возвращаемых из функции значений, а если значения еще разные по типам то тебе придется писать Union, а потом по коду расставлять костыли на проверки isinstance. Тут уже тебя на ревью пошлют нахуй.
219 2255671
>>55646
Ебать порвало.

>Скажи спасибо, что я вообще упомянул об этом


Спасибо, что упомянул о том, что из функции можно возвращать список вместо тупла. Хуй знает, правда, зачем.

>>55668
Если делаешь петпроекты для души - на здоровье, в противном случае тебе перезвонят.
220 2255678
>>55670

>в типе не укажешь количество возвращаемых из функции значений


На то я и возвращаю список?
А в кортеже я типа указываю?
Т.е. ты хочешь сказать, что если возвращаю кортеж элементов, мне не надо писать -> Tuple[str, str, ...]? Ок))
Я могу вообще всё в Iterable засунуть и мне опять же будет похуй, как и интерпретатору.
>>55671

>в противном случае тебе перезвонят


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

>На то я и возвращаю список?


Ты тупой или троллишь?
222 2255682
>>55678

>А в кортеже я типа указываю


То есть ты любишь вернуть заранее неизвестное колоичество заранее неизвестно чего? Да уж, твоим коллегам не позавидуешь.
oru.jpg22 Кб, 1280x720
223 2255685
>>55681
>>55682
Круто, т.е. это теперь я опять тупой/тролль/шиз, хотя мне сверху пишут, что я не могу вернуть списком, а только кортежем, т.к. якобы не могу указать количество возвращаемых значений из функции, хотя и там и там мне надо указывать.
Пишите докстринги, не будьте батхёртами.
224 2255687
>>55685
Да ты просто обычный говнокодер на проекте где нет настроенных линтеров и нормального ревью, не более того.
225 2255688
>>55687
Да-да, всё так, и pylint/flake8 не настроен и весь код в папке на фтп храним, ты лучше знаешь.
226 2255691
>>55685
https://docs.python.org/3/library/typing.html#typing.Tuple
Непосредственно в примере в официальной документации описано, как для тупла указывать тайпхинт на длину и тип каждого элемента. Жду аналогичного примера для списка.
227 2255702
>>55691
from typing import List, TypeVar

T = TypeVar('T', dict, str)

def f() -> List[T]:
a = {1: 2}
b = "hello"
return a, b

f()
({1: 2}, 'hello')
228 2255707
>>55702
Охуенно. И вот этот человек кичится тем, что его не увольняют.

Если до сих пор не понял, то у тебя только что получился
List[Union[dict, str]]
Ценность такого тайпхинта нулевая, ты не знаешь ни количество элементов, ни тип каждого из них. То ли str, то ли dict, хуй его знает. Может, там вообще пустой список будет.
229 2255710
>>55707
Спасибо, ты просил пример из доки, тебе привели, ты же не хотел через Union.

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


>To specify a variable-length tuple of homogeneous type, use literal ellipsis, e.g. Tuple[int, ...].


Зато тут я всё знаю, конечно же.
230 2255716
>>55710

>ты просил пример из доки, тебе привели


Твоя дислексия прогрессирует, не запускай ее. Я просил, цитирую:

>аналогичного примера


>на длину и тип каждого элемента


которого ты до сих пор не привел.

>Зато тут я всё знаю, конечно же


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

слишком толсто уже, завязывай
231 2255718
https://habr.com/ru/company/regionsoft/blog/595257/
Не уйти ли из айти?

ИТ стремительно устаревает
Вместе с тобой. Стек, который был актуален лет 5-7 назад, сейчас уже мало чего стоит. Постоянно появляются новые парадигмы, языки программирования, фреймворки, библиотеки и т.д. Если ты самостоятельно не обучаешься, можно быстро выпасть из обоймы. В то время как конкуренция на рынке только ожесточается и на место одного разработчика претендует прокачанные, владеющие актуальными технологиями молодые специалисты (та же история в DevOps, системном администрировании, тестировании и т.д.). И нет, рынок не слаб: полно бестолковой молодёжи, но и сильных специалистов с опытом работы хватает. Золотое Эльдорадо безграничных зарплат всё больше отступает, ИТ становится скорее рутиной, чем строительством будущего.

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

И вроде бы — что плохого в непрерывном обучении и развитии для человека с интеллектом? Но обучение и самообразование выходит за границы рабочего дня и ты, чтобы оставаться тем же крутым профессионалом, вечерами пилишь свой пет-проект, ковыряя новинки Go, Java, JS (или что ты там предпочитаешь) и попутно изучая что-то совершенно новое, чтобы привнести это в рабочий проект, развивать его, делать максимально конкурентным. А это ещё один повод присмотреться к венерианским суткам, они больше подходят для качественного айтишника.
232 2255720
>>55716

>Цветной текст в браузере обозначает ссылку. Если нажать на таковую из моего предыдущего поста, то откроется документация на конкретном разделе, в котором описано, как описать тупл, его длину и тип каждого элемента. Чего ты до сих пор не сделал со своими списками с юнионами, после которых надо проверки длины и типа городить.


Помоги с дислексией, папиши пример с туплом с его длиной и типом каждого элемента, как в документации, а то я не умею её читать и кликать по цветному тексту.
233 2255724
>>55720
Tuple[dict, str]
Куда в тебя столько лезет. Ты же лопнешь, деточка.
234 2255730
>>55724
И я всё равно не вижу разницы с списком (кроме синтаксиса), т.к. твой кортеж также может вернуть пустой список/словарь, и даже может вернуть не 2 значения.
235 2255733
>>55730
Нет, не может. Прочитай еще раз пример из документации.
Да, технически может, но любая иде даже без линтеров сразу на это начнет плеваться. В отличие от.
236 2255735
>>48924 (OP)

>Можно ли на питоне делать мобильные приложения?


Да, смотри на фреймворк Kivy но народ на него жалуется
Чому?
ok.png43 Кб, 843x537
237 2255744
>>55733
Ок, пойду в жетбрейнс напишу, а то че-то уже год никак не могут сделать, а то на дваче сказали.
238 2255749
>>55718

>Но обучение и самообразование выходит за границы рабочего дня и ты, чтобы оставаться тем же крутым профессионалом, вечерами пилишь свой пет-проект, ковыряя новинки Go, Java, JS (или что ты там предпочитаешь) и попутно изучая что-то совершенно новое, чтобы привнести это в рабочий проект, развивать его, делать максимально конкурентным. А это ещё один повод присмотреться к венерианским суткам, они больше подходят для качественного айтишника.



Это какие-то шараги с жестким таймтрекингом? Свободно пилю на работе петы и дрочу другие языки, а дома занимаюсь своими делами никак не связанные с кодингом.
image.png44 Кб, 1046x537
239 2255753
>>55744
То, что ты страдаешь дислексией уже более-менее понятно, но боюсь, к полному диагнозу также добавится рукожопость. Пучарм на такое ругается даже без дополнительной настройки, прямо из коробки.
На фото - комьюнити пучарм, любитель такой ругани.

А в жидбрейнс отправь конечно, пусть покринжуют.
240 2255918
>>48924 (OP)
Аноны, тяжело ли устроиться джуном по питону? Если работаете то чем конкретным заниметесь? Очень нуждаюсь в ответе.
241 2255940
>>55918
Меня взяли мидлом, при том что коммерческого опыта проганья на питоне было около полу года, и то я в основном писал всякую скриптовую хуйню для автоматизации, и только начинал изучать джангу, а до этого был аналитиком.
На текущем месте пилю веб-приложения (сначала тока бэк, сейчас и бэк и фронт) для копроративного пользования. Бэк django, ninja, neo4j, graphql, mssql, фронт сначала делал через тэмплейты, потом на ванильном жсе, сейчас на vue 3.

тот самый обычный говнокодер на проекте где нет настроенных линтеров и нормального ревью
242 2255943
>>55940

>и то я в основном писал всякую скриптовую хуйню для автоматизации


Тут я спизданул немного, т.к. ещё etl-процессы пилил и работал немного с nifi, airflow и postgresql, и взяли в том числе из-за этого, т.к. планируем в этом году переезд на greenplum.
Clipboard01.jpg88 Кб, 893x661
243 2255975
Всем привет.
Делаю тут проектик в курсике одном. Программа, которая получает урл страницы и локально её скачивает в общем.
Можете подсказать, че тут от меня хотят, лел. Я не могу понять вот про этот сис экзит. Че за коды возврата? Там ссылка у них на википедию, но тоже чет не особо понял. Что значит "утилита должна возвращать правильный код"? Я прочитал, что типа если всё норм, то код 0, а всё остальное не понял.
Потом, "должны учитываться все возможные сетевые проблемы", это типа какие? Ну вот я могу проверять, что типа если у ответа код не 200, а чё ещё делать?
244 2256032
>>55975
conn timeout
conn refused
tls handshake failed
dns discovery failure
not existent domain
и так далее, все то, что тебе пишет браузер, когда ходишь по подозрительным ссылкам, вбиваешь их вручную, или не оплатил инторнеты
245 2256064
>>56032
Окей, а это как вообще ловится? Типа это не в респонсе, а просто отдельное исключение какое-то реквестст сделает?

Ну и про сис нихера не понял всё-таки. Как это работать должно? Типа я сам эти коды выдумываю? Просто чтоб потом в скрипте их обрабатывать? Типа если код 1 - пишу что там страница не найдена, код 2 - нет доступа к файлу итд?
246 2256091
>>56064

>это как вообще ловится


Да, вылетит эксепшн прямо на хттп-методе (для сравнения, при хттп 400+ метод выполнится, эксепшн выбросится дальше, в raise_for_status(), если ты его юзаешь)

Про код выхода я тоже хз, что именно хотят. Если нет какой-то конкретики, я б завершался с кодом = http status, если 400+ в запросе, или с кодом = 1, 2, 3... если вот эти сетевые проблемы.
247 2256130
Как практиковаться, если учиться по документации?
248 2256135
>>56130
Как вариант - читать документацию глазами, а писать код руками. Если узким местом окажется мозг, то применить широтно-импульсную модуляцию чтение/практика, с постепенным увеличением ширины фронта практики.
249 2256279
>>56091
Ок, спасибо.
250 2256303
Сап. Как на питончике накатать скрипт, который может с дискорд аккаунта посылать сообщения в определенный чат на сервере? Я пробовал гуглить, но по запросу выдает только гайды по настройке встроенных (как я понимаю) ботов дискорда, а мне нужен бот со стороны аккаунта.
Какие либы юзать?
251 2256354
>>55943

Расскажи подробнее как перекатывался. Почему укатился из etl и дата инженерии?
252 2256409
>>56130
codewars и подобные площадки.
253 2256552
двач, посоветуй что ни будь почитать по асинхронному программированию на питухоне
  .jpg362 Кб, 1034x1280
254 2256581
255 2256586
>>56552
нибудь, обосрался
256 2256590
Есть в треде кто шарит за линейное программирование (библиотеки SciPy, PuLP)?
257 2256604
>>56590
А какой вопрос? Попробуй ещё в машоб тред заплатить вопрос
258 2256606
>>56604

>заплатить запилить


быстрофикс
259 2256654
>>48924 (OP)
Есть ли похожие аналоги learnjavascript только для питона? Или вы реально только по Лутцу и остальным книжкам учились?
260 2256657
>>56654
Аналог в плане такого большого сайта-вики или в плане самоучителя?
261 2256662
>>56657
Скорее в плане самоучителя, просто никак не определюсь по чему учиться. Лернжабаскрипт четенький красивый, с задачками, неужели божественному питону не запилил похожий сайтец?
262 2256667
>>56662
Запили площадку под названием Степик, где люди выкладывают обучающий текст, картинки, видео (на Ютубе, но встраивается в страницу сайта) и организуют задачки с автопроверкой для учащихся (курсы по разным языкам, есть и не по IT). Эти задачки похожи на то, что есть у Кодеварс или Литкода (но более колхозно пока что на мой вкус).

Вот у Кантора, который и написал лерн джава скрипт, вот этого и не хватает - задачек с автопроверкой. Материала у него много, материал хороший, но без проработки каждой темы на 5-10 задачах (с возрастающей сложностью) ты ничего не запомнишь и не усвоишь.

А если ты про сайт-справочник по Питону... https://pythonz.net/ не плохой как справочник, но такого подробного сайта как у Кантора про js, но про Питон я не видел.
263 2256695
>>56667
Норм связка теорию по Лутцу проходить а практиковаться задачками с кодварс?
264 2256724
>>56695
Я бы тебе лучше порекомендовал курсы на Степике от БииГик. В Кодеварс задачки сильно разные и между собой чаще всего никак не связаны.

А так вроде норм.
265 2256738
Приветики. Я из соседнего треда пришел (qa). Пять лет промакачил куашником ручником, дорос до 250. Свалил с работы чтобы перекатиться в автокуа. Прошел укус питона сейчас, берусь за селениум/pytest.
И вот я думаю, а может нахуй их и дрочить джангу? В общеайтишных делах я хорошо шарю, а девы имеют более высокий потолок развития. Сложно ли вообще устроится джуном питонистом сейчас? Какой порог вхождения, учитывая бэкграунд? Сколько по времени будет дорасти (я понимаю что очень размыто, но все-равно) до 250-300 хотя бы? В aqa мне придется год-два до этого обратно подниматься. Мб действительно спекнуться, пока совсем старым не стал.
Вес на луне.jpg125 Кб, 683x718
266 2256798
>>48924 (OP)
Сап, анончики. Недавно начал давить питона оп литературе которую вы скинули. Сейчас занимаюсь по самоучителю для детей, так-как считаю такие самоучители лучшими для вката. Только что выполнил задание, по написанию программы для рассчета лунной массы. Я молодец. А вам спасибо.
267 2256812
>>54557

>асинхронность - это когда потоками занимаешься не ты явно, а язык?


Нет. У тебя может быть асинхронный однопоточный код. И use google, Luke, объяснений в интернетах как грязи - https://medium.com/velotio-perspectives/an-introduction-to-asynchronous-programming-in-python-af0189a88bbb
268 2256820
>>56798
Ты забыл еще один import time вставить, неправильно сработает иначе
269 2256821
>>56798
Вынеси import time перед циклом
А так норм
270 2256830
>>56820
>>56821
Я пока сидел, немного доработал:
re_call = None
while True:
re_call = str(re_call)
if (re_call == 'да'):
break
weight = input('Сколько ты весишь на Земле? ')
wei_plus = input('Какая у тебя прибавка веса в год? ')
times = input('На сколько лет вперед считать твой Лунный вес? ')
weight = float(weight)
wei_plus = float(wei_plus)
times = int(times)
times = times + 1
moon_w = 0
moon_w = float(moon_w)
for i in range(1, times):
weight = weight + wei_plus
moon_w = weight * 0.165
print ('На Луне ты будешь весить ',moon_w, ' кг когда пройдет ', i, 'год')
import time
time.sleep(5)
re_call = input('Рассчеты закончены? ')
if (re_call == 'да'):
print('Благодарю за использование этого конвертера! ')
import time
time.sleep(5)
break
elif (re_call == 'нет'):
print('Продолжаем... ')
import time
time.sleep(5)
elif (re_call != 'да', re_call != 'нет'):
while (re_call != 'да', re_call != 'нет'):
re_call = input('Напиши либо "да", либо "нет"... ')
if (re_call == 'да'):
print('Благодарю за использование этого конвертера! ')
import time
time.sleep(5)
break
elif (re_call == 'нет'):
print('Продолжаем... ')
import time
time.sleep(5)
break

Теперь у меня нормальные выходы из циклов. Куда там import time сунуть? Посмотрю что будет.
270 2256830
>>56820
>>56821
Я пока сидел, немного доработал:
re_call = None
while True:
re_call = str(re_call)
if (re_call == 'да'):
break
weight = input('Сколько ты весишь на Земле? ')
wei_plus = input('Какая у тебя прибавка веса в год? ')
times = input('На сколько лет вперед считать твой Лунный вес? ')
weight = float(weight)
wei_plus = float(wei_plus)
times = int(times)
times = times + 1
moon_w = 0
moon_w = float(moon_w)
for i in range(1, times):
weight = weight + wei_plus
moon_w = weight * 0.165
print ('На Луне ты будешь весить ',moon_w, ' кг когда пройдет ', i, 'год')
import time
time.sleep(5)
re_call = input('Рассчеты закончены? ')
if (re_call == 'да'):
print('Благодарю за использование этого конвертера! ')
import time
time.sleep(5)
break
elif (re_call == 'нет'):
print('Продолжаем... ')
import time
time.sleep(5)
elif (re_call != 'да', re_call != 'нет'):
while (re_call != 'да', re_call != 'нет'):
re_call = input('Напиши либо "да", либо "нет"... ')
if (re_call == 'да'):
print('Благодарю за использование этого конвертера! ')
import time
time.sleep(5)
break
elif (re_call == 'нет'):
print('Продолжаем... ')
import time
time.sleep(5)
break

Теперь у меня нормальные выходы из циклов. Куда там import time сунуть? Посмотрю что будет.
Вес на луне2.jpg130 Кб, 1007x696
271 2256833
>>56830
Вот так лучше.
272 2256840
>>56833

>while-while


>____import


>time.sleep


Для обучения сойдет, для серьезной разработки это пиздец.

>elif (re_call != 'да', re_call != 'нет')


>while (re_call != 'да', re_call != 'нет')


А вот тут даже в логике ошибка, это условие всегда True
273 2256844
>>56840
Лол, очень непривычно вкатываться из лампового бэйсика во что-то нормальное. Тоесть, while внтури другого while не торт? Или в моем случае можно было избежать? Таким образом, я пытался получить в процессе "использования" однозначности вводимых ответов. "Защита от дурака". Цикл while всегда True? или Elif? В сраном учебнике для них обоих показывали возможность ставить там условия, как я сделал, кстати, все отлично работает у меня. На следуюющих выходных займусь доработкой, чтобы для рассчетов принимались только числовые значения.
274 2256849
>>56840
Все, я убрал лишнее из while и поставил ему православное True.
Спасибо анончик. Теперь буду ждать следующих выходных и допишу защиту от некорректного ввода числовых данных.
275 2256857
>>56844

>Цикл while всегда True? или Elif


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

>re_call != 'да', re_call != 'нет'


Даже если оба условия False, то получится проверка вида
if (False, False):
А непустой кортеж приводится к True.
276 2256872
>>56604
Вопрос в решении задачи. Если такое не с руки решать, то пойду в другой тред (машоб), но вообще эту задачу мне не к спеху и не обязательно решать.

Условие задачи:

Марсело решил открыть новое кафе и будет импортировать необходимый кофе из Бразилии. Он хочет объединить три раунда, а именно: Lazy Sunday Morning, Refreshing, All night quiz. Для приготовления этих смесей необходимо использовать кофейные зерна с 4 различными видами кофеина. В миксе Lazy Sunday Morning должно быть не более 25% кофейных зерен III и IV сортов. 75% -Refreshing должны составлять кофейные зерна II и III типов. По крайней мере, 60% всего All night quiz состоит из кофейных зерен IV типа.

Цены за различные сорта кофе:

I тип - $ 2,50 за 500 фунтов

II тип - $ 2,75 за 500 фунтов

III - $ 2,00 за 500 фунтов

IV - $ 3,50 за 300 фунтов

Из одного фунта (полкилограмма) кофейных зерен можно приготовить 30 чашек кофе. Lazy Sunday Morning продается за 1,25 доллара, Refreshing продается за 1,50 доллара, и, наконец, All night quiz продается за 1,75 доллара. Постройте модель, которая максимизирует прибыль Марсело, и решите модель, которую вы построили на Python."

Я так понял, что подобные задачи решаются при помощи линейного программирования. Нашел эту ссылочку на тему - https://proglib.io/p/lineynoe-programmirovanie-praktika-resheniya-zadach-optimizacii-na-python-2020-11-26

Пример с производством 4 видов товаров из 2 ресурсов в задаче из примера с этого сайта выглядит похожим на мою задачу, но не могу перенести логику моей задачи в этот пример.
277 2256874
>>56844
Хотя бы так
https://ideone.com/t20uyg

Гораздо лаконичнее и без ошибок в логике выхода из циклов.
278 2256884
>>56874
Спасибо. Возьму себе на будущее для изучения. Просто на данный момент, я только освоил циклы, до функций еще не дошел, хоть и использовал вызов функций time. Поэтому решал задание теми средствами, которые знаю. Я буду вас время от времени развлекать вас своим кодом.
279 2256889
>>56884
в том варианте не объявлено ни одной функции, все в том же духе, что и у тебя
в твоем вызовы не только time.sleep(), но и input(), print(), range(), float(), int()
так что тот пример не про функции, а скорее про организацию логики и сокращение дублирования кода
280 2256899
>>56872
Нихуя не понятно и вычитать суть задачи сложно. Формулировал ее какой-то соевый хипстопорридж, очевидно.
Измени Марселя на Ивана, доллары на рубли, фунты на килограммы, и вот это говно

>три раунда, а именно: Lazy Sunday Morning, Refreshing, All night quiz


на бульбу, моркву и свеклу. Будет и задача понятнее, и кафе нажористее.

А так - да, выглядит как обычная линейная функция, машоб не нужен, разве что только тебе нравится тратить время на обучение модели и получение точности навроде 76%.
281 2256912
Что плохого в дебаге принтом?
282 2256914
>>56899
Вот я и понял, что это линейная функция, но не понял как для нее условия прописать в PuLP. В примере на сайте все понятно, а тут какое-то новый уровень сложности.
283 2257123
>>56654
Учился Python в бою. На петпроектах.
284 2257337
В питоне можно как-то явно объявлять переменные? Типа как в перле, при use strict переменную нельзя объявлять без my. Можно ли в питоне такое сделать?
285 2257346
>>56872
Ну да, надо записать функцию прибыли (т.е. профит - косты) и максимизировать ее с учетом линейных ограничений. Такую хуйню даже эксель может решить.

Я на питоне с таким не работал, но уверен, что должны быть готовые либы. Надо просто нагуглить доку и в путь.
286 2257595
>>56738
Твой бекграунд вообще ничего не значит в dev. Сиди в aqa. Плюс стеки совсем разные, у aqa там куча своего узкоспециализированного. При перекате в dev на тебе будут смотреть ещё худе чем на скиллбоксового даунича, примеры можешь на ютубе посмотреть и в aqa треде постили, типо вопросики "а почему вы сразу в dev не пошли?".

С другой стороны в aqa вроде как ценится опыт ручником, ну и плюс у тебя уже понимание требований и прочей тестировочной теории. В aqa есть куда расти ещё, потом про нагрузочное узнаешь ещё какую хуету, java core ещё выучи и вообще паладином энерпрайза станешь.
287 2257629
>>57595
Спасибо. Знаю что хэды в крупных компаниях сша могут безумные деньги получать (до 300k/y), но до такого дорасти практически невозможно мне кажется. А программистом сеньором лутать свои 6-7к мне кажется явно полегче. (как поднимать тому же aqa выше пятерки/m, или ручнику выше 3.5/m - я не представляю).
C другой стороны, это уже достаточно большие деньги, но будет обидно если через 2-3 года я пойму, что все, потолок, а прыгать в девы будет уже поздно.
288 2257678
Стоит ли вкатываться в бэкенд на пайтоне? Сам язык нравится, но настораживает, что вакансий очень мало.
289 2257687
>>57678
Стоит
290 2257730
>>57678
Вкат через питон проще всего
291 2257751
Посоветуйте книгу для изучения питона. Не новичек, могу в плюсы, Qt, пых... Чтоб в книге без воды и вврдных по программированию.
Спасибо
292 2257782
>>56912
Никто не знает?
293 2257796
>>57751

>новичек


Учебник русского языка попробуй, должно зайти.
колпачекю flashbacks
294 2257809
избранное
295 2257816
Пишу тут скрипт, который должен сохранять html страницу, потом пробегать по ней и вытаскивать нужную инфу в файл формата txt.
Код прилагаю: https://ideone.com/XEmho0

Появляются проблемы следующего характера:
Если я запускаю это в PyCharm, то вместо 5 секунд мои функции, как я написал в schedule, запускаются секунд через 30.
Вторая проблема - когда я сделал .exe файл из .py, он не работает как хотелось бы. При запуске появляется консолька на долю секунды и закрывается. Ну и у меня еще скрипт должен создавать html и txt файлы, они не создаются очевидно
Пооясните где я не прав, пожалуйста. Ну или если видите что я наговнокодил и что-то стоит поменять. Мне уже кажется сомнительным, что стоит сохранять страну в html, а не скрейпить напрямую нужную инфу.

По плану хотел чтобы обе функции работали каждые 15 минут, а 5 секунд поставил просто чтобы было нагляднее самому смотреть.
296 2257820
>>57816
в коде никто расписание не задаёт, кладут в планировщик и запускают по расписанию
297 2257848
Где находятся парсеры контента для сайта на джанго?
298 2258059
Анчоусы, как с трудоустройством джунов в Украине? По вакансиям одних мидлов сейчас ищут или я жопой ищу?
299 2258158
Сорян, это снова я >>55975

Я так и не поянл особо че делать. Что за коды возврата-то блэд? Я так понял сис экзит принимает просто сообщение, которое ничего не значит само по себе? То есть я могу это сообщение для пользователя туда и писать, а потом в скрипте, который импортирует эту функцию отлавливать исключение систем экзит и его сообщение распечатывать и в лог сувать, да? Но че тогда такое "правильный код возврата"?
300 2258284
>>57816
Попробуй
def main():
____access()
____extraction()

schedule.every(5).seconds.do(main)
301 2258285
>>58158
Ну ёбана там же русским по белому написано, если ответ http отличается от 200, сообщить об этом пользователю.
302 2258296
>>55671

>Спасибо, что упомянул о том, что из функции можно возвращать список вместо тупла.


Дебил, хватит мне приписывать твои вскукареки. Иди на хуй, короче говоря, тупорылый дегенерат!
303 2258308
>>58158
Правильный - значит 0, если нет ошибок, и не 0, если ошибки есть.
304 2258327
>>58296
С возвращением! У нас тут все готово и все в сборе, тебя не хватало. Бухал что ли эти три дня? А чего остановился тогда?
c5b3add7346f32129f4f32c0b2dd5926.jpg110 Кб, 1066x620
305 2258331
Аноны пояснить суть вашего спора. Чот я прочитал по диагонали и нихуя не понял.

Почему нельзя возвращать из функции лист? Зачем мне возвращать тупл, если я дуальше хочу его как лист использовать? Ну пусть даже я возвращаю обьёкт, ну и хуй с ним пусть полежит в листе?
306 2258353
>>58331
Да ну еб вашу мать, еще один.
Возвращай на здоровье, только забудь про поэлементную типизацию и возможность безопасно распаковать этот лист в переменные потом. Если оно тебе не надо, то хоть пятимерными листами кидайся.
307 2258374
>>58331
Если пишешь код без тайп хинтинга и для себя, то никакой разницы нет (на самом деле и с ним с точки зрения работы программы разницы нет, но линтер будет ругаться и другому говнокодеру не будет понятно, что у тебя функция возвращает).
image39 Кб, 1681x229
sage 308 2258522
Привет, тредик. Почему, когда я запускаю скрипт через VS Code, процесс сам переходит в несуществующую папку (cd 'c:\\Users\...\\иС) и ищет там файл для запуска? В скрипте ходьба по директориям не используется, сам я cd не пишу. В гугле не нашел такой же хуйни.
309 2258672
>>55702
А ведь тут ты неправ.
А этот указал на твою ошибку: >>55707

Но, я только что почитал про mypy. До этого вообще не знал, что это такое. И вообще, я таксист. Но вот что я нашёл:

from typing import TypedDict
class MahClass(TypedDict):
a: dict
b: str

def f():
a = {1: 2}
b = 'hello'
return MahClass(a=a, b=b)

r = f()

Теперь у r.a будет тип dict, а у r.b будет тип str.
Ну или как-то так, я этот код не проверял.
310 2258678
>>55749

>Свободно пилю на работе петы и дрочу другие языки


А как на это смотрит работодатель?
311 2258723
обоссыте не бейте, вторую неделю учусь
как сделать чтобы не писать на каждую кнопку отдельную функцию?
при нажатии любой кнопки вываливается ошибка
312 2258727
>>57730
Да я уже вкатился, я имел в виду вкат именно в эту область, неправильно поставил вопрос. Постоянно вижу этот язык в топе разных рейтингов, но не знаю как там с востребованностью на рынке труда. Потратить время на изучение технологии, а потом понять, что она не нужна было бы неприятно.
313 2258731
>>58678
Пока таски выполняются ему похуй
314 2258736
>>58522
Лучше скачай себе убунту с магазина приложений Виндовс и делай через Windows Subsystem for Linux и venv
315 2258738
>>58285
Ну там написано статусы, которые кроме 200 И все возможные сетевые ошибки. То есть как я понимаю, мне надо отлавливать исключение и вызывать сис экзит, а потом отлавливать этот сис экзит? А то не буду же я вручную каждую возможную сетевую ошибку описывать, да?

>>58308
А, лел, я и не понял.
317 2258850
>>58723

>eval


Братан - это пиздец. Постарайся как угодно извращаться, но не использовать этого никогда. В совсем крайнем случае
https://docs.python.org/3/library/ast.html#ast.literal_eval
318 2258892
>>58850

>не использовать этого никогда


Почему?
319 2258907
>>58892
Потому что он выполняет то, что получит. Без вопросов.
320 2258925
>>58672

>Теперь у r.a будет тип dict, а у r.b будет тип str.


>a: dict


>b: str


Никак не мутирую инстанс класса и явно ему передаю a = {1: 2} и b = 'hello'.

>print(isinstance(r['a'], dict)) #True


>print(isinstance(r['b'], str)) #True


Даа, как же так работает...
321 2258927
>>55702

>return a, b


Таким синтаксисом ты тапл возвращаешь. Надо "return [a, b]" писать
322 2258930
>>58927
Охуеть, а код ведь всё равно работает, как же так...
323 2258931
>>58374
У меня в продукте есть код, который запускают консольную программу, она по рестапи общается с сервером и возвращает джейсон. Этот джейсон паристся и возвращается из функции. Там вполне может и список словарей быть. Валидация джйсон схемы происходит в консольной программе. Значит список всегда валидный возвращается. Без жёстких тайпхинтов типа ограничивать длину списка (откуда я знаю какой длины будет список, который сервер отправит) и содержимое (зачем мне в анотациях дублировать джйсонсхему, которая и так нормально проверяется в другом месте плюс какая схема применяется зависит от аргументов и эндпоинта так что мне ещё и на одну функция надо будет юнион разных схем повесить фигня какя-то выходит если так делать) Что проекте сделано не так и как это исправить?
324 2258932
>>58931
Ничего не понял, pydantic решает 90% вопросов, связанных с сериализацией твоих жысонов.
325 2258933
>>58930
Ты даже если ноне возвращать будешь, то код будет работать. Тайпхинты не помогут. Тут надо линтером пройтись
326 2258934
>>58933
Спасибо, а я и не знал, >>55744 это просто так скинул... Жду когда после новогодних каникул уволят после очередного пулл реквеста.
327 2258935
>>58932
Вижу не понял. Вот смотри. Есть консольная утилита для общения с бэкендом. Типа awscli или kubectl. И есть обёртка над этой утилитой на питоне в виде библиотеки, которую можно импортнуть и запускать эту консольную утилиту передавай ей нужные параметры как параметры командной строки и получая результат из stdout в виде одного джейсона. В обычном режиме утилита печатает всякие таблицы в человекочетаемом виде, а нам надо именно в джейсоне чтобы потом можно было с этим результатом в программе работать. Утилита сама общается с бэкендом и всё валидирует. Джейсоны, которые либа читает из stdout этой утилиты уже валидны. И либа заранее не знает что она там прочитает. Поэтому там где возвращается список в джейсоне функция парсинга stdout так и возвращает список. И нет там никакого тайпхинта на список определёной длины т.к. бэкенд может любую длину вернуть. И что ты предлагаешь делать? Какой тайпхинт на такую функцию поставить?
328 2258936
>>58935
Никаким тайпхинтом ты это не проверишь, твоя утилита должна парсить твой жысон с бэкенда и писать в stdout, если он прошёл проверку при парсинге, или в stderr, если нет. Валидировать ты можешь через импорт жысон, ну либо создавать инстанс класса из того же пайдантика с заранее заданной схемой и передавая в конструктор свой жысон.
329 2258938
>>58930
Этот код сломается после второго рефакторинга по уже описанным выше причинам и узнаешь ты об этом только когда все упадет в рантайме. Поэтому такой код проигрывает в стоимости поддержки, а все из-за каких-то сраных скобочек, которые тебе так сильно полюбились не к месту.

>>58934
Чел, ты ведешь себя как персонаж мема "смотрите, я долбоеб". Ок, все поняли, что тебе насрать на существующие соглашения и практики. Тебя уже назвали долбоебом один раз и обосновали почему, но ты не приводя ни одного контраргумента просто продолжаешь свою шарманку "нО вЕдЬ кОд рАбОтАеТ жЕ, мЕнЯ жЕ еЩе нЕ уВоЛиЛи". Че ты еще хочешь-то тогда, переубедить кого-то как делать правильно, соглашения переписать? Тогда ты сайтом ошибся.

Чем я блядь занимаюсь
330 2258940
>>58934
Алсо раз уж вспомнил тот скрин, то игнорирование неудобного ответа детектед, в ответном скрине все работает, криворучка.
331 2258941
>>58938
Не знаю чем ты занимаешься, код не упадёт ни после какого рефакторинга, только если ты сам его не захочешь уронить.

>проигрывает в стоимости поддержки


Ну да, F12 только избранные как ты могут нажимать.

>существующие соглашения и практики


Пеп8 тебя не обязывает в обязательной форме указывать типы.

>>58940
Какого неудобного ответа? Майпай из коробки идёт в пайчарме/вскоде? Нет. При запуске скрипта они ругаются на скрипт при стандартной настройке? Нет. У меня пайчарм не тот? Комунити версия 2021.2. Пайлинт и фалке8 из коробки не ругается если только заранее код не прогнать и конфиг не настроить. Распаковка тапла и листа отличается? Нет.
332 2258943
>>58938
Я никого не пытаюсь переубедить и никому не пытаюсь прививать правильные/не правильные практики программирования на питоне, если у людей есть голова на плечах, они сами решат, что правильно, а что нет, и из-за чего загоняться, а из-за чего нет.
333 2258944
>>58936

>Никаким тайпхинтом ты это не проверишь, твоя утилита должна парсить твой жысон с бэкенда и писать в stdout, если он прошёл проверку при парсинге, или в stderr, если нет.


Так и делаю. Если ты то же самое говоришь, то вопрос был не к тебе, а к тому жизу, что утверждает, что нельзя возвращать список из функции т.к. тайпхинты нормально не прикрутить
334 2258945
>>58944
Ну ты и спроси у этого >>58938 >>58940 сеньона питухон девелопера, а то он только на меня может агриться.
335 2258948
>>58941>>58943>>58944>>58945

>код не упадёт ни после какого рефакторинга


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

>Ну да, F12 только избранные как ты могут нажимать.


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

>Пеп8 тебя не обязывает в обязательной форме указывать типы.


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

>Майпай из коробки идёт в пайчарме/вскоде? Нет.


Снова чини дислексию. Писал же, голый пч на скрине. Без ничего. Да, даже без майпая. Да, даже без линтера.

>При запуске скрипта они ругаются на скрипт при стандартной настройке


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

>нельзя возвращать список из функции т.к. тайпхинты нормально не прикрутить


Соломенные чучела пошли в ход. Список из функции можно и нужно возвращать, если это какой-то массив данных, обычно это массив элементов одного типа. И это даже можно нормально типизировать. С этим никто, блять, не спорит, ну или пруф ми вронг.
Речь выше шла о возврате фиксированного тупла с переменными (возможно) разного типа и распаковке этого тупла в переменные:

>не return a, b, c, d


>А нужно return [a, b, c, d],


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

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

Напридумывали себе охуительных историй про то, что кто-то запретил списки возвращать, и сами спорят с этим, еще и вкатунов с толку сбивают своей шизой.
335 2258948
>>58941>>58943>>58944>>58945

>код не упадёт ни после какого рефакторинга


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

>Ну да, F12 только избранные как ты могут нажимать.


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

>Пеп8 тебя не обязывает в обязательной форме указывать типы.


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

>Майпай из коробки идёт в пайчарме/вскоде? Нет.


Снова чини дислексию. Писал же, голый пч на скрине. Без ничего. Да, даже без майпая. Да, даже без линтера.

>При запуске скрипта они ругаются на скрипт при стандартной настройке


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

>нельзя возвращать список из функции т.к. тайпхинты нормально не прикрутить


Соломенные чучела пошли в ход. Список из функции можно и нужно возвращать, если это какой-то массив данных, обычно это массив элементов одного типа. И это даже можно нормально типизировать. С этим никто, блять, не спорит, ну или пруф ми вронг.
Речь выше шла о возврате фиксированного тупла с переменными (возможно) разного типа и распаковке этого тупла в переменные:

>не return a, b, c, d


>А нужно return [a, b, c, d],


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

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

Напридумывали себе охуительных историй про то, что кто-то запретил списки возвращать, и сами спорят с этим, еще и вкатунов с толку сбивают своей шизой.
336 2258949
>>58948

>Снова чини дислексию. Писал же, голый пч на скрине. Без ничего. Да, даже без майпая. Да, даже без линтера.


Ваша ide не ide. Понял-принял, даже отвечать не буду.
337 2258951
>>58949
Ну, значит, моя иде не иде. И всех остальных тоже. И на сайте жидбрейнса пиздят про работу с типами. Хуево наверное быть нами, лишнее в иде работает.
338 2258973
Назрел следующивй вопрос. Допустим у меня есть класс:

class Zalupa:
____def Drochit():
________None

____def NeDrochit():
________None

____def Run(a):
_________Drochit()
_________NeDrochit()

Т.е. два метода вспомогательные, да могут вызываться по отдельности, но основную работу делает третий метод, как правильно офрмлять такок отношение? Просто делать 3 метода в рамках класса и не парится, или уже делать это на этапе запуска? Или вобще использовать колдунства вроде указателей? Что есть почитать на тему?
339 2258977
Почему при обработке ответа API следует использовать модуль jsonjson.loads(), а не responce.json()?
code.png86 Кб, 728x592
340 2259430
>>58973
Делай так
341 2259434
>>58977
Если класс Response из твоего фреймворка/либы поддерживает метод json() - используй его, код будет более читаемым. Собственно, обычно под капотом этих методов и лежит дефолтный json.loads()
342 2259442
>>59430
Как такие модные картинки делать?
343 2259476
>>59442
VSCode + расширение PolaCode
Ещё есть carbon.now.sh
344 2259486
Почему собесы на джуна настолько легкие?

Дам пару примеров.

За эту неделю я прошел 3 собеса из 3, думаю вот куда пойти работать.

На одну вакансию уже было подано больше 30+ заявок(как говорит djinn).

Собеседование было таким -

Что такое ООП(Инкапсуляций,абстракция,полиформизм)
С какими паттернами имел дело?
Найди мне палиндром
Что такое итератор - генератор
Имел дело с БД?

Все ты взят, зп 800$

На всех собеседованиях зададут максимум 1 вопрос более менее, а остальные так, чисто пообщаться, как вообще их можно провалить, как эти 30+ человек провалили собеседование, я даже подумал, что фирма разводная какая-та, но нет вроде, на остальных собеседованиях все так-же - Пару вопросов, ты принят.

А на работе же душняк может быть? Ну это совсем не правильно проводить такие собесы, вдруг я не справлюсь с работой, то потом виноват буду?
345 2259508
>>59486

> Что такое ООП(Инкапсуляций,абстракция,полиформизм)


> С какими паттернами имел дело?


> Что такое итератор - генератор


Это же вопросы на несколько часов ответа
346 2259514
>>59508
Ну мб поэтому я и джун

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

Вот и все
347 2259541
>>59514
Ну а дальше? В чем преимущества каждого, в чем минусы? Приведите примеры актуального применения.
348 2259559
>>59541
Ну вот он тебе и говорит, что он джун. Он отвечает на эти вопросы на уровне джуна и его берут на джуна.

Он наверное ожидал вопросы про машинный код и черно-красные деревья.
349 2259577
>>59541
Ну с тем же итератором мы можем расширить какой-то обьект, с генератором так сделать не получится. Так-же у нас есть генераторное включение, но вот итераторного не может быть.

Для примера создал бы класс с итератором.

А если серьезно, то я смогу обьяснить где это используется и зачем, но вот конкретно между генератором и итератором же нет ничего такого разного, они похожи, генератор делает тоже самое что и итератор, но имеет ключевое слово yield и обе штуки используются для обхода огромных данных
350 2259583
>>59577
Генератор для генерации, итератор для итерации. (ВНЕЗАПНО)
Это разная хуйня вообще, но реализована на одном протоколе итерации.
351 2259601
>>59577
Попробуй обойди генератором большой объем, и проверь сколько памяти потратишь на это.
352 2259878
>>59486

>зп 800$


o-la-la
Тебе хоть платят или ты платишь?

>вдруг я не справлюсь с работой, то потом виноват буду?


Конечно ты виноват. Всегда.
353 2259967
>>59486
Как ты готовился?
354 2260015
Посоны, сложно будет теги реализовать?
Пишу свой чатик на джанго, хочу чтобы юзеры могли пукать гринтекстом друг в друга. Как на Дваче, в общем.
355 2260188
Гайз, мега сложный вопрос(нет)... есть список к примеру
['users', 'id', 'city'] и значение к примеру - хуй
надо сделать словарь вида -
{'users': {'id':{'city': 'хуй'}}}
как это сделать
356 2260191
>>60015

>Пукать гринтекстом


Парсишь строку на наличие символов, допустимой длины, начальных символов. Просто же. На перле это проще реализовать было бы
357 2260228
>>60188
from functools import reduce

lst=['users', 'id', 'city']
reduce(lambda x,y: {y:x}, ['хуй']+lst[::-1])
358 2260231
>>60228
Даже вот так можно:

reduce(lambda x,y: {y:x}, lst[::-1], 'хуй')
359 2260252
>>60228
Спасибо, это работает, еще бы понять как хД
360 2260265
>>60252
Почитай про функциональное программирование и его элементы в питоне.

Раньше в питоне были map, reduce, filter изкоробки, но в третьем питоне изкоробки остался только map, остальное надо импортить из стандартной либы.
11111111111111111111.JPG96 Кб, 1123x529
361 2260288
Есть такая вот модель в Джанго.
Почему в базу данных атрибут 'category' добавляется, как 'category_id'? Все остальные без id.
362 2260293
>>60288
Это ForeignKey на таблицу news_category, из которой берётся id
363 2260294
>>59514

>лично я ответил так - Генератор представляет собой итератор


генератор - это фабрика итераторов
364 2260439
>>60293
Ну айди берётся, а чо поле-то (или как это называется) переименовывается?
365 2260474
>>60439
У тебя в классе News есть класс Meta. Скорее всего в нём это указано, кинь посмотреть.
3333333333.JPG114 Кб, 1116x835
366 2260521
image.png21 Кб, 884x141
367 2260540
>>60521
С джангой не работал, оказывается это дефолтное её поведение.
https://docs.djangoproject.com/en/2.0/ref/models/fields/#django.db.models.ForeignKey
Погуглил за тебя, кста.
a2oRYXw700b.jpg89 Кб, 500x641
368 2260551
>>60540
Спасибо. Я думал, это как-то связано с db_index=True.
Сложно вкатываться...
369 2260654
>>55091
Есть же фастапи
370 2260657
>>60654
Это вроде какой-то нескучный фастапи, тоже на starlette как и фастапи
371 2260679
Малеха закрепился в базовом питоне, думаю, какой взять пет-проект. Щас сидел срал и скроллил двач с телефона, в голову пришла идея взять апи двача и написать консольную обертку - отобразить список тредов, зайти в/загрузить тред, почитать сообщения, написать ответ.
Потом подучу фласк и оберну все в вебморду.

Насколько ебанутая идея?
372 2260689
>>60679
Твоей работы там на пять копеек.
373 2260692
>>60689
Скорее всего, анон. Но надо же с чего-то начинать.
374 2260694
>>60679

>консольную обертку


>написать ответ


Честно хуй знает как ты в консоли с капчей поступишь.
375 2260695
>>60694
У меня пасскод.
376 2260700
>>60695
А ты другим не дашь потыкаться? Ну ок. Алсо, вебморда к апи двача, в то время как сам двач ей и является кажется тупиковой идеей для пета. Сделай прост свою борду, и то больше практического толка будет.
377 2260702
>>60700
Да, это чисто для себя потыкать. Вообще я просто хочу более-менее научиться работать с апи - ничего лучше, кроме двачика в качестве практики не придумал. Просто не знаю, если есть варианты получше - то подскажи. Интересует вот эта отправка запросов туда-сюда, форматирование данных, отображение и т.д. До этого максимум с чем работал - тягал данные из БД.
378 2260709
>>60702
Ну поработай, всяко лучше чем книжечки дрочить.
1.webm13,2 Мб, webm,
1920x960, 0:55
379 2260718
2.webm8,7 Мб, webm,
1920x1080, 2:01
380 2260724
381 2260799
>>60702

>если есть варианты получше - то подскажи


Попробуй апи гитхаба или гитлаба разобрать. Проект там например скачать или дернуть из него любой файл по выбору. Дофига чего можно придумать. И навыки хорошо прокачаешь и в реальных проектах может пригодится.
382 2260807
>>60709
У меня уже ест работа в айти, я просто учу питон для себя.

>>60799
Вот это кстати хорошая идея.
383 2260839
>>60718
>>60724
Сейчас посмотрел вебмки, выглядит круто, анончик! А каким модулем ты сделал cli?
384 2260880
>>60839
asciimatics
385 2260897
суп анончики, у меня есть вопрос по aiogram, довольно глупый как и я тащемта, сильно только не бейте . Бот просто в качестве тренировки и опробования знаний, почерпнутых из книжек и интернета по пайтону так что я совсем нуб.
Есть основной скрипт (файл main.py) в котором формируется меню и отлов нажатий на кнопки. И есть отдельный модуль (dialog.py), в котором с помощью конечных автоматов формируется длинный диалог и хранение в памяти ответов пользователя.
Вопрос: как запустить диалог из отдельного модуля?
в интернете что то не очень много материалов по FSM статью mastergroosha читал
386 2260907
>>60807

>У меня уже ест работа в айти


Какая же? UI-тестировщик? Паяльщик на АО "Залупастройинвест"?
387 2260920
>>60907
Менеджер продукта.
388 2261064
>>60897
Вычитал что надо в main прописать функцию регистрации хендлеров из модуля (dialog). Я прописал, но ничего не вышло. ну и бамп вопросу.
16408602398953.jpg94 Кб, 640x640
389 2261080
Что щас лучше для вкатыша - пердолить датафреймы в пандах или джейсоны в бекенде грузить?
Где зарплаты жирнее?
Так сложилось что мне пока приходилось максимум писать хелловорлд на фастапи - все остальное время писал ДАТА ПАЙПЛАЙНЫ. Даже МЛ трогать не нужно было.
Имеет смысл грести в сторону бека или и так сойдет?
390 2261107
>>61080
И там и там можно сказать одинаково. Иди куда нравится, градаций особых нет, кроме как на двачах, кто как хитровыебанно устроится столько и будет получать.
391 2261131
>>61080

>пока приходилось максимум писать хелловорлд на фастапи


>Где зарплаты жирнее?


Вот прям сидят и ждут вкатуна, чтоб ему 200к платить. Тебе не поебать куда вкатываться?
392 2261170
Описал две функции, через schedule задал, когда должна выполняться первая. Как сделать так, чтобы вторая ВСЕГДА выполнялась через какое то время после первой?
Если я задаю через schedule таймер второй функции, то рано или поздно они будут выполняться в один момент
Например, в 3 минуту.
schedule.every(1).minutes.do(ХХХХ)
schedule.every(3).minutes.do(YYYY)
393 2261190
>>61170

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


У вас в младшей школе учат программировать, не пройдя базовую алгебру?
394 2261206
>>61190
Хорошо пошутил. Честно. Мне понравилось. Улыбнуло)
не, у нас в школе не учат програмировать
395 2261212
>>61206
Если вас в школе не учили программировать, то вас в школе физрук в жопу ебал.
396 2261213
>>61206
Какой лвл?
397 2261216
>>61170
sleep? ну и время слипа нужна выбрать некратное периоду функции
398 2261217
>>61206
В этой шутке половина решения, если что. Удачи найти его неиронично.
399 2261221
В чем разница между state и status у Celery-тасков? Там константы почти одни и те же
400 2261225
>>61212
>>61213
>>61216
>>61217
Ничего себе ответов!
>>61216
Спасибо, это походу то что нужно!
401 2261234
>>61216>>61225

>юзать слип (уже говно)


>при живом-то планировщике


...решение преследовало его, но он оказался быстрей.
402 2261239
>>61234
Почему быстрее? Я еще не наговнокодил, никуда не спешу
9RrU88ey4b8.jpg165 Кб, 807x801
403 2261603
Сап вкатач. Такая ситуация – на днях собешусь не совсем на свою роль. Собес на Django программиста с годом опыта, а я самоучка с незначительным опытом ковыряния python кода в коммерции (написание скриптов чтобы данные в csv с одного формата в другой переводить и всякие веб-скраперы), перекатившийся в джаву.
Со своим текущим опытом оцениваю свои шансы как "реальные", поэтому хотелось бы выбить джоб оффер. Для этого мне нужно лишь закрыть специфичные для python+django пробелы.

Tl;dr: Анон с годом опыта, расскажи о специфичных вещах которые ты узнал или начал делать в рамках своей работы. Какие вопросы на эту вакансию обычно задают? с этим вопросом утром еще в гугл полезу
404 2261611
>>61603
Обычно внутреннее устройство питона. Мультитрединг, ивент луп, гил, конвой эффект, ио операции, лоулевел цпу баунд вычисления, интерпроцесс коммуникация, примитивы синхронизации, разница второго и третьего питона, внутреннее устройство дэфолтных функий, как работает врап и лру кэш из фанктулз, что делают контекст менеджеры, чем отличается генератор от итератора, ограничения гивента и селари, возможные проблемы при использовании орм, оптимизация запросов в бд, как работать с миграциями, протокол хттп, какой хейдер отвечает за оригинальный айпи проксированого реквеста, на какие методы надо ставить цсрф токен, какие типы данных поддерживает джисон схема, какие преимущества и недостатки лонголинга, разница пост и пут, идемпотентные методы, принципы солид, асид, рест, кап тиорема, особенности ноуэскьэль баз, какие бывают алгоритмы распределения нагрузки. Это с большего, что я вспомнил с последних собесов
405 2261688
>>61611
это пиздец
406 2261851
>>61603
От себя тоже добавлю.
Общие:
С какой последней версией питона работал?
Можешь ли вкратце рассказать об изменениях в последних версиях языков?
Откуда узнаешь про новые фичи/обновления языка, сопутствующие технологии и их аналоги?
Что такое гил и зачем он?
Приходилось ли использовать декораторы? Писал ли свои и зачем?
Зачем использовать генераторы и итераторы?
Есть ли в питоне интерфейсы (и для чего они в теории используются?)
Есть ли в питоне перегрузка методов?
Классы и множественное наследование - нужно ли это использовать и почему?
Используешь ли аннотацию типов?

Бек:
Какие основные хттп-методы знаешь? Какие когда используешь?
Что нельзя передавать через гет?
Что используют для защиты от xss?
Как концептуально работает авторизация? Чем она отличается от аутентификации?
Что такое орм и зачем она используется?
Что такое маршрутизатор?
Что такое шаблонизатор?
Что знаешь о паттерне MVC?
Что такое гуникорн?
Знаешь ли что-то про rest/json api/graph ql?
Что такое брокер сообщений?

Мимо-присутствую на технических собеседованиях питонистов
406 2261851
>>61603
От себя тоже добавлю.
Общие:
С какой последней версией питона работал?
Можешь ли вкратце рассказать об изменениях в последних версиях языков?
Откуда узнаешь про новые фичи/обновления языка, сопутствующие технологии и их аналоги?
Что такое гил и зачем он?
Приходилось ли использовать декораторы? Писал ли свои и зачем?
Зачем использовать генераторы и итераторы?
Есть ли в питоне интерфейсы (и для чего они в теории используются?)
Есть ли в питоне перегрузка методов?
Классы и множественное наследование - нужно ли это использовать и почему?
Используешь ли аннотацию типов?

Бек:
Какие основные хттп-методы знаешь? Какие когда используешь?
Что нельзя передавать через гет?
Что используют для защиты от xss?
Как концептуально работает авторизация? Чем она отличается от аутентификации?
Что такое орм и зачем она используется?
Что такое маршрутизатор?
Что такое шаблонизатор?
Что знаешь о паттерне MVC?
Что такое гуникорн?
Знаешь ли что-то про rest/json api/graph ql?
Что такое брокер сообщений?

Мимо-присутствую на технических собеседованиях питонистов
407 2262007
>>61851
3.10
Обо всех - нет, но матч паттерн в стиле раста помню
С телеграмов, с хабра, прочих ресурсов куда захожу
Хуйня из под коня, которая укоренилась и ряд разработчиков тебе даже защищают его. Глобальный лок, который останавливает выполнение потока и переводит процесс на другой. Нужен якобы для упрощения работы в многопоточном режиме.
Конечно. Например декоратор авторизации, декоратор форма, да дохуя каких.
Есть, но не в привычном виде. Например более-менее похожи на интерфейсы zope interface сук, всегда проигрывал с этой зопы. Для того же, для чего интерфейсы вообще нужны, определить сигнатуру метода класса и заставить реализовать метод.
Ну да, это магические методы, например __add__
Вопрос риторический. У множественного наследования есть проблема, например при ромбовидном наследовании могу побоычные эффекты произойти.
Да, но не тотально в каждом методе.

А есть еще и не основные? get - запрос ресурса, post - создание ресурса, put - модифимкация ресурса, delete- удаление, options - проверка на то, какие методы поддерживает апи
То, что не должно быть видно чужим людям: пароль, токен и т.д
csrf токен
Ой, вот тут лень думать. Аутентификация - вроде проверка личности, что ты это ты. Авторизация - получение прав в соответствии с твоей учеткой
"Удобная" вещь для работы с бд, запросами. Только практически всегда проигрывает в работе правильным сырым запросам.
Маршрутизатор - ? Че? Роутинг что-ли?
Шаблонизатор? Пиздец, вот на этот вопрос даже отвечать не хочу. Что за тупые определения спрашиваются?
Ничего
Прослойка между нджинксом и приложением. Сервак, принимающий запрос
Знаю, все, кроме graph ql - нормальный способ построения взаимодействия между беком и фронтом.
Приблуда, занимающаяся передачей сообщений по определенному формату между пользователями брокера.
408 2262013
>>62007
Да в целом неплохо.
409 2262015
>>61611

>внутреннее устройство питона


>гил


>лоулевел цпу баунд вычисления


>интерпроцесс коммуникация


>разница второго и третьего питона



>лру кэш из фанктулз


>лру кэш из фанктулз


>лру кэш из фанктулз



>идемпотентные методы


>принципы солид



Вот это можно смело выбросить. Из разряда "а ты знаешь это? Нет? Так, ясно. Да, это мы так просто спрашиваем, ты с этим у нас вряд ли столкнешься, но на результат собеса повлияет. Даже если и столкнешься, то, а не важно. Следующий вопрос"

На собесе как-то спрашивали о внутренней работе питона. Дошли до того, как реализован список питона на С. Я сказал, что список - константный указатель, а значение - смещение указателя, потом спросил, а нахуя это спрашиваете, мы там свои списки на сях будем писать? Мне сказали нет, но ведь это интереснее чем про json разговаривать.
410 2262018
>>62007

>post - создание ресурса


Анус ставишь?

>чужим людям


Че? Кто этих "чужих" определяет?

>csrf токен


Все что могешь?

>Ой, вот тут лень думать


Ты побазарь мне так на собесе, епт

>Только практически всегда проигрывает в работе правильным сырым запросам


Чем проигрывает? По очками что ли? Или решением судей?

>Че? Роутинг что-ли?


Что спросили, на то и отвечай

>Шаблонизатор? Пиздец, вот на этот вопрос даже отвечать не хочу. Что за тупые определения спрашиваются?


Это мы решаем, епт, что спросить. Самый умный дохера, я смотрю? Деревья на листочке повертеть захотел? Мы там с тебя быстро 3 шкуры спустим

>Ничего


Хоть честно. Тогда встречный вопрос: зачем ты вообще на Джанго пошел? Писал бы себе дальше скрипты для ИП Кабан Кабаныч

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


Ты эту "нормальность" определяешь?

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


По русскому что у тебя было? Фиг ли сам же термин в его определении используешь?
410 2262018
>>62007

>post - создание ресурса


Анус ставишь?

>чужим людям


Че? Кто этих "чужих" определяет?

>csrf токен


Все что могешь?

>Ой, вот тут лень думать


Ты побазарь мне так на собесе, епт

>Только практически всегда проигрывает в работе правильным сырым запросам


Чем проигрывает? По очками что ли? Или решением судей?

>Че? Роутинг что-ли?


Что спросили, на то и отвечай

>Шаблонизатор? Пиздец, вот на этот вопрос даже отвечать не хочу. Что за тупые определения спрашиваются?


Это мы решаем, епт, что спросить. Самый умный дохера, я смотрю? Деревья на листочке повертеть захотел? Мы там с тебя быстро 3 шкуры спустим

>Ничего


Хоть честно. Тогда встречный вопрос: зачем ты вообще на Джанго пошел? Писал бы себе дальше скрипты для ИП Кабан Кабаныч

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


Ты эту "нормальность" определяешь?

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


По русскому что у тебя было? Фиг ли сам же термин в его определении используешь?
411 2262019
>>62015
НА ИНТЕРВЬЮ СПРАШИВАЮТ СОСЁШЬ ЛИ ХУЙ И ДЕЛАЕШЬ ЛИ БОЧКУ
@
ОТВЕЧАЕШЬ ДА
@
ПОСЛЕ ИНТЕРВЬЮ НЕ ЖМУТ РУКУ
412 2262020
>>62018
Закудатал, не прошло и 5 минут.
413 2262024
>>62018

>Деревья на листочке повертеть захотел? Мы там с тебя быстро 3 шкуры спустим


Сразу нахуй послан. А потом пиздуешь дальше работать и перерабатывать дома
414 2262026
>>62024
Нахуй твоя жопа идет
Мы в Яндексе таких сразу в петушиный угол определяем
415 2262030
>>62026

>Мы в Яндексе


Так это и есть петушинный угол, о чем ты?
416 2262042
Вот у я наговнокодил какой-то класс. Например класс ОКНО, он имеет методы ЗАКРЫТЬ ОТКРЫТЬ В_ИСХОДНОЕ, работа с обьектом класса всегда должна начинатся с метода В_ИСХОДНОЕ, стоит ли прописать запуск этого метода сразу в __init__?
417 2262043
>>62007
Я бы тебя ещё попытал, но пока выглядишь сильным мидлом. 200к тебе цена. 250 если с доп вопросами справишься. Как сборщик мусора с гилом работает знаешь? Вообще какие проблемы от сборщика мусора появляются? Как ngnx с гуникорном общается? Я как гуникорн с приложением? Зачем он нужен? Почему нельзя без него? Как он обрабатывает входные запросы? Асинхронность на каком уровне добавляется? Сколько опыта? Другие языки знаешь? Коммерческий опыт с ними есть? Медиум с литкода за 10 минут решишь? Напишешь фабрику, которая принимает n и возвращает генератор, который всегда возвращает n самых больших чисел из тех, на которых его вызывали?
418 2262044
>>62042

>В_ИСХОДНОЕ


Подозреваю стейт у него меняет? Ставь этот начальный стейт явным образом в __init__
419 2262054
>>62043
Братан, я просто рандом, который мимо проходил и ответил на вопросы. Я не тот вкатун в джангу, который начал.
420 2262062
>>62054
Знаю. По ответам понятно, что не вкатун. Думал ты хотел потрениться на реальных вопросах с собесов раз начал отвечать. Ну ок.
421 2262074
>>62062
Ну вообще уже допы довольно жесткие.

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

Ну вообще без гуникорна можно, если напрямую cgi использовать через апач какой-нибудь. А если имеется не именно wsgi, в вообще зачем сервак, то он он взаимодействует по протоколу с приложением.

Фабрику могу написать, но не сейчас. Сейчас у меня работа
422 2262076
Зачем нужен wheel, почему просто нельзя использовать pip install?
423 2262095
>>62074

>Ну вообще уже допы довольно жесткие.


Это уже сеньёрские темы.

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

По гуникорн тоже не то. Если говоришь, что можно, то уточни явные недостатки. И про асинхронность не сказал. Как раз гуникорн и конторолирует количество воркеров и асинхронные ли они. Без него очень тяжко

В общем крепкий мидл. Не знаю твой опыт, но предлагаю искать оферы от 200к. Если у тебя сейчас меньше, и опыта всего пару лет, то есть смысл разослать резюме.
424 2262103
>>62095
На Джона из Пяндосии реально работать?
(если инглиш С1)
425 2262106
>>62095

>Не понял что ты ответил


Я про то, что выделяя память, после освобождения сборщиком она не возвращается сразу операционке, а остается во владении некоторое время.
Про внутренний подсчет ссылок и то, что цикличесике ссылки подсчет ссылок не умеет удалять, а только сборщик - знал, но что-то не подумал про это.

У меня 3 года на перле и 3 года на питоне. Зп 180, пока не в поиске.
426 2262110
>>62103
На апворке с красивым профилем скорее всего да. Можно попробовать окологалерные биржи типа топтала. Сам не эксперт. Никогда так не работал

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


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

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


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

>У меня 3 года на перле и 3 года на питоне. Зп 180, пока не в поиске.


Ты похоже сам знаешь как дальше развиваться. Но если потренишься и повезёт, то на 40-50к апнуть зепку реально.
427 2262170
Вообще настройки для проекта обычно хранят в отдельном файле (каком-нибудь .env), но почему бы не храниться настройки в отдельной таблице БД? Так по идее даже удобнее - можно менять настройки не останавливания приложение, просто нужен какой-то механизм который будет их обновлять при записях в базу. Как такое сделать?
428 2262176
>>62170
А где ты настройки доступа к бд с настройками будешь хранить?
Как ты будешь определять, что это среда - стейдж/локально/прод/тест?
429 2262291
Подскажите по фласку.
У меня есть модели Users, Perms и UsersPerms. Юзер понятно, Perm - список доступов в разделы, UserPerm - здесь связи отображаются.
Связь такая User <->UserPerm <-> Perm
Поле в юзере такое
user_perm = db.relationship('UsersPerms, backref='user')
Т.е. юзер может в несколько разделов иметь доступ
Как реализовать с помощью FlaskPrincipal, чтоб авторизация была по user_perm?
430 2262340
Почему питон такой кайфовый?
431 2262383
>>62340
Потому что он скриптовый и с динамической типизацией
16291088719850.png1,2 Мб, 728x909
432 2262400
Знатоки фласка, подскажите, пожалуйста.
Есть проект со структурой:
Project1
|_run.py
|_main.py
|_static
|_template

В main.py указано flask(__name__, static_folder = /root/folder1/Project1/static, template_folder=/root/folder1/Project1/template).
В index.html из template ссылки на static даны в виде:
<script src="{{ url_for('static', filename='jquery.min.js') }}"></script>

Но статика при загрузке приложения не подгружается почему-то.
В чем может быть проблема?
broad.jpg961 Кб, 1805x2700
433 2262403
Пришел с пхп, поскажите что почитать по классовой системе питона, синтаксис не интересен.
434 2262422
>>62403
Это что такую красоту генерирует? Можно ссыль?
435 2262424
Не давайте >>62422 сурс. Как можно писать код и не уметь в поиск информации
436 2262436
>>62424
Ты чего подорвался?
bb02f3dd63f48b79c3fe097fd94d00fd.mp419,7 Мб, mp4,
576x1024, 1:16
437 2262448
438 2262481
>>62448

>praktikum


>aleksanderbekin


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

Бля, ну неужели на десятом импорте у него не появилось мысли, что он, может быть, что-то неправильно в этой жизни делает
439 2262486
>>62481
ты че пёс он математик датасайентист
440 2262520
>>62481
Чем плох десяток импортов?
441 2262527
>>62520
Да ничем, напридумывают себе модульность какую-то, переиспользование кода, это делить его на функции, классы, хуйню, малафью. Просто заебенить цельный скрипт на 6к строк, где падает - заткнуть try-exceptами, да с elif-ами четверной вложенности, чтоб обои от стен отклеивались, ух бля.
442 2262597
пытаюсь записать звук через pyAudio, ошибка
[Errno -9999] Unanticipated host error
ОС: Windows 10, доступ к микрофону разрешён, но в списке приложение питона нет
443 2262896
Как в алхимии сделать, чтоб модель не из бд бралась, а из json? Для тестов надо, а делать отдельную бд под тест не хочется.
444 2263237
Как в джанге делать асинхронные методы
445 2263244
sync_to_async
446 2263318
НА https://pikabu.ru/story/kospley_ot_enji_night_7344561/author, мне не жалко.
Так а че почитать про классы в питоне ДОКУМЕНТАЦИЮ ЛЕНИВОЕ ГОВНО, и посоветуйте что либо для веб в питоне, подкасты, книги, каналы
447 2263381
>>48924 (OP)
Есть тут кто хорошо шарит в Celery?
После падения одной из задач в группе, мы завершаем ( .revoke(terminate=True) ) остальные таски, чтобы они не жрали лишние ресурсы хоста, однако некоторые из этих тасков завершать принудительно нельзя (даже если они зафейлились они все равно должны отработать до конца и записать в базу определенный результат). Как нам это все осуществить? Массово завершить задачи не проблема через обработчик ошибок, но как нам защитить определенные таски от revok-а?
448 2263402
>>63381
запилить таски которые ревокать низя в отдельную группу?
Снимок экрана от 2021-05-27 19-31-13.png329 Кб, 520x573
449 2263477
Начал фласк ковырять, там какие то uSWGI, точки сборки и всякая такая жесть. Где можно почитать что это такое? Потому как я читаю отдельные доки и оно вообще в кучу не собираеться и нет понятия как это работает.
450 2263505
>>63477
делоешь папочку на проект
вне этой папочки уровнем выше должен быть файл типа для создания объекта фласк (run.py, server.py или как хочешь назови) и импорта всего с этой папочки
его и запускаешь без задней мысли (python server.py) или с задней мыслью со всякими там uwsgi, gunicorn и что там только нет, но это обычно для продакшна уже
451 2263690
Почему в питоне нет let стейтмента как в лиспе? Что-то похожее в пропосолах с 2010ого года лежит. Но это фигня мне каждый день нужна. Вот например вчера. Есть класс. В нём проперти. Функция с декоратором проперти, которая каждый раз лезет к базе с спрашивает от туда значение. И пишу код, который должен только 1 раз это знаечение получить, а не при каждом обращении к проперти лесть в базу. Делал так

x = self.x
y = self.f(x) if x else None
result = self.g(x, y)
x_new = self.x
if x_new:
____raise XXX
return result

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

with self.x as x:
____y = x if x else self.f(x)
____result = self.g(x, y)
with self.x as x:
____if x:
________raise XXX
return result

Стало получше. Но теперь я не могу пользоваться этим проперти за пределом контекста и пришлось писать отдельный метод, который просто лукап делает
with self.x as x:
____return x

Получилось костыльно. А ведь хочется просто чтобы был оператор let, который как with as работал, но не с контекст менеджерами. Чтобы можно было 1 раз вызвать функцию, а потом с результатом работать не засоряя область видимости ненужными локальными переменными. Разве я много прошу?
452 2263807
>>63690
lru_cache, если сам не можешь осилить
453 2263811
>>63807
Во первых лру кэш на проперти это константа т.к. он не принимает аргументов. А во вторых. Не подходит он там. Значение может меняться и я должен явно указывать когда ожиданию изменения значения.
tenor.png141 Кб, 360x346
454 2263820
>>63690
Ты бы ещё нормальных лямбд попросил
455 2263829
>>63820
Я кстати в этом коде пытался тот эксепшен из лямбды бросать передавая его как аргумент в функции клинапа в одну из функций и вызывать внутри эту лямбду по кондишену. Как же тяжело без сахара. Неужели так сложно его принять?
456 2263833
Запускаю python manage.py migrate в Джанго-проекте, он мне начинает серить ошибками на настройки - в settings.py настройки подтягиваются из .env-файла, но блять почему-то при команде migrate этого не происходит, какого хуя?
457 2263839
>>63833
Ставлю анус что проект из докера запускается
458 2264111
Как на джанге решаются подобные ситуации: идёт специальный реквест, на сервере должен запуститься длительный внешний процесс, скажем, обработка шебм в ffmpegе.
Так вот, что нужно, чтобы моё джанго-приложение знало когда этот процесс завершится, а ещё лучше, чтоб могло видеть прогресс выполнения?

Я думал над таким вариантом: сделать асинхронный метод в приложении и каждые 5 сек смотреть прогресс из редиса, куда с другой стороны будет записывать этот прогресс другой сервис.
Есть ли что-то лучше? Слышал про селери, оно тут подойдёт?
459 2264115
>>64111
Да. Селари то что надо. Пост запрос должен возвращать код 202 и айди ревеста, джанго запускает селари таску и запоминает в базе соотвествие айди реквеста и таски. Потом клиент сам должен опрашивать эндпоинт с гет запросом и айди реквеста. На него повесь секундный тротлинг с возвратом 404 и проверку завершения селари таски. Когда завершиться возвращай 200 и результат. Асинхроность тут не нужна если у тебя всё остальное синхронное
460 2264116
>>64111
Кстати для опроса можешь лонгполинг использовать
461 2264117
>>64111
celery
Мы с Сбере им обмазались. Ощущения - атас. Малолетние дебилы конечно же будут писать про async, но детям невдомек, что существует ясная разница между IO и CPU
462 2264119
>>64116
Это для лошков каких-то. Мы с пацанами просто долбимся каждые 2 секунды на серв и все нах. Ты типо дохуя особенный, я гляжу?
463 2264120
>>64117
А селери разве не вместе с асинхронностью работает?

>>64115
>>64116
Найс, спасибо, буду разбираться
464 2264125
>>64120
Нет. Это отдельный процесс. Он 100 параллельный и менеджится ос. Так что даже гил на него не влияет.

Посоветуйте лучше что почитать чтобы разбираться в селари. На офсайте только доки и полтора гайда. Хочется знать подводные камни и бест практис.
465 2264127
>>64125
)))
Берешь любой проект с селери и изучаешь
Мякота начинается когда ты таски в пайплайны организуешь и ошибки пытаешься отлавливать
466 2264136
>>64127
Это недостаточно. Без коментов авторов не понять где они ловят проблему, как дэбажат, на какие трейдовы пошли. Я ишьсы и ченджлоги пытался читать на офф гите, но они там устаревают быстро, малоинформативны и не структурированы
467 2264546
>>55918
Работаю за 200к. До этого 1г питона был и хуева туча лет прогерства скриптования на всяком говне еще со средней школы.
Так что думаю довольно легко вкатиться, раз берут такое говно как я.
468 2264612
Есть вопрос с celery и yandex queue.
При отправке задачи через delay() он выполняет таск, а иногда не выполняет. При этом на сервере самого брокера никаких ошибок нет. Судя по логам он вообще не вызывает обработчик. Иногда вызывает, а иногда нет. На одних и тех же запросах.

С чем это может быть связано?
469 2264852
Как в vscodium отключить дополнение скобок и кавычек?
470 2265077
>>48924 (OP)
Может ли мне кто-нибудь помочь с изучением вопроса и как правильно задать вопрос гуглу? Стоит задача: есть два файла, один-пустой белый квадрат в формате .bmp, другой-rar архив. Нужно: заменить байты .bmp, начиная с 55 (0x36) на байты .rar архива полностью.
471 2265130
>>65077
bytearray смотри
472 2265200
Пытаюсь запустить Flask and Nginx
Настроил все по этой инструкции https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uswgi-and-nginx-on-ubuntu-18-04-ru
Nginx сработал один раз и вывел то что нужно.
Но потом я пытался изменить в файле myproject.py
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
return "<h1 style='color:blue'>Nginx can you hear me?</h1>"

if __name__ == "__main__":
app.run(host='0.0.0.0')
Изменил текст который должна выводить функция hello() и ngixn выводит только старое сообщение.
Я не могу понять, flask нужно какой то командой запускать?
473 2265239
>>65200
У тебя uwsgi сервит его, это уже готовый сетап. Можешь перезапустить через systemctl restart.
Для разработки достаточно запускать через python myproject.py и перезапускать при изменениях.
474 2265259
>>65239
Это получается если делаешь изменения, то прийдеться службу перезапускать? Не сильно удобно. Я понял если пишешь, запускаешь на девелоперском сервере и все.
475 2265262
>>65259
Я же говорю - это готовый сетап для прода.
Для разработки сервер не нужен вообще, у фласка есть свой встроенный, чего достаточно.
476 2265296
>>65262
Спасибо, бро
477 2265317
Запускать джангу в прод через python manage.py нормально или не очень? Я слабо разбираюсь в докере, но мне кажется что это немного странно.
478 2265320
>>65317
И да, стартует он командой прямо в докерфайле, сервится через nginx. Без докер-композ или чего-то такого.
Просто думаю может самому разобраться пока наша команда херню не сотворила
479 2265321
>>65320
asgi/wsgi
480 2265322
>>65321
В самом джанге который? Хорошо, а как быть с celery workers который запускается отдельно от джанги.
481 2265326
>>65322
Либо как сервис и обмазываешься ансибал ставля всё без докера прямо на вм. Или делай образы и рядом через композ. Но композ херня для этого. Системд лучше докеровского демона умеет фейлы хендлить и настраивается гибче. Вместо композа можно докерсвормом обмазаться, но это извращение. Есть ещё экзотика типа ансибал для докера. У нас это колла-ансибал. Там и имэджи и плэйбуки одинаково джинджей кастомизируются и всё вместе легко через пайплайн билдитися и деплоится. Но для вашего случая это возможно оверкил.
482 2265329
>>65326
Кстати у докера перфоманси сети падает если не хостовой неймспейс использовать. Поэтому если всётаки хочешь докер, то придётся без сетевого неймспейса делать и всякие костыли из-за этого городить. Ещё если лень с ансиблам разьираться, то ожно вручную на имедже всё настроить в запущенрй вмке, снять снапшот и использовать его как диплой имэдж продккта каждыф раз толтко один конфиг подбрасывая. Но это цде вариант не для пайплайна. Решение для бедных
483 2265330
Пишу небольшое по на питоне как одну из подзадач конкурсного проекта в данном этапе. Раньше никогда на лицензии используемых библиотек внимание не обращал, но сейчас возникла неуверенность в возможности использования некоторых либ. В частности, многие библиотеки подразумевают, например, что твой продукт использующий эти библиотеки будет иметь ту же лицензию, что и сама библиотека или что он тоже будет открытым. Очевидно, что мое по будет закрытым. Заказчик - одна из крупнейших компаний в рф. Могут ли они доебаться за лицензии библиотек?
рак мозга, не умею формулировать вопросы
484 2265332
>>65329
Я вообще не хочу докер, который они ставят по одному на каждый вм. Ладно, буду думать.
485 2265350
>>64612
В общем, там с fifo очередью какая-то ебанина происходит. Чем меньше таймаут видимости, тем быстрее выполняются задачи. При этом таск куда-то пропадает нахуй отовсюду, но он как бы есть, да. Таск выполнился? Жди пока таймаут полностью пройдёт и только потом вытаскивай следующий. А может и не жди.
Ебанина кака-то. Либо я тупой, либо лыжи не едут.
486 2265381
Нуфаг итт.
При выводе текста типа ('Тест', var1,'.')
То получается, что в выводе имеется пробел (который мне не нужен) между строкой и переменной и выглядит это 'Текст 5 .', а не "Тест5.".
А при использовании знака "плюс" вместо запятой выдает ошибку.

Как это фиксить? Указывать тип переменной строку, чтоб она не считалась числом по дефолду, чтоб нормально работал вывод с плюсом?
487 2265392
>>65381
Ну да, а как ты иначе сделаешь? Питон строг к типам.
488 2265401
>>65381
sep='' или через ф-строки.
489 2265403
>>65381
То, как ты формулируешь задачу - долбоебизм костыли, чтобы заставить функцию принт работать так, как она не должна работать.
То, что ты на самом деле хочешь сделать, называется форматирование строки. Дальше в гугл.
490 2265411
>>65392
>>65401
>>65403
Спасибо за ответы.

Нашел решение, можно через {0} .format() делать, тогда вся моя пунктуация сохранится такой, какой я ее в строке указал и переменные подставятся, какие я укажу в функции.
491 2265420
>>65411
ф-строки лучше. Но я просто в str() оборачиваю, ф-строки для задротов, плюсы для работяг.
492 2265472
Подскажите пожалуйста либу для сбора инфы о сайте, какой там цмс что вообще стоит. Иногда увидишь сайт и хочется узнать на чем и как он сделан.
493 2265491
https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.rc.html
Я правильно понял, что это более современный вариант plt.rcParams['...']?
494 2265509
Сап, аноны. Не могу реализовать функции hit_time и hit_distance, разное перепробовал, проверки не проходят. Может кто-то помочь советом? Не отправлять на какие-то ресурсы учиться, а пояснить, где я ошибся

https://pastebin.com/u0A5jUz2
495 2265691
496 2266034
В асинкопитоне есть приоритизация задач эвент лупа из коробки? Или хотя бы либа, которая упрощает это. Есть группа тасок одна из которых должна выполняться только когда остальные ждут/завершены. Пока сделал костыль через PriorityQueue, но он мне не нравится.
497 2266239
Ну так что, никто не работал с fifo очередями? Сколько воркеров надо и тд

И ещё, можно ли динамически создавать очереди в celery? Допустим, для каждого залогиненого пользователя делать свою очередь.
498 2266240
>>66239
Брокер aws sqs
499 2266255
>>66239
Для чего спрашиваю. На сервер призодит куча сообщений от различных прльзователей. Эти сообщения отправляются через post на другой ресурс.
Допустим, первое сообщение создаёт запись на другом ресурсе, последующие - добавляют данные к нему. Если первое сообщение пришло одновременно со вторым, то обрабатываются они одновременно, соответственно, создаются две записи, чего быть не должно.
Потому возникла необходимость создания очередей, для их последовательной обработки. С другой стороны, это сильно уменьшит пропускную способность сервера.

Как быть в таком случае? У кого-нибудь был опыт решения подобных задач? Неуж-то никак нельзя обойтись без снижения производительности?
500 2266258
анончики, можете с простой задачей помочь?
нихуя не могу сообразить

Есть код, который переводит аудиофайл в матрицу:
mono_sound_to_cut = mono_sound[:1990000]

def get_parts(sound, size_to_cut=1000):
number_of_parts = int(len(sound)/size_to_cut)
return sound[:number_of_parts*size_to_cut
].reshape(number_of_parts, size_to_cut)

parts_size = 1000
mono_sound_matrix = get_parts(mono_sound_to_cut, size_to_cut = parts_size)

хочу написать функцию по переводу матрицы, которая получилась, обратно в аудио
501 2266268
>>66255
И ещё, насколько будет хорошей идеей использовать в качестве брокера собственную бд? Везде пишут что это не очень, при большом количестве запросов бд будет перегружена и тд. Но тем не менее.
502 2266372
>>50067
Советую этот для начала
https://stepik.org/course/100707/info
503 2266424
Есть класс А, и класс Б. Ещё есть класс С(А,Б). Как сделать так чтоб при создании С, создавались и экземпляры А и Б? Например, А создаётся через функцию get_a(). Чтоб в методах класса С можно было обращаться к данным А через self.
504 2266425
>>66424
Класс А создаётся только через get_a()
505 2266432
Сап, студент на связи, поясните дебилу, пожалуйста, насколько сложно/легко сделать хрень ( нейросетью стыдно называть), которая будет определять пол лица по чёткой фотографии?
Что вообще можно сделать интересного на Питоне к курсовой?
506 2266453
>>66432
Не выебывайся и делай УПРАВЛЕНИЕ СКЛАДОМ на фласке/жанге
507 2266473
>>66453

> УПРАВЛЕНИЕ СКЛАДОМ на фласке/жанге


https://sokoban.info/
508 2266644
Django не загружает media файлы (картинки) из БД.
Я уже все понастраивал, перешерстил гугл.
В чем может быть проблема?
509 2266683
>>66644
В подходе. Храни картинку в виде байтов в переменной
510 2266720
>>66683
в целом я понял твой замысел, но как это реализовать?
511 2266727
>>66720
а я думаю это стеб

мимопроходил
512 2266735
>>66727
да я понял Pillow, но
так то эти файлы должны и без того из базы данных грузиться
513 2266750
>>66720
Читай картинку по частям, по 1024 байт, например. В бд сделай array и appendай туда всё. Можешь пробовать сделать через conqurence, чтоб быстрей.
Собрать примерно так же, по частям.
514 2266765
>>66644
Не ври, тв даже не искал. Первая ссылка. imagefield

https://stackoverflow.com/questions/60926603/django-how-to-display-images-from-database-in-template
image.png267 Кб, 868x911
515 2266835
Я переписал пост, так как из-за обилия звездочек и жирного шрифта текст утратил смысл.

Доброго времени. Нуфаг итт в треде.
На счет параметров функций вопрос у меня.

Правильно ли я понимаю, что в параметр-кортеж звездочки не ставлю, иначе текст станет жирным и хер поймешь, что сказать хотел падают одиночные значения после объявленных переменных (если есть), а уже в параметр-словарь падают данные вида ключ:значение?

И получается, что сперва выводятся объявленные переменные (то есть, a=10) и ей подобные, затем кортеж, включая строки, а не только числа, а уже потом словарь, с данными в виде ключ:значение?

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

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

Или я вообще нихуя не понял?
516 2266857
>>66835
Неправильно думаешь
def func(a, b, c, args, kwargs):
...

params_dict = {a:1, b:2, c:3}
params_list = [1, 2, 3]

func(
params_dict)
func (
params_array)

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

Почитай что значат args, kwargs, в частности что делают и *
517 2266863
>>66857
func(<двезвездочки>params_dict)
func(<одна звёздочка>params_list)
518 2266877
>>66857
Спасибо.
Прочту про args, kwargs.
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 30 июля 2022 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски