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

Ответить в тред Ответить в тред
Check this out!
Питон тред №95 /python/ Аноним 28/07/20 Втр 21:53:44 17626231
15948219196510.png 30Кб, 768x768
768x768
1328116117terka[...].jpg 87Кб, 1280x853
1280x853
photo-4-900x500.jpeg 33Кб, 900x500
900x500
python.jpg 262Кб, 1600x1068
1600x1068
Тред, посвящённый языку программирования Питон, #95

Предыдущий: >>1752122 (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: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
Аноним 28/07/20 Втр 22:04:58 17626302
пасоны, че за лямба?
Аноним 28/07/20 Втр 22:08:26 17626323
Подскажите плз, я чет не допираю, как можно отправить словарь в телеграм боте одним сообщением? Юзаю телебот. Я могу типа для каждого элемента в цикле вызывать отправку сообщения, но тогда будет не одно сообщение.
Аноним 28/07/20 Втр 22:10:55 17626344
Аноним 28/07/20 Втр 22:23:58 17626395
>>1762630
У рыбы между клоакой и заднепроходным отверстием.
Аноним 28/07/20 Втр 22:26:21 17626426
>>1762632
А, ну я наверное могу просто в цикле сначала сделать строку из элементов, а потом вывести её
Аноним 28/07/20 Втр 22:55:25 17626637
>>1762630
Бессерверные вычисления в амазон веб сервисес
Аноним 28/07/20 Втр 22:56:03 17626648
>>1762642
блять, тут реально погромисты такого уровня обитают?
Аноним 28/07/20 Втр 22:57:03 17626659
>>1762664
Да я не погромист, изучаю просто. Не уверен, изучу ли когда-нибудь.
Аноним 28/07/20 Втр 23:04:50 176267810
>>1762664
Не всегда. Порой захаживает Люд вроде меня. Таких черти и шныри кличут Хозяином, а пацаны - Папой
Аноним 28/07/20 Втр 23:07:24 176268111
>>1762665
>Не уверен, изучу ли когда-нибудь.
Да хули, сам какой-то вариант придумал уже хорошо.
Аноним 28/07/20 Втр 23:10:51 176268612
>>1762623 (OP)
Что с tornado? На моей галере половина продукта написано на нем, придется тащить
Каковы перспективы tornado в 2020, приятно ли на нем писать и что в нем с асинхронностью?..
Аноним 28/07/20 Втр 23:26:25 176269413
1uprOURnw5wj-0K[...].png 461Кб, 2328x1342
2328x1342
>>1762686
Ну хуй знает... Поддерживай легаси и не бубни.
Аноним 28/07/20 Втр 23:31:14 176269814
>>1762694
Сурс?
торнадо на uvloop вроде не такое уж и говно
Аноним 29/07/20 Срд 00:59:17 176275515
29/07/20 Срд 01:33:11 176279116
посоветуйте гайд по джанго. мозилла норм?
Аноним 29/07/20 Срд 04:34:35 176284917
image.png 3Кб, 200x59
200x59
Аноним 29/07/20 Срд 04:43:20 176285118
image.png 2Кб, 177x48
177x48
Аноним 29/07/20 Срд 08:12:55 176289919
>>1762755
>medium
>ahmed

обоссывали уже вроде этого ахмеда
Аноним 29/07/20 Срд 08:30:30 176290620
>>1762899
Ну сам разработчик FastAPI не любит писькомерство. По сути любой бенч это тот ещё черрипикинг.
То что aiohttp без говнокода даёт на клык это факт. То что жанговская ОРМ самая продвинутая тоже факт. То что на Tornado уже меньше и меньше пишут тоже факт.
Аноним 29/07/20 Срд 11:06:16 176296621
Аноним 29/07/20 Срд 11:12:14 176297022
>>1762966
Дай обниму. Хватит кормить уже инфоцыган.
Документация, SO, другие тематические форумы или блоги. Ощущение, что инфоцыгане в продакшен нихуя не выводили. По сути это как аспиранты на кафедрах. Что-то выучили, как-то поняли и стали преподавать
Аноним 29/07/20 Срд 13:10:21 176309223
>>1762849
>>1762851
Ну мне надо было парами, типа как в самом словаре. Ну я уже сделал типа [print(i, dict) for i in dict]
Аноним 29/07/20 Срд 13:16:55 176310124
>>1762906
Fastapi удобнее в сотню раз из-за pydantic и зависимостей, но зато в aiohttp есть клиент и тестовый клиент. С последним ещё можно как-то сторонней протухшей либой решить проблему в fastapi, а вот что там из сторонних асинхронных клиентов есть сейчас?
Аноним 29/07/20 Срд 13:30:08 176311825
photo2019-11-16[...].jpg 102Кб, 1050x1266
1050x1266
>>1762970
это потому что случайно доки по django оказались хороши.

в общем случае, все очень хуево.
Аноним 29/07/20 Срд 13:59:56 176317026
Аноним 29/07/20 Срд 14:51:20 176325727
Выше картинка была. Это получается, что торнадо, про который я столько наслышен, держит только 11к запросов в секунду? Нам препод говорил, что нода 1 млн держит в секунду.
Аноним 29/07/20 Срд 15:30:05 176330028
>>1763257
Надо смотреть методику и результат в тех же условиях.
Аноним 29/07/20 Срд 16:15:21 176338029
Аноним 29/07/20 Срд 16:16:42 176338230
>>1763257
Держит то держит, а БД когда упадет без репликации? И это сама держит или с прокси? Яндекс Танк в помощь короче
Аноним 29/07/20 Срд 16:18:13 176338831
>>1762970
А я вот аспирант. Сижу в ней потому что мне дают халявные 8к стипухи, проездной и общагу
Параллельно работаю фуллстек-макакой. Мне норм
Аноним 29/07/20 Срд 16:35:34 176342032
image.png 84Кб, 384x246
384x246
Аноним 29/07/20 Срд 18:31:01 176356333
Так блин, что-то я не вдуплил, как асинхронка тащит
Вот я отправляю некий http запрос и пока он "летит" туда-обратно мне надо еще выполнить какие-то действия, код вроде этого:

result = await send_request()
make_calculations()
result.process()

попросту же "встанет" на моменте с await, event loop будет искать другие задачи, пока результат с await не выполнится, но тем не менее, пока send_request не вернет что-то, выполнение кода дальше этой строчки не пойдет
Я упустил что-то?..
Аноним 29/07/20 Срд 18:45:46 176357934
>>1763563
await нужен как раз для последовательного выполнения, чтобы не ебаться с коллбеками.
Аноним 29/07/20 Срд 19:29:18 176363335
>>1763563
Так оно нужно для io задач. Представь, что у тебя таких запросов тысяча, и они независимы друг от друга. Код будет ждать и дальше await не пойдёт, но у тебя там ждут выполнения ещё 999 таких же, и пока ты ждёшь этот, ты можешь другие отправить. Пока отправляешь другие, прилетит ответ на этот и продолжишь его выполнять. А если ты хочешь ещё что-то считать, пока запрос выполняется, то подход надо менять. Есть future_requests, там запросы вроде в отдельном треде дёргаются, главное только не охуеть там коллбеки писать, если они нужны. И вроде как при системных вызовах снимается блокировка интерпретатора, так что ты сможешь дальше выполнять код, а потом по мере необходимости забрать ответ на свой запрос. В принципе, в asyncio можно аналогичные штуки проворачивать, но нахрен он нужен, если у тебя упор на вычисления, а не на ввод-вывод?
Аноним 29/07/20 Срд 20:24:28 176368036
вникаю в async, нужно создать десяток соединений, отправить что-то, получить ответ, оставить корутину с соединением активной, делать свои дела дальше. ответы надо же собрать и обработать в том месте, где они были запущенны.

что-то не соображу, как это сделать. если спавнить таски через gather, результаты же придут только когда корутина завершится. как быть?
Аноним 29/07/20 Срд 20:39:22 176369237
>>1763420
да там и всё ебало покорёжено. только на кладбище этого пидора.
Аноним 29/07/20 Срд 20:59:06 176369838
>>1763563
promise = send_request()
make_calculations()
result = await promise
result.process()

Наверное должно сработать
Аноним 29/07/20 Срд 22:22:24 176374839
>>1763563
>Так блин, что-то я не вдуплил, как асинхронка тащит
Ивент луп скачет между корутинами, поэтому они все выполняются параллельно. Считай как потоки на одноядерной машине если утрировать.
>event loop будет искать другие задачи, пока результат с await не выполнится
Типа того. Await "блокирует" только текущую корутину.
>send_request не вернет что-то, выполнение кода дальше этой строчки не пойдет
В этой текущей корутине естественно нет, но это нормально.

make_calculations()
Тут серьезная ошибка. Ты не имеешь права в асинхронном приложение использовать нечто блокирующее, так как это заблокирует ивент луп и все корутины "встанут". Ты должен через редис/rabbitQM отправить задачу процессу воркеру на выполнение каких-то блокирующих вычислений. В самом асинхронном приложение только I/O. Зразумив?
Аноним 29/07/20 Срд 22:32:22 176375740
>>1763748
>make_calculations()
ебануть её в новый тред и подождать пока закончится.
Аноним 29/07/20 Срд 22:36:13 176375941
>>1763748
>Ты не имеешь права в асинхронном приложение использовать нечто блокирующее
кек
ТЫСКОЗАЛ?

p.s. создается новый тред или пул тредов, декораторы вроде sync_to_async так и делают, но вообще ничего не запрещает вызывать синхронщину внутри асинхронщины
Аноним 29/07/20 Срд 23:07:19 176377942
>>1763748

И ты идёшь нахуй.
awaitable loop.run_in_executor(executor, func, *args)¶
Arrange for func to be called in the specified executor.

The executor argument should be an concurrent.futures.Executor instance. The default executor is used if executor is None.
Стандартно это thread. Засовывает туда блокирующую операцию и погнали.
Аноним 29/07/20 Срд 23:09:28 176378243
>>1763759
Да, но весь смысл теряется. Пока что корутины в питоне уебищные, green events в го мне показались как-то интуитивнее и понятнее
Аноним 29/07/20 Срд 23:20:35 176379044
Аноним 29/07/20 Срд 23:32:59 176380145
Аноним 29/07/20 Срд 23:34:36 176380346
>>1763680
сам задал, сам отвечу. помазался фьючерами, хуй его знает, правильно ли всё сделал. петяны, чекайте, вот простой пример.

https://pastebin.com/qBBDw7CR

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

Аноним 29/07/20 Срд 23:35:45 176380447
>>1763790
В 3.9 обещали завести нечто адекватное и отказ от предопределения asyncio.get_event_loop().
Если в asyncio.run() добавят методы для перехвата signal и штатного завершения процедур или их отмены если это например цикл без конца будет заебок.
Пока предлагают вот это
coroutine asyncio.to_thread(func, /, args, kwargs)¶
Asynchronously run function func in a separate thread.

Any
args and kwargs supplied for this function are directly passed to func. Also, the current contextvars.Context is propogated, allowing context variables from the event loop thread to be accessed in the separate thread.

Return a coroutine that can be awaited to get the eventual result of func.
Аноним 29/07/20 Срд 23:36:41 176380648
>>1763801
>Представьте, вы разрабатываете CLI-инструмент для извлечения размера веб-страницы и хотите поддерживать и синхронный, и асинхронный способы его работы
Спс, поорал
Аноним 29/07/20 Срд 23:37:15 176380749
>>1763801
ололо, там какой то пидор два месяца переводил с английского блогпост другого пидора, и выдаёт перевод на свою статью? хуябра как обычно.
Аноним 29/07/20 Срд 23:38:38 176380850
>>1763804
> coroutine asyncio.to_thread(func, /, args, kwargs)
чем это лучше тред экзекьютера?
Аноним 29/07/20 Срд 23:44:09 176381551
2020-07-2923-42[...].jpg 256Кб, 1172x572
1172x572
Питон может быть альтернативой джавы скрипта? С веб не связывался, в основном работал с vb и C++, а тут надо потыкать веб программирование.

Пытался осилить JS, но каждую секунду мне пригорало. Не знаю по какой причине, но я его блять ненавижу. Разве пикрилейтед может прочесть ЧЕЛОВЕК? В общем, поясните за веб и пригодность питона для этого.
Аноним 29/07/20 Срд 23:46:39 176381752
>>1763815
Это разве не обфусцированный код?
Аноним 29/07/20 Срд 23:48:32 176381953
Аноним 29/07/20 Срд 23:48:51 176382054
>>1763815
>>1763817
Это минифицированный код, обрабатывается перед деплоем. Человек и не должен читать, лол.
Аноним 29/07/20 Срд 23:48:51 176382155
>>1763759
>>1763779
Ну шкальники городят треды в асинхронном приложении, смешивая подходы. Профессиональные разработчики отдают задачу в RabbitQM. Пшли вон отсюда.
Аноним 29/07/20 Срд 23:49:40 176382256
>>1763815
ну если бы ты си или перл застал, то так бы не верещал, щегол.
Аноним 29/07/20 Срд 23:50:32 176382357
>>1763821
Шта? Ты ещё RabbitMQ на rapsberry запусти, пёс. Совсем уже жангодебилы в край охуели.
Аноним 29/07/20 Срд 23:52:03 176382458
>>1763808
Да хуй его знает. Может оптимизируют на уровне C. Пока все наработки, не заметил конкретики при описании changelog. Да все ещё письмами обмениваются, решают что в какую версию вносить
Аноним 29/07/20 Срд 23:52:59 176382559
>>1763821
да, потом у них гостевая книга работает в шести докер контейнерах под кубернетисом в облаке на микросервисах, медленно.
Аноним 29/07/20 Срд 23:53:53 176382660
>>1763815
Нет. Ты путаешь фронтэнд и бэкэнд. Питон/года/го для бэка, адекватный Vue для фронтэнда. Вот и вся кухня.
Аноним 29/07/20 Срд 23:54:41 176382761
>>1763815
>веб
На фронте альтернатив жс просто нету. Или ты в танке?
На бэке юзается. Топовые асинхронные фреймворки вроде FastAPI хуярят на уровне с Нодой. Тут Господа сейчас как раз и базарят за асинхронщину
Аноним 30/07/20 Чтв 00:01:18 176383262
>>1763817
Хуй знает. Короче это код, который должен создавать иллюзию 3д т.е. пользователь "вращает" объект мышкой, а на самом деле это скрипт выводит обычные картинки в определенной последовательности.

Как здесь
https://www.root-solutions.co.uk/product/keyshot-web/
если проскроллить вниз, там есть мотоцикл — его можно покрутить мышкой. В общем, это очень дешевый способ показать 3д с красивым графоном, в отличии от web gl.

В общем делает это все из коробки одна прога для визуализации KeyShot, но мне по многим причинам она неудобна и я написал свою, кроме части, которая реализована на JS.

С этим скриптом работает всё норм, но я хотел во избежание правовых претензий сделать свой скрипт и увидел это нечитабельное говно. Пытался осилить JS, но понять этот текст я не в силах.
Аноним 30/07/20 Чтв 00:03:32 176383463
Аноним 30/07/20 Чтв 00:04:09 176383664
>>1763820
А это можно вернуть в удобоваримый вид?
Аноним 30/07/20 Чтв 00:06:28 176383765
>>1763834
Да не в этом дело. Спрашивал-то я про питон, но ушло в джаву.
В общем, ответ мне уже дали.
Аноним 30/07/20 Чтв 00:14:02 176384166
>>1763836
UPD в JS треде уже ответили
Аноним 30/07/20 Чтв 00:18:02 176384367
Дарова двачане. Собираюсь оформлять вкат в ml. Что скажете по такому набору книжонок.
Лутц 1-2;
Николенко "Глубокое обучение" или Франсуа Шолле "Глубокое обучение"( Еще не решил);
Ну и параллельно матешу подтянуть, хотя итак +- знаю
Что скажете, бояре?
Аноним 30/07/20 Чтв 00:19:49 176384568
>>1763843
Ну и вот лутц тоже под вопросом. Вдруг лучше Byte Of Python, хотя я его поскролил и там вроде совсем база которую я знаю уже
Аноним 30/07/20 Чтв 05:26:17 176392269
>>1763845
Тогда зачем тебе лутц?
Вообще, ты дрочи МЛ, а не пистон, ибо полезнее будет.
Аноним 30/07/20 Чтв 08:21:04 176395170
изображение.png 135Кб, 186x305
186x305
изображение.png 174Кб, 302x450
302x450
изображение.png 396Кб, 487x700
487x700
Аноним 30/07/20 Чтв 09:28:11 176397471
>>1763951
Демидович и Численные методы были в печатном виде, но сдуру отдал племяннице. А теперь срочно надо кашу в голове структурировать, ух бомбит теперь.
мимопроходил
Аноним 30/07/20 Чтв 10:03:37 176399472
Подскажите что нибудь по типу питонтютор, хотел там попытать счастья, а проект мертв. Желательно на русском, пасиба
Аноним 30/07/20 Чтв 10:13:21 176399773
Аноним 30/07/20 Чтв 10:17:20 176400174
>>1763997
спасибо,мил человек.
Шапка у вас душком тянет,согласен
Аноним 30/07/20 Чтв 10:21:28 176400975
Аноним 30/07/20 Чтв 13:10:53 176420276
>>1763951
Сомневаюсь, что "численные методы" вообще имеют какое-то отношение к теме, они совсем про другое. Да и матанализ Демидовича.
Аноним 30/07/20 Чтв 13:17:11 176421277
Узнал тут про aiopg - асинхронный движок для postgresql
С алхимией будет работать? Я че-то думал что алхимия синхронная сама по себе...
Аноним 30/07/20 Чтв 14:07:34 176428078
Есть книги по джанге 3 хорошие?
Аноним 30/07/20 Чтв 14:15:55 176430079
>>1764280
В 3ке почти не было невероятно крупных изменений кроме начала ввода асинхронщины, читай по 2ке
Аноним 30/07/20 Чтв 14:18:16 176430480
>>1764300
Понял, спасибо. А там есть советы какие?
Аноним 30/07/20 Чтв 14:20:51 176431081
>>1764304
А то никак книгу себе выбрать не могу...
Аноним 30/07/20 Чтв 14:25:53 176431982
>>1764304
Документация Джанго
Аноним 30/07/20 Чтв 14:34:57 176433183
Двачеры дайте один простой ответ на один простой вопрос.
Лутц или укус путона?
Аноним 30/07/20 Чтв 14:41:26 176434184
>>1763563
Плюсую. Вот есть у меня io-вызовы вроде:
await asyncio.sleep(4)
await asyncio.sleep(3)
await asyncio.sleep(2)
await asyncio.sleep(1)
Я хочу чтоб все они пошли выполняться вместе и чтобы все результаты были готовы через 4 секунды, а вот в этом куске кода результаты вернутся через 4+3+2+1 = 9 секунд, что не есть гуд
Аноним 30/07/20 Чтв 14:43:11 176434485
>>1764331
Укус лутца.
Ты сравниваешь книгу на 1600 страниц по всему и туалетную брошурку для ньюфага.
Аноним 30/07/20 Чтв 14:51:07 176435386
>>1764341
Ты их собираешь и запускаешь одновременно, учитывая что с gather() ты будешь авейтить до момента, пока выполнится самая медленная корутина
Аноним 30/07/20 Чтв 16:19:41 176439487
Сап, аноны. По образованию прохраммист, по факту студенческие годы пинал хуи и получил минимум знаний. Сейчас работаю аналитиком 1с, хочу выкатится из этого дерьма. Есть вариант перекатится на питон, чем и хочу воспользоватся. Прошел бесплатный курс от яндекс практикума (20 часов), почитал немного книжку "Как устроен питон" и высрал простенькую реализацию игры "Быки и коровы" без логики компьютера, т.е. только попытки игрока угадать число, сгенерированное компом. Пока нет понимания, как писать хорошо, поэтому хотелось бы пресечь говнокод. Если кто-то может указать на ошибки, как писать не надо, как было бы лучше - был бы очень благодарен. Код тут - https://pastebin.com/gqp3ikpM
Заметил, что многие пишут цикл с условием в 1 строку - это нормально? Не снижает ли это читаемость кода? Так же, реквестирую книжку, где было бы все максимально подробно расписано. Т.е. не просто: вот есть переменная, ты ей присваиваешь значение, все круто. А подробно, что происходит, когда ты присваиваешь значение переменной ( про объекты, счетчик ссылок, когда это все удаляется, перезапись) и прочее. В "Как устроен питон" хорошо написано, но там только основы.
Аноним 30/07/20 Чтв 17:20:06 176444788
Подскажите, что почитать по генераторам? Никак не вкурю send метод, как с ним работать, полного нормального понимания оператора yield. Помогите.
Аноним 30/07/20 Чтв 17:35:35 176447289
>>1764447
генератор - это просто вызов return с сохранением стека . Сильно помог?
Аноним 30/07/20 Чтв 17:49:29 176447890
>>1764472
Об этом я догадывался. Ебучий пример из лутца не могу выполнить, он работает не так как в книжке.

def gen():
for i in range(10):
x = yield i
print(x)

Дальше он делает вот что:
g = gen()
next(g)
>> 0
g.send(10)
>> 10
>> 1

Это в примере, а у меня сенд нихуя не робит, не понимаю, как это понять сукаааааа. Помоги, если можешь
Аноним 30/07/20 Чтв 17:58:09 176448391
>>1764478
>next(g)
>>> 0
Запускаешь генератор, yield отдает тебе и и ожидает что ты ему что-то передашь
>g.send(10)
>>> 10
>>> 1
Закидываешь в генератор 10, х становится 10, выводится, цикл уходит на 2й круг и возвращает тебе 1 и т.д.
Аноним 30/07/20 Чтв 18:09:08 176449292
tt.png 17Кб, 296x624
296x624
Аноним 30/07/20 Чтв 18:15:41 176449493
>>1764492
А теперь внимательно посмотри на свой код и подумай, что могло пойти не так
Аноним 30/07/20 Чтв 18:18:46 176449694
>>1764447
pixamp.com/posts/generatory-v-python/
хз мне понятнее стало
Аноним 30/07/20 Чтв 18:20:09 176449895
>>1764494
Блядь, чувак, ну я в дебаггере посмотрел, там по шагам, x становится равным 10 а потом сразу срабатывает yield i и x принимает следующее значение. Этот пример почти дословно из книжки, и там у лутца другой вывод. Ты лучше объясни, как работает генератор. Вот я вызываю next(g) первый раз, функция отрабатывает до первого yield значения, возвращает его, и замирает на следующей строчке кода в ожидании следующего next. В книге, send возвращает значение которое ему передали, плюс сразу следующее из рэнджа. А у меня нихуя не так. Я блядь заебался, уже 2 часа бьюсь об эту хуйню и никак не могу понять.
Аноним 30/07/20 Чтв 18:22:33 176449996
>>1764496
Спасибо, сейчас взгляну.
Аноним 30/07/20 Чтв 18:23:45 176450097
Нужно мониторить папку и при появлении нового файла копировать в другую папку, через че лучше делать? Ос? Вачдог?
Аноним 30/07/20 Чтв 18:24:56 176450298
>>1764498
> В книге, send возвращает значение которое ему передали, плюс сразу следующее из рэнджа.
Возвращает только yield, send отправляет 10 в генератор но ты его не выводишь учись смотреть на свой код и искать ошибки в отступах
Аноним 30/07/20 Чтв 18:26:07 176450399
Обращаюсь к одной кнопке таким образом: driver.find_elements(By.XPATH, '//button')[4]
Как мне к ней обратиться в expected_conditions?
EC.presence_of_elements_located(By.XPATH, '//button')[4]
^вот так вроде не работает
Аноним 30/07/20 Чтв 18:34:59 1764506100
tt.png 21Кб, 498x225
498x225
ttt.png 8Кб, 223x376
223x376
>>1764502
Чувак, я в отступы могу. У меня вопрос возник, по этому поводу.

Смекаешь, к чему я? В книжке хуйня какая-то, либо я в глаза долблюсь.
Аноним 30/07/20 Чтв 18:42:15 1764509101
>>1764506
Если ты можешь в отступы то поставь уже ебучий отступ перед принтом, как ты блядь выводить 10 собрался, если у тебя принт вне цикла?
Аноним 30/07/20 Чтв 18:48:20 1764513102
Блядь, я еблан, прости, ну сука вишь там написано так было, сразу не догадался. впизду все равно не понимаю
Аноним 30/07/20 Чтв 18:48:51 1764514103
file.png 27Кб, 616x296
616x296
>>1764506
Энджой йор пиривот.
Аноним 30/07/20 Чтв 18:53:04 1764515104
Люди, которые ставили на сервер что-либо, скажите, как происходит загрузка модулей, например нужен для программы модуль работы с фото, его в папку с проектом засовывают? Или качают на сервере специально пакет, если так, то зачем нужна папка bin и как конкретно в нее устанавливать модули, например, если я уже работаю в виртуальном пространстве
Аноним 30/07/20 Чтв 18:55:03 1764518105
Вопрос по базам данных:
Я делаю приложение на Flask - что-то вроде браузерного просмотрщика медиафайлов. Каталоги, в которых лежат файлы я храню в БД, то есть это одна таблица.
Каталогам можно назначать типы и категории. То есть это как минимум еще 2 таблицы.
Можно назначить любой тип (один), а категорию - только из списка категорий для выбранного типа.
И я не могу понять, как настроить связи и ограничения. Можно конечно не ограничивать поля в БД и проверять уже это в коде напрямую, что категория которую мы назначаем находится в допустимом списке, но хочется поканоничнее это реализовать.
Аноним 30/07/20 Чтв 18:55:49 1764519106
Аноним 30/07/20 Чтв 19:03:13 1764524107
>>1764513
>все равно не понимаю
Проведи аналогию с каким-нибудь конвейером или еще какой-то хуйней, принцип выше уже писал
Аноним 30/07/20 Чтв 19:03:41 1764525108
Пиздец у меня багет. Ходил на собез на джуна. Ответил на все вопросы по SQL, на сложность алгоритмов, пояснил про питухон. Типы данных, итераторы/генераторы расписал через iter и next, всё как надо; декорирование функций, ООП, логика выполнения кода в ide, как проходит поиск по словарям, хэш функции и прочая хуйня. Ну вообще ответил на всё, что меня спрашивали. Сегодня перезванивают и говорят, мол, НУ МЫ ВООБЩЕТ НЕ ИЩЕМ ДЖУНА ЧЕСТНЫГОВЫРЯ) ДАВАЙ В СЕНТЯБРЕ ОБКАШЛЯЕМ ЕЩЁ РАЗОК ВОПРОСК. Охуенно, спасибо блять.
Аноним 30/07/20 Чтв 19:06:18 1764526109
>>1764525
Так а в чем проблема? Если ты с каждого собеса будешь так рваться, тебя не хватит надолго
Аноним 30/07/20 Чтв 19:09:05 1764528110
>>1764526
Да проблема в том, что так уже три месяца. Все говорят, ну да, всё заебись, приходи оформляться, и постоянно то весь отдел кадров уходит в отпуск, то руководитель пропадает, то внезапно появляется внутренний кандидат, то вот очередная хуета.
Я вообще не понимаю проблемы, ну если видно что я еблан, ну так откажите сразу, ёбаный в рот. Зачем тянуть резину, заставлять ждать, давать какие-то надежды. Более того, если им не нужны РАБотники, нахуй тогда вообще висит вакансия и зачем меня пригласили на технический собез.
Аноним 30/07/20 Чтв 19:11:24 1764529111
>>1764528
А ты приходил к ним через месяц, когда они уже с отпуска возвращались?
Может, ты слишком всратый? Ну внешне на сколько себя оцениваешь?
Аноним 30/07/20 Чтв 19:12:44 1764530112
>>1764525
Видимо сегодня этой какой-то ритуал - издеваться над джунами.
Начал активно искать работу уже будучи мидлом. Делал тестовое, если ок, брали. Если нет, то нет. Ни разу не спрашивали про всякие алгоритмы, ооп, хэши и т.д.

Аноним 30/07/20 Чтв 19:37:22 1764536113
мвп протекло?
Аноним 30/07/20 Чтв 20:07:36 1764546114
Помогите пожалуйста, я далек от программирования, но думаю это не очень сложно. У меня есть .txt файл с юрл адресами, в количестве около 1600 штук. Есть второй файл, со всеми юрл адресами сайта, 42к. И есть третий файл, по сути адреса те же, но они уже нихуя не те. программист редиректы не настроил и у нас сайт из индекса выпадать начал Мне нужно: значение из первого файла ищется во втором, если оно находится, то тут же берется эта же строка и ее значение из третьего файла, и все это записывается в отдельный файл, желательно с каким нибудь разделителем.
Аноним 30/07/20 Чтв 20:12:40 1764548115
Аноним 30/07/20 Чтв 20:33:54 1764558116
tt.png 10Кб, 739x245
739x245
Долбаеб опять выходит на связь.

Аноним 30/07/20 Чтв 20:36:37 1764560117
11859310562990.webm 4799Кб, 994x560, 00:00:10
994x560
>>1764394
>Сейчас работаю аналитиком 1с
Аноним 30/07/20 Чтв 21:12:43 1764575118
>>1764558
Ельд и не должен ничего в Х сам возвращать, если ты не отправил ничего туда, а сам генератор возвращает цифры как положено
Аноним 30/07/20 Чтв 21:31:00 1764587119
Pytest Аноним 30/07/20 Чтв 21:58:46 1764595120
Есть две папки sibling'и, и хочу в файле test_poop.py писать типо from parent.poop import bluh.
Тащемта стековерлоу уже почитал, например вот тут https://stackoverflow.com/questions/6670275/python-imports-for-tests-using-nose-what-is-best-practice-for-imports-of-modul
прям как у меня проблема. Пока мне больше нравится вариант с sys.path.append, потому что вариант с setuptools кажется слишком громоздким https://stackoverflow.com/a/50193944. Как вы решали, если сталкивались?
Аноним 30/07/20 Чтв 22:01:01 1764597121
Аноним 30/07/20 Чтв 22:04:12 1764601122
>>1764546
f1 = open('1.txt', 'r')
f2 = open('2.txt', 'r')
f3 = open('3.txt', 'r')
out = open('file_for_writing.txt', 'w')

капице?
Аноним 30/07/20 Чтв 23:48:41 1764644123
>>1764601
r не нужон, салага.
Но вообще это вопрос на однострочник для перла или авк. Но я пробую отсечь эти решения для более активного переката, лол.
Аноним 31/07/20 Птн 00:23:28 1764656124
Аноним 31/07/20 Птн 00:43:55 1764660125
image.png 3401Кб, 1600x1068
1600x1068
котаны, подскажите что это за тема\редактор плез
Аноним 31/07/20 Птн 00:52:57 1764661126
Аноним 31/07/20 Птн 00:55:50 1764662127
Screen Shot 202[...].png 159Кб, 1082x710
1082x710
Всем привет. Убрали куэйщиков и меня посадили на пики точенные править сломанные Selenium тесты.

Есть карусель с 4мя элементами-цифрами (см пик), файнд элементс создает лист с этими элементами, но ебаный вебдрайвер их не кликает (почему?) и выкидывает "javascript error: Failed to execute 'elementsFromPoint' on 'Document': The provided double value is non-finite."
Перечитал уже кучу статей на стаковерфло и ничего не помогает.
Нужно просто прокликать все элементы в этом списке, коих на данный момент 4.
>driver.find_elements_by_class_name('carousel-indicators')
for element in video_workshop_carousel_indicators:
ActionChains(driver).move_to_element(element).click().perform()
sleep(3)

Спасибо!
Аноним 31/07/20 Птн 01:03:49 1764663128
>>1764662
забыл сам эелемент:
>video_workshop_carousel_indicators =driver.find_elements_by_class_name('carousel-indicators')
Аноним 31/07/20 Птн 01:09:32 1764664129
>>1764662
>>1764663
Поищи плагин для браузера для Селениума, там можно записать действия, может так поможет
>sleep(3)
так лучше не делать бтв, есть специальная хуйня для того, чтобы ждать пока элемент отрисуется на странице
Аноним 31/07/20 Птн 01:17:05 1764666130
>>1764663
>>1764662
Разобрался. Оказалось, что тот локейтор почему-то не работал, хз почему. В общем заработало после того как поменял локейтор на css_selector.
>>1764664
Спасибо, обязательно посмотрю что это.

Аноним 31/07/20 Птн 02:16:57 1764675131
Продолжаю свою КУЭ транзицию ебана. Нужно написать простой тест для метода пост в этом классе для статус кода и контента. Нельзя напрямую реквестить линк.

import requests

class Blog:
def __init__(self, name):
self.name = name

def posts(self):
response = requests.get("https://jsonplaceholder.typicode.com/posts")

return response.json()

def __repr__(self):
return '<Blog: {}>'.format(self.name)

Я с реквестами никогда не работал напрямую. Моя идея такая, просто пройтись по методу на ассерт по коду? 200 ОК и тд. А по бади уже через словарь. Это так делается?
Аноним 31/07/20 Птн 06:51:48 1764720132
>>1764675
Подскажите хоть теги, где погуглить такое. Благодарю.
Аноним 31/07/20 Птн 08:40:04 1764748133
Аноним 31/07/20 Птн 09:31:20 1764764134
>>1764748
>>1764675
В общем запилил такую вот хуиту. Но ничего не работает. Просидел с этим дерьмом уже часа 4.
1. Выдает ошибку, почему-то не импортирует функцию, хотя sample_mock находится в той же папке. Ошибка - File "tests_mock.py", line 16, in <module>
from src.sample_mock import posts
ImportError: cannot import name 'posts' from 'src.sample_mock' (.../src/sample_mock.py)
2. Само собой говорит, что нет response не определена.

import unittest
from src.sample_mock import posts

class Test_Blog(unittest.TestCase):

def setUp(self):
self.test = Blog('Test')

def test_post_response(self):
self.assertEqual(response.status_code(), 200)


if __name__ == '__main__':
unittest.main()

Какие варианты?
Аноним 31/07/20 Птн 09:32:14 1764765135
Может за $ кто-то поможет именно объяснить? Можно даже не решать.
Аноним 31/07/20 Птн 09:46:30 1764775136
На связи веб-макака, пишущая на flask, aiohttp и любой херне, что потребуется заказчику. Работаю полгода, хотел узнать:
а) что нужно для переката в Дата Инженера? Вроде там перспективы по зп и по развитию пизже
б) если оставаться по моему направлению, то что стоит учить, чтобы не отстать от рынка и стать более востребованным?
Аноним 31/07/20 Птн 09:57:43 1764779137
Аноним 31/07/20 Птн 09:59:06 1764781138
>>1764597
книжку скачай "Эксель для офисных дебилов".
Аноним 31/07/20 Птн 10:12:59 1764788139
>>1764781
Ну и хули ты не можешь решение скинуть, которая наверняка не больше пяти строк занимает, не дебилушка?
Аноним 31/07/20 Птн 11:32:15 1764816140
image.png 5Кб, 221x142
221x142
Сап, есть один скрипт, который открывает через селениум открывает браузер, совершает некоторые манипуляции и принтует в консоль всякую информацию. Но я хочу, чтобы на последней строчке всегда отрисовывалась какая-нибудь строка с актуальной информацией, например, сколько окон запущено и сколько времени прошло со старта скрипта. Накидал пикрил для понимания, как это примерно должно выглядеть.

Чем и как можно подобное реализовать? А то я настолько, дебил, что не могу даже в гугле запрос составить правильно
Аноним 31/07/20 Птн 11:54:26 1764833141
Есть книги для углубленного пайтона? Что после Лутца читать? Хочу про ассинхрон почитать.
Аноним 31/07/20 Птн 12:02:04 1764834142
>>1764833
Лучано читай, про асинхронку есть в шапке книга
Аноним 31/07/20 Птн 12:16:22 1764840143
Аноним 31/07/20 Птн 13:45:44 1764920144
Аноним 31/07/20 Птн 13:51:20 1764923145
Аноним 31/07/20 Птн 14:35:58 1764953146
Аноним 31/07/20 Птн 14:57:21 1764973147
Был в курсе про модуль atexit, который позволяет вызывать функции при завершении программы. Мне надо при завершении моего скрипта выводить некую отладочную информацию на экран, я думал сделать это по типу:

atexit.register( lambda: print( get_info() ) )

Но внезапно я выяснил что если скрипт завершается через ctr+C или инвм сигналом, который его "убивает", то нихера не принтится. А у меня мой скрипт завершается именно так (это бесконечный loop). Че делать?
Аноним 31/07/20 Птн 15:03:59 1764974148
Bmp
Аноним 31/07/20 Птн 15:47:14 1765019149
>>1764973
atexit вызывается при цивильном экзите. Попробуй сигналы обрабатывать.
Аноним 31/07/20 Птн 16:22:47 1765051150
>>1764764
>from src.sample_mock import posts
что такое posts? Я ебу что ты там наговнокодил? Показывай давай нормально.
Аноним 31/07/20 Птн 16:28:25 1765055151
>>1764973
>это бесконечный loop

signal_event = False




def handler(sig, frame):
signal_event = True
os.exit(0)

signal.signal(signal.SIGTERM, handler)

while not signal_event:
print(''Govnokod is working')


Аноним 31/07/20 Птн 16:43:49 1765065152
В чем отличие промисов (Promise) из жс и футур (Future) из асинхронного питона?..
Аноним 31/07/20 Птн 18:21:56 1765124153
Может слегка ебанутый реквест, но как реализовать вебсокеты на питоне на низком уровне (то бишь на либе socket и ей подобных)
Аноним 31/07/20 Птн 19:34:45 1765180154
>>1765124
Читаешь спеку и реализуешь.
Я как-то колхозил парсер сервиса на вебсокете на пхп и нашел либу с реализацией что-то в 300-400 строк включая каменты и прочую хуйню. Так что должно быть не особо сложно.
Аноним 31/07/20 Птн 19:52:09 1765199155
>>1765051
posts это метод из класса Блог. отюсда >>1764675

Плиз хепл!
Аноним 31/07/20 Птн 19:55:21 1765201156
>>1765199
То есть я попытался импортировать функцию пост из класса Blog.
Но она не импортится.
Аноним 31/07/20 Птн 19:58:21 1765204157
>>1765201
Но суть даже не в этом. Похуй на импорт. Я могу в том же самом файле на крайняк тест сделать.
Смысл в том, чего делать дальше.
Аноним 31/07/20 Птн 20:16:07 1765218158
>>1765201
Метод post из класса Blog? Пиздуй азы учить, братюнь.
Если метод класса, то и вызываешь его Blog.posts(), если инстанса, то через инстанс: new_blog.posts().
Вы вообще хоть что-то читаете про ООП в питухоне? Там же все тривиально.
Аноним 31/07/20 Птн 20:21:27 1765226159
>>1765204
import unittest
from src.sample_mock import posts

class Test_Blog(unittest.TestCase):

def setUp(self):
self.test = Blog('Test')

def test_post_response(self):
self.assertEqual(response.status_code(), 200)


if __name__ == '__main__':
unittest.main()

Только сейчас заметил.... Ты определил инстанс зачем-то в методе. Полный ахалаймахалай.
перенеси в init(). Потом self.test.posts() вызывай.
Ты main() где определил? Нигде. И что в данном случае интерпретатор сделает? Правильно, напишет что нет такого метода main(). Ну ебана. Ты хочешь автотесты писать, при этом на выходе говнокод.
Убирай нахуй unittest, пиши обычную логику. Как поймёшь что куда дальше уже смотри или пиши свои тесты.
Аноним 31/07/20 Птн 20:24:50 1765231160
>>1765226
Если у тебя библиотека requests, то status_code нихуя не функция.
assert response.status_code == 200.
Знаешь что лучше сделай? Пиздуй на github fastapi (загугли блеать) и посмотри как они тесты написали. У тебя полная каша в голове сейчас.
Аноним 31/07/20 Птн 20:42:04 1765237161
>>1765218
>Метод post из класса Blog?
Да.
Ок, заработал сам Метод. Спасибо!
Сейчас он возвращает мне то, что в этом методе - return response.json().
А как теперь проверить статус код? Ведь внутри этого метода есть
response, но как я могу достать переменную response из этого метода?
Аноним 31/07/20 Птн 20:43:48 1765238162
Screen Shot 202[...].png 243Кб, 2594x996
2594x996
>>1765237
Всем спасибо за ответы! Дедлайн горит, у меня еще свой проект на стороне. Я на питоне никогда не работал пасаны.
Аноним 31/07/20 Птн 20:44:44 1765239163
>>1765238
Само собой этот код не работает. Потому что у метода posts нет response.status_code.
Аноним 31/07/20 Птн 21:02:20 1765242164
Запилил пару тестов, работают.

Никак не могу достать статус код, потому что он возвращается в формате Джсон. :(
Аноним 31/07/20 Птн 21:07:36 1765245165
>>1765242
У любого респонса статус код доступен априори
Это свойство любого респонса бля
не говоря уже о том, что ты зачем-то заюзал на объекте метод response.json() а потом жалуешься что "не могу достать статус код"
иди в /web и латай дыры в знаниях
Аноним 31/07/20 Птн 21:16:04 1765248166
>>1764834
презентации от дэвида бизли посмари есть в pdf и на утубе
Аноним 31/07/20 Птн 21:16:16 1765249167
>>1765242
Не смотри что писал касательно main и setUo(), в глаза уже долблюсь

response.status_code - возвращает статус код.

По поводу дедлайна успокойся. Так больше ошибок сделаешь.
Аноним 31/07/20 Птн 21:32:36 1765254168
Screen Shot 202[...].png 301Кб, 1192x1424
1192x1424
>>1765245
Бро, все так. Только это не мой код. Мне нужно протестировать этот функционал. Конечно же я бы запилил отдельный метод в классе Блог чисто для респонс код. Но такие условия задачи.
>>1765249
Спасибо, но как уже писал выше я не могу достучаться до переменной response из свой тест класса.

Вот что на выходе.
Тест test_posts_response не работает и выдает.
AttributeError: type object 'Blog' has no attribute 'response'

Аноним 31/07/20 Птн 22:00:08 1765259169
>>1765254
Пиздец... ты хоть в одном языке видел определение переменной?
Какой метод делает запрос и возвращает результат? Его используй.

r = self.test.<my_func>
assert r.status_code == 200
Аноним 31/07/20 Птн 23:09:14 1765274170
Есть ли у меня шансы в пограммировании, если функция ниже для меня пиздец как сложна для понимания? Я уже принтами вывел все потоковые значения, понятнее стало на процент. Обычно, если и после этого алгоритм мне не до конца понятен, я рисую блок-схему и разбираюсь. Тут же это в принципе невозможно, и я больше часа сижу туплю над десятком строчек.

def permutel(seq):
if not seq:
return [seq]
else:
res = []
for i in range (len (seq) ) :
rest = seq[:i] + seq[i+1:]
for x in permutel (rest) :
res.append(seq[i:i+1] + x)
return res
Аноним 31/07/20 Птн 23:11:57 1765276171
>>1765274
заливай на ideone или pastebin, пидор
Аноним 31/07/20 Птн 23:17:12 1765280172
>>1765274
>Есть ли у меня шансы в пограммировании, если функция ниже для меня пиздец как сложна для понимания?
У меня 4 год опыта работы, и я понятия не имею, что делает твоя функция. Для нее должен быть написан docstring, а в идеале юнит-тесты. Если этого нет, то запускай дебаггер и смотри что она делает. Блок-схемы бесполезны.
Аноним 31/07/20 Птн 23:20:46 1765284173
>>1765276
https://ideone.com/CveeBN
>>1765280
Это пример из Лутца, я понимаю что она делает, точнее что она возвращает, там это сказано точнее. Перемешивает последовательность, выдавая список из всех возможных вариантов последовательностей с теми же элементами. Делов в том, что я не понимаю как она работает.
Аноним 31/07/20 Птн 23:27:51 1765286174
>>1765284
Скачай PyCharm, запусти дебаггер и смотри что происходит после выполнения каждой строчки.

Проблема не в том, что ты не умеешь программировать, а в ограниченных возможностях человеческого мозга. Именно поэтому сложные алгоритмы должны иметь хорошую документацию, а в идеале лучше такое вообще не писать, а использовать готовые библиотеки.
Аноним 31/07/20 Птн 23:28:34 1765288175
>>1765284
>Делов в том, что я не понимаю как она работает.
Воспользуйся дебаггером, посмотри что на каждом шагу происходит. если только вкатываешься ясен хуй будет сложно и будешь тупить
Аноним 31/07/20 Птн 23:44:18 1765289176
>>1765284
Да вроде не очень сложно.
Выбираются элементы кроме текущего и рекурсивно прокручиваются, потом в результат добавляется текущий + каждая из этих прокруток.
Аноним 01/08/20 Суб 00:34:19 1765303177
>>1762623 (OP)
Добрый вечер, аноны. Быдло-кодер на связи. Вкатываться в коммерческую разработку не планирую. Программирование не профильное. Пилю небольшие скрипты для себя.

Ситуация следующая: большинство моих потребностей в основном упираются в разбор текстовых файлов html, xml, csv, просто текст в txt, etc. и преобразование их в другой формат.

Т.к. хорошего кода я практически не видел, то все мои манипуляции с текстовиками в итоге пришли к макаронам из del, split, replace и списков из ошметков, повторно проворачиваемых через них.

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

1) Насколько сильно это хреновый подход?
2) Дадут ли регулярки больший профит? И стоит ли лезть в это болото?
3) Как вообще это делать правильно?
Можно просто макнуть ебалом в линк.
Аноним 01/08/20 Суб 00:43:22 1765309178
>>1765303
Да, регулярки это охуенно.
Все твои сплиты и прочее можно сделать регулярками (но не нужно), а чтобы повторить довольно несложные регулярки ты сто раз через жопу провернешься.
Где вписываются базовые методы - юзаешь их, но без велосипедов.
Наверное, баланс приходит с опытом, никто тебе не распишет каждый случай.
Аноним 01/08/20 Суб 00:49:32 1765311179
>>1765259
Этот метод.
def posts(self):
response = requests.get("https://jsonplaceholder.typicode.com/posts")

return response.json()

Я пытаюсь через этот метод узнать status_code, но он не видит эту переменную..
Аноним 01/08/20 Суб 00:55:55 1765313180
Screen Shot 202[...].png 40Кб, 1084x228
1084x228
>>1765259 >>1765311
AttributeError: 'function' object has no attribute 'status_code'

Плиз Хелп. Неужели никто не знает? :( Я уже обгуглился.
Аноним 01/08/20 Суб 00:59:51 1765319181
>>1765313
Да ты заколебал. Отоспись, все равно башка не варит уже
f - функция
f() - вызов функции
f.status_code не имеет смысла блэт
Аноним 01/08/20 Суб 01:01:26 1765323182
>>1765311
>>1765313
status_code есть у response.
Ты вовзращаешь response.json(), который уже распаршенный текст респонса.
Аноним 01/08/20 Суб 02:13:21 1765341183
15930125038360.jpg 236Кб, 1080x1080
1080x1080
>>1765319
Да я уже по-всякому пробовал и с фукнкцией и с методом. в обоих случая ошибка атрибута. Нет респонс.
>>1765323
Я получаю эту ошибку при вызове: AttributeError: 'function' object has no attribute 'status_code'

Если вы знаете правильный вариант, подскажите плиз!
Аноним 01/08/20 Суб 03:39:28 1765349184
Эх, кроме двача и спросить-то негде!
Аноним 01/08/20 Суб 04:23:04 1765352185
>>1765341
Реально отоспись.

Сделай return response без доп. методов.
Тебе нужен именно сам объект response,
Аноним 01/08/20 Суб 06:36:41 1765363186
>>1765352
Спасибо, друг. Но как я уже сказал, я не могу править исходный класс.
Получается что из этого метода, без его изменения Никак нельзя получать статус код?
def posts(self):
response = requests.get("https://jsonplaceholder.typicode.com/posts")

return response.json()
Аноним 01/08/20 Суб 09:05:25 1765385187
Аноним 01/08/20 Суб 09:43:55 1765397188
>>1765385
Там написано людям с Двача не рады. Обоссут там за любой вопрос?
Аноним 01/08/20 Суб 10:46:07 1765417189
>>1765363
return response
В json уже на месте превращай. Если ситуация не позволяет и код править нельзя, то само по себе наличие json-объект ( if response.json() ) говорит о том, что response_code == 200. Сам подумай. Не веришь - читай спеку: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
Аноним 01/08/20 Суб 12:52:33 1765465190
>>1765417
Тебе кто такое сказал? Я могу и 403 вернуть, но с телом ответа.
Аноним 01/08/20 Суб 12:54:26 1765467191
>>1765465
Епт, ну канешн надо проверить валидность тела, а как иначе?
Аноним 01/08/20 Суб 14:58:52 1765533192
как с помощью asyncio сделать пул отложеных задач, причём выполнятся должна только последняя?
приходет вызов из коллбака, спавнится ждун А. ждун А заканчивает, спавнится новая задача Х.
если во время выполнения ждуна А, пришёл новый вызов спавнится ждун Б, ждун А ничего не делает. после того, как ждун Б закончит, спавнится новая задача Х.
Аноним 01/08/20 Суб 15:27:02 1765546193
Аноним 01/08/20 Суб 15:32:45 1765554194
>>1765546
не, мне для дома, для семьи, в уютный маленький прожэкт.
Аноним 01/08/20 Суб 17:15:51 1765656195
Нужно распарсить лог спортивного матча, т.е. происходят всякие события и они стандартно описаны таймштампом и текстом.
Я так понимаю, лучше всего токенизировать и потом разбирать, или можно как-то попроще?
Аноним 01/08/20 Суб 17:30:51 1765671196
>>1765309
>регулярки это охуенно
Понимаю. У них же основная проблема - это читаемость. Поэтому стараюсь не лезть без крайней необходимости.

>баланс приходит с опытом, никто тебе не распишет каждый случай
Ну что поделать. Будем набивать с переменным успехом. Спасибо за реплай в любом случае.
Аноним 01/08/20 Суб 17:44:54 1765689197
FbLVjMB5O4Y.jpg 16Кб, 486x467
486x467
>>1762623 (OP)
Чики двощ!
Я заканчиваю "Автоматизацию рутинных задач", набрал новых крутых учебников, но в них подход недостаточно проектный. Надо больше чужого кода и практических задачек. Вот по Джанго нашёл Django for Beginners by William S. Vincent, очень нравится. А что есть по чистому Питону для того, кто хочет стать интермидиэйт? С английским я ок.
Аноним 01/08/20 Суб 17:59:03 1765703198
>>1765689
Нет такого подхода. Ну можешь почитать GoF и все.
Или посмотреть какие-то части решений.

У меня был опыт сбора данных из БД или по SNMP, парсинг/обработка -> передача в БД/обмен данными через AMQP. О чем попросит тебя заказчик... хуй его знает. Ко всему нельзя быть готовым.
Пока ковырял проект были и идеи по управлеию сервисами через собственный вебсервис через pystemd. Так как часто снимали логи через SSH со сторонних устройств , то прикручивал asyncssh.
Автоматизировал отчетности. Выгрузка из БД, перевод в excel и рассылка через SMTP библиотеку.
Парсил HTML, использовал OpenCV для получения данных из видеопотка с камер. Передавал потом в сторонние системы...

Задачи разные у всех. Кому-то вообще потребуется интеграция с АТС, недавно такие вакансии видел.

При том неважно будешь ты на питоне это писать или на другом языке. Просто если ты не тупой, твоя задача не просто кодить (ты же не мартышка с печатной машинкой), а именно находить решения и реализовывать их.
Аноним 01/08/20 Суб 18:05:53 1765715199
>>1765703
Ты хочешь сказать, что надо просто работу найти?
Аноним 01/08/20 Суб 18:20:36 1765737200
>>1765715
Ну ты можешь что-то для себя ковырять. Подергать чужие API, посмотреть как люди документации пишут и потом вспоминать это с умилением. Потому что отечественный IT все равно с "душком". Кто-то где-то реализовал хуйню, ее не протестили, потом начинаются костыли и так далее. А ты сидишь как баран и пишешь ебучие заплатки. И молишься чтобы тебя предупредили, когда в проде что-то поменяется.
Пойми одно. Есть проект - людей нагоняют и вроде как пишут документацию, потом галера пустеет и остается только полтора землекопа, которые знают наверное 30% о своем продукте.
Потом когда надо что-то допилить, снова галера заполняется и так пока не придут к какому-то логическому концу или не выдадут новый бюджет для попила и все нахуй с нуля перепишут.
У меня был такой горький опыт.
Аноним 01/08/20 Суб 18:51:32 1765766201
>>1765737
Звучит отстойно.

Аноны, советы по книжкам еще нужны. Пишите, пожалуйста.
Аноним 01/08/20 Суб 19:06:32 1765776202
>>1765766
А ты думал IT в 21 веке это сказочный мир что ли?
Тут блять CoC обсуждают, а не развитие инструментов. Запрещают slave/mastery/blacklist/whitelist.
А ну и выгорание на проекте в течение полугода, так как если ебашить малой группой, то с переработками и иногда без выходных. Бывало спал по 2 часа в течение 3-х недель.
Аноним 01/08/20 Суб 19:27:56 1765793203
1520648156989.jpg 43Кб, 650x650
650x650
>>1765776
Я не специалист в компьютер сайенс, но мне кажется, что тебе надо отрастить яйца. Пик релейтед - иногда смотрю на него и вспоминаю, что человек сделан из звёзд, и отчаиваться ему не подобает.

Еще про политкорректность скажу. В Америке если человеку не нравится что-то - он ищет единомышленников. Пишет о себе, проводит встречи, пробивается в медиа и во власть. Негры не хотят терпеть чего-то там - и вот, как видишь, мир меняется, становясь всё более похожим на их мечту. Вместо того, чтобы ныть, ты бы посмотрел на жизнь вокруг и понял, что всё так засрано и бедно, потому что лично ты ничего не делаешь.
Аноним 01/08/20 Суб 19:34:07 1765801204
Бля, кто-нибудь, добавьте в шапку, что книги по той же Джанге (и по любому фреймворку) это beginner уровень, если хочется осваивать джанго/фласк/торнадо/фастапи - пиздуем изучать доки, шерстить стэковерфлоу и ютубчик. Любая литература по фреймворкам быстро стареет
Тут за тред уже 4й или 5й чел просит какие-то книги по Джанге блять кроме "Two Scoops of Django" с его best practises ничего нормального нет, остальное слишком старое
Аноним 01/08/20 Суб 19:59:23 1765816205
Как заставить какую-то функцию вызываться по интервалу? Например каждые 10 секунд?.. без неэффектитвного (треды будут слишком часто переключаться почем зря) мультитрединга это сделать невозможно?
Аноним 01/08/20 Суб 21:06:08 1765870206
>>1765816
while True:
твоя функция
time.sleep(10)

Или я чего-то не понимаю.
Аноним 01/08/20 Суб 21:08:55 1765873207
>>1765793
Не хочу в полемику углубляться. Разработчики не делятся по полу/национальности и расе. Раньше всех все устраивало. Пришли люди с улицы и сказали все переделать. Потом скажут что Julia ущемляет права женщин, а маскот Python является фаллическим символом и ваще патриархальный.
И мейнтейнеры будут заниматься полной хернёй вместо решения проблемы с GIL и оптимизацией встроенных библиотек.

>>1765816
Покажи код. Почему мультитрединг не эффективный? Все от задачи зависит.

>>1765801
Ну напишут. Кто-то читает что ли? Тут даже заходят с вопросами, которые разжеваны на SO

Аноним 01/08/20 Суб 21:10:45 1765876208
>>1765816
Не хочешь постоянного переключения - ебни отдельный процесс под функцию, хули
Аноним 01/08/20 Суб 21:19:07 1765878209
>>1765870
А если твоя функция занимает 100 секунд?
Аноним 01/08/20 Суб 21:21:02 1765879210
>>1765878
>А если твоя функция занимает 100 секунд?
Значит нужно ее оптимизировать.
Аноним 01/08/20 Суб 21:22:16 1765881211
>>1765878
Сделать ее асинхронной

мимо
Аноним 01/08/20 Суб 21:42:50 1765887212
>>1765417
Спасибо. Да я тоже так подумал, когда читал по API.
Я запилил такую вот логику в обход, это норма или идиотизм?

status_code = self.test.posts()
if not status_code:
return False

>>1765465
Каким образом?
Аноним 01/08/20 Суб 21:52:20 1765892213
>>1765887
return Response(json.dumps({'error':'ID is unknown', 'comment'':'I am calling police'}), status=403, media_type='application/json')

Я так вебсервис писал, ибо нехуй. Если возвращается ошибка, то ее надо обозначать через статус коды.
Тогда я делаю контракт (через документацию), что при успешном запросе статус 200, а при неуспешном все от 400. При этом, если статус не 500 и выше, то можно получить тело ответа.
ЭТО НОРМА. Я так работал с ИС, которая возвращала всегда 200, даже если ошибка была. Это полный ад.
То есть я ОБЯЗАН парсить тело ответа и определять там есть ключ 'error' или нет. Это банально лишние операции и больше ошибок.
Аноним 01/08/20 Суб 22:22:28 1765904214
>>1765881
Что это значит? Объясните тупому.
Аноним 01/08/20 Суб 22:34:30 1765913215
Аноним 01/08/20 Суб 22:43:13 1765919216
Запилил такую вот еботу, но статус код конечно же не проверяется напрямую...

def test_posts_status_code(self):
status_code = self.test.posts()
expected = {здесь экспектед бади}
if status_code:
self.assertEqual(self.test.posts()[0], expected)
else:
return False
Аноним 01/08/20 Суб 22:54:09 1765924217
>>1765919
Чет ты коляску какую-то пилишь.
assertEqual(first, second, msg=None)
Test that first and second are equal. If the values do not compare equal, the test will fail.
Нахрена ты булевые ввел?
Аноним 01/08/20 Суб 22:56:12 1765925218
>>1765919
ну и опять же
assertIsNotNone(x)
если None, то сразу непройденный тест. За тебя уже давно все придумали
Аноним 01/08/20 Суб 23:12:46 1765931219
>>1765925
>>1765924
Спасибо. Поправил. Мне подсказали, что мне нужно использовать mock юнит тест. Как уже советовал добрый Анон выше.
А еще меня забанили в группе Питонщиков на пару дней. :(

Аноним 01/08/20 Суб 23:12:59 1765932220
>>1762623 (OP)
Где я могу научиться писать нейросети? Кто-то может научить меня писать нейросети?
Аноним 01/08/20 Суб 23:15:18 1765935221
>>1765932
Я научу. И писечку пососу. И за ручку отведу, в кресло сеньора посажу
Аноним 01/08/20 Суб 23:20:54 1765937222
>>1765935
А можно? Я спасибо скажу, обещаю
Аноним 01/08/20 Суб 23:55:34 1765947223
>>1765932
1-3 курс, линейная алгебра и матанализ
Аноним 01/08/20 Суб 23:58:12 1765948224
>>1765931
Ну не совсем. Смотри доки
>unittest.mock provides a core Mock class removing the need to create a host of stubs throughout your test suite. After performing an action, you can make assertions about which methods / attributes were used and arguments they were called with. You can also specify return values and set needed attributes in the normal way.

У тебя же задача клиента написать для тестов. А вот хер который бэк писал должен был как раз mock использовать.
Аноним 02/08/20 Вск 01:59:49 1765989225
>>1765947
нахуй не нужны для них.
Аноним 02/08/20 Вск 02:31:05 1765994226
Аноним 02/08/20 Вск 03:18:35 1766002227
>>1765994
Ты долбоеб? Что там нельзя послать в твоём блядь случае я чё телепат нахуй? Скажи мне пидорас тупорылый, я телепат нахуй ты думаешь или чё?
Аноним 02/08/20 Вск 03:24:27 1766003228
>>1765994
Не слушай поехавшего.
ef test_get_employee(requests_mock):
test_id = 'random-id'
requests_mock.get(f'{__BASE_URL}/employee/{test_id}', json= {'name': 'awesome-mock'})
resp = get_employee('random-id')
assert resp == {'name': 'awesome-mock'}

def test_absent_employee(requests_mock):
test_id = 'does_not_exist'
requests_mock.get(f'{__BASE_URL}/employee/{test_id}', status_code=404)
with pytest.raises(HTTPError):
resp = get_employee(test_id)

Вариант 1.
Возвращается тело, логика теста, а следовательного всего приложения может продолжаться
Вариант 2.
Возвращается ошибка. логика теста продолжается, идет обработка кода ошибки.

У тебя уже готовый сервис с данными, которые ты проверяешь. Mock в данном случае не требуется. Тебе просто надо пройти тесты с разными входными данными, которые тебе выдали. Все.
Аноним 02/08/20 Вск 03:29:04 1766005229
>>1765994
Короче. Объясняю с точки зрения погромиста.

Вот написал я охуенную приложуху, но у меня еще нет ни БД, ни сервиса. Проебывается БД админ например и второй программист ответственный за вебсервис. А я в соответствии с графиком заебашил свою часть, но при этом чтобы реально сказать "я сделал, дальше ебитесь сами" я должен подготовить тесты, в том числе с mock. Т.е. я должен буду описать логику поведения своего говнокода, так чтобы возможные ошибки не повлияли на общую работспособность, когда все соберут воедино. Как-то так.
Аноним 02/08/20 Вск 03:43:00 1766008230
>>1766003
>Тебе просто надо пройти тесты с разными входными данными, которые тебе выдали. Все.
Благодарю! Означает ли это, что при получении экспектед бади я могу сказать, что статус код будет 200?

Алсо. Поясните почему или зачем метод возвращает именно return response.json() метод?
Аноним 02/08/20 Вск 04:00:03 1766011231
>>1766005
Вообще мне тоже кажется, что я велосипед изобретаю. Проверил бади, если получил правильный ответ, по идеи статус код похуй же.
Аноним 02/08/20 Вск 04:53:50 1766015232
>>1766003

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

def test_hello(self):
with patch('sample_mock.requests.get') as mocked_get:
#mocked_get.return_value.ok = True
mocked_get.return_value.text = 'OK'

r = self.test.posts()
mocked_get.assert_called_with('https://jsonplaceholder.typicode.com/posts')
#mock.assert_called_with('https://jsonplaceholder.typicode.com/posts')
self.assertEqual(r, 'OK')
Аноним 02/08/20 Вск 04:54:47 1766016233
>>1766015
>AssertionError: <MagicMock name='get().json()' id='4436669720'> != 'OK'

Он почему-то не запрос возвращает, а какую-то ботву.
Аноним 02/08/20 Вск 05:01:29 1766018234
Ботва блядь, как же я в твой ротик мелкий срал ахуеть.
Аноним 02/08/20 Вск 05:24:21 1766022235
image.png 4Кб, 275x144
275x144
Сап, змеи.
Решили с другом на Питоне сделать бота в вк, чтобы он выполнял различные функции. Уже 5 скриптов есть (пикрил) еще будет функция удаления всех диалогов+хотим вынести в отдельное десктоп-приложение.
Но нужно наполнение. Подкиньте идей годных.
Аноним 02/08/20 Вск 08:53:52 1766072236
159634162837.png 54Кб, 1118x642
1118x642
Как пофиксить этот кусок кода чтобы работало?
Аноним 02/08/20 Вск 08:57:06 1766074237
>>1764525
>НУ МЫ ВООБЩЕТ НЕ ИЩЕМ ДЖУНА ЧЕСТНЫГОВЫРЯ
Серьезные люди ищут не джуна а Шинку.
Аноним 02/08/20 Вск 14:40:25 1766216238
>>1766072
PS: это колаб если что
Аноним 02/08/20 Вск 20:24:48 1766593239
Вопрос такой - есть картинка, собственно скриншот из фильма. Как получить, к примеру, 7 основных цветов на картинке.
В жопе мозге понимаю что взять - посчитать массив цветов и отсортировать. Но вот не пойму с какой стороны подойти. Ткните носом, плз. Чую что через имажмагик, но понять не могу с какой стороны начать
Аноним 02/08/20 Вск 20:51:27 1766622240
Аноним 02/08/20 Вск 21:03:28 1766625241
Че такое "инъекция зависимостей". Вот чувак высирает уже вторую статью про нее на Хабре:
https://habr.com/ru/post/513510/

Но я не могу никак вдуплить: что такое инъекция зависимостей и нахрена она собственно нужна? Определение в гугле путанное
Аноним 02/08/20 Вск 21:11:21 1766630242
>>1766625
это короч когда ты отдаешь управление зависимостями для твоего кода внешней хуйне(фреймворку). в общем случае такой подход называется inversion of control. внедрение один из способов мутить ioc. еще есть лукап и фабрики.
мимо жабамразь
Аноним 02/08/20 Вск 21:13:35 1766633243
>>1766625
>что такое инъекция зависимостей

Это когда рантайм твоего языка ломают к хуям через, например, механизм рефлексии или кодогенерации и ебут инкапсуляцию в рот, без скрыто инициализируя приватные поля, оправдывая это программированием через конфигурацию и возможностью легкой замены классов как перчаток.
Аноним 02/08/20 Вск 22:55:12 1766690244
>>1766625
И что этот чел намутил, интересно? В чем в целом профит той еботни, что он понаписал?
Аноним 02/08/20 Вск 23:05:45 1766698245
>>1766633
Ты вечерний прием галоперидола забыл
Аноним 03/08/20 Пнд 00:44:44 1766732246
Анон как мне прогнать pytest над данными лежащими в файлах?
Суть такова: есть 1 рабочий конфиг для этого скрипта, хочу прогонять тесты с его использованием, ожидаемый результат собираюсь поддерживать в отдельном файле, синхронизируя по мере обновления конфига.
Наговнякал вот такую говнину https://pastebin.com/CHp29rCM
Она работает, но выглядит поуродски.
Можно ли как то сделать загрузку данных красиво через фикстуры? А не костыли прикрученые сбоку как у меня?
Аноним 03/08/20 Пнд 03:09:30 1766792247
image.png 60Кб, 623x544
623x544
image.png 24Кб, 581x181
581x181
обрабатываю пост запрос в restx и хочу передать args['imageData'] в celery задачу объект файла, как правильно его сериализовывать? либо арет на json is not seriazable или шо рекурсия когда пытаюсь в ручную через pickle декодировать
Аноним 03/08/20 Пнд 03:58:43 1766800248
image.png 99Кб, 865x566
865x566
>>1764341
>Я хочу чтоб все они пошли выполняться вместе и чтобы все результаты были готовы через 4 секунды, а вот в этом куске кода результаты вернутся через 4+3+2+1 = 9 секунд, что не есть гуд
Аноним 03/08/20 Пнд 04:01:41 1766801249
Аноним 03/08/20 Пнд 07:50:56 1766823250
>>1764341

В питоне многопоточность не многопоточность в смысле что долбить больше одного ядра в соточку нильзя. Только через процессы.
Аноним 03/08/20 Пнд 10:19:03 1766910251
на чем графоний делоть? только шоб бесплатно
Аноним 03/08/20 Пнд 11:12:18 1766930252
Аноним 03/08/20 Пнд 11:14:01 1766932253
>>1766930
сорян, я имел в виду интерфейсы пользовательские рисовать
Аноним 03/08/20 Пнд 11:24:10 1766936254
Аноним 03/08/20 Пнд 14:27:44 1767193255
Зашел на c++ ресурс с задачками для проганья. В категориях "сложные" и "хардкорные" какой-то проходняк лежит кек
Аноним 03/08/20 Пнд 16:10:15 1767305256
>>1767193
легкоатлетические разряды со времен СССР тоже понизились.
что ты хотел этим сказать?
Аноним 03/08/20 Пнд 16:45:27 1767361257
Пистоны, кто-нибудь разбирается в discord.py, нужно сделать бота, который будет отвечать на каждый пост. Желательно, чтобы он еще заходил как обычный пользователь.
Аноним 03/08/20 Пнд 19:34:32 1767610258
pythonassert.png 30Кб, 716x605
716x605
Почему условие ложно? Пытаюсь найти строку в списке, в списке элементы - int, строку, соответственно, тоже конвертирую в int. Спасибо.
Аноним 03/08/20 Пнд 19:38:50 1767613259
>>1767610
У тебя список туплей, а не интов.
Аноним 03/08/20 Пнд 19:41:18 1767614260
>>1767610
Проверка список.count(элемент) тоже возвращает 0.
Аноним 03/08/20 Пнд 19:59:13 1767631261
>>1767613
Благодарю. нашел громоздкое решение, но работает
Аноним 03/08/20 Пнд 20:04:02 1767638262
>>1767631
Какое там решение, tuple(el) in list или (el,) in list
Аноним 03/08/20 Пнд 21:48:04 1767734263
image.png 158Кб, 1016x848
1016x848
image.png 29Кб, 730x422
730x422
>>1762623 (OP)
Сосач, почему оно не хочет писать русский текст без пикчи?? endcode utf-8 не работает
Аноним 03/08/20 Пнд 22:27:51 1767767264
image.png 3Кб, 586x50
586x50
Аноним 03/08/20 Пнд 23:36:34 1767798265
>>1763092
dict = {
1 : "2",
3 : "4",
4 : "5"
}
string = dict.__str__()
Аноним 03/08/20 Пнд 23:44:52 1767801266
>>1764394
Ну, игру уже написал, осталось монетизацию прикрутить.

Мне вот книжка понравилась - хз тебе такое надо или нет https://automatetheboringstuff.com/2e
Аноним 03/08/20 Пнд 23:58:11 1767808267
>>1764546
Охуенно интересно делать без примеров строк - ты совсем ебобо?

def three_files():
with open("file1") as file1:
file2 = open("file2")
str2 = file2.readlines()
file3 = open("file3")
str3 = file3.readlines()
result = []
for str1 in file1.readlines():
if str1 in str2:
for s3 in str3:
if str1 in s3:
result.append(str3)
return result

Это кривая хуета по идее вернет тебе лист строк из 3 файла.
Аноним 04/08/20 Втр 00:09:06 1767815268
>>1765689
Если найдёшь чего, то маякни - я б тоже почитал
Аноним 04/08/20 Втр 00:17:04 1767817269
Привет, котаны.

Маленько начал учить питон - пока всё нравится, прошёл курс на курсере бесплатный от вшэ, лол, порешал задачки на гитхабе для нубов, порешал на codewars, читаю automating boring stuff сейчас и вот всё не даёт мне покоя вопрос:

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

Это я не дорос просто до задач или что?
Аноним 04/08/20 Втр 02:25:28 1767867270
Аноним 04/08/20 Втр 03:31:43 1767885271
>>1767817
>Нахуя нужны классы? я всё что ни делал пока - писал через функции, прям ну вот не было нужды совсем. В чём плюсы ?
Если ты задаешься таким вопросом, значит пока что не нужны. Необходимость в них появится когда твоя программа разрастется до тысяч строк процедурного говнокода. Понимание когда именно использовать классы приходит только с опытом.
Аноним 04/08/20 Втр 04:13:35 1767893272
>>1767817
На курсере ебанутая система, хуй найдёшь инфу, что курсы платные, я так проебался, добился рефанда. Спишут через неделю, отвязывай карту
Аноним 04/08/20 Втр 05:16:59 1767895273
image.png 28Кб, 442x318
442x318
Тайперы на месте? Это уродливо или так можно делать?

Аноним 04/08/20 Втр 05:17:35 1767896274
>>1767895
очевидно что декоратор для класса не нужен, но вы понели.
Аноним 04/08/20 Втр 09:39:47 1767944275
>>1767893
а что означает "доступна финансовая помощь" ? многие курсы как будто бесплатные, но я не разобрался в условиях.
Что на самом деле?
Аноним 04/08/20 Втр 10:09:42 1767954276
>>1767896
нет мы нихуя не поняли
ты хочешь спросить про typing.Generic?
Аноним 04/08/20 Втр 10:18:37 1767959277
>>1767893
Спасибо за совет, бро, но если меня просят привязать карту = идут на хуй )) потому что отвязывать карту ещё потом заебёшься и если забудешь, то спишут ~3К за месяц.

>>1767885
>>1767867
Спасибо

>>1767944
Можешь подать заявку что ты нищий стузиозус и часть(или всю) оплаты за тебя заплатят.
Аноним 04/08/20 Втр 10:47:19 1767971278
Есть набор точек вроде
points = [ (1,2), (3,4), (5,6) ]

Как "нормально" вытаскивать из набора по 2 точки за раз и вычленять их аргументы x и y? Что-то лучше чем

for i in range(len(points) - 1):
----first = points
----second = points[i+1]
----x1, y1 = first[0], first[1]
----x2, y2 = second[0], second[1]

существует?
Аноним 04/08/20 Втр 10:48:04 1767973279
>>1767971
first = points

канешн
фикс
Аноним 04/08/20 Втр 10:49:09 1767975280
>>1767973
Блять, Абу да ты заебал моё [ i ] прятать. Ну что ты за мудила, а?
Аноним 04/08/20 Втр 10:55:06 1767979281
Аноним 04/08/20 Втр 11:32:06 1768004282
Как запустить питоновского демона на unix?
В поваренной книге питона есть рецепт, как запилить демона через os.fork, но вот как оперативно его запускать/останавливать? Это по хорошему надо делать через systemd для единообразия а не питоновсеими командами. Я в линухе пока не особо шарю
Аноним 04/08/20 Втр 11:36:35 1768007283
>>1767979
Ты ж в курсе, что ты вытащил только одну?
И это наводит на дальнейшие размышления: наверняка есть генератор, который позволит за раз отдавать нужное количество объектов, например нам нужно вытаскивать не 2, а 4 точки за раз и проводить над ними одну и ту же операцию
Аноним 04/08/20 Втр 12:08:01 1768050284
Многие пишут, что обязательно необходимо изучать Python по Марк Лутцу, т.е. "Изучаем Пайтон". Действительно ли так? Или он больше как справочник подходит?
Аноним 04/08/20 Втр 12:13:06 1768054285
Аноним 04/08/20 Втр 12:38:39 1768086286
>>1767979
Норм, работает. Оно как tuple принимает x,y - я верно понимаю?

points = [(1, 2), (3, 4), (5, 6)]
for (x, y) in points:
print(x, y)
Аноним 04/08/20 Втр 12:42:48 1768087287
>>1768086
это же не то шо ты хотел, а так оно распаковывает из кортежа в переменные х и у соответственно
Аноним 04/08/20 Втр 12:52:59 1768093288
>>1768087
Так я и не он :) кортежи то просто выдернуть, а что в такой форме работает я не знал
Аноним 04/08/20 Втр 13:56:48 1768158289
Аноны, какое портфолио должно быть у junior'а?
Аноним 04/08/20 Втр 14:04:53 1768170290
>>1767971
Сам написал генератор для этой херни. Как приду домой, скину сюда, мне все равно не нравится, как получилось
Аноним 04/08/20 Втр 15:06:30 1768232291
Сап дващ, какие курсы проплатить, чтоб через месяц 300к получать? Сам 30лвл, вышки нет.
Аноним 04/08/20 Втр 15:12:03 1768236292
Все волосы на жопе поседели, пока пытался применить один шаблон ко всему проекту в жанге. Всю ночь ебался, пока наконец не додумался перед ссылкой на этот шаблон удалить /. Пиздец просто.
Аноним 04/08/20 Втр 16:01:07 1768281293
Аноним 04/08/20 Втр 16:21:30 1768312294
>>1768236
Типичные будни жангодауна
Аноним 04/08/20 Втр 16:23:47 1768318295
Аноним 04/08/20 Втр 17:55:25 1768407296
>>1768170
import itertools
points = [(1, 2), (3, 4), (5, 6)]
generator = (p for p in points)
while True:
try:
print(next(generator))
except StopIteration:
print('generator exhausted')
break

Чем не устраивает?
Аноним 04/08/20 Втр 17:56:33 1768408297
>>1768407
Импорт мой лишний, сам тестил кое-что. Можно и в более наглядном виде и по PEP8
points = [(1, 2), (3, 4), (5, 6)]
generator = iter(points)
Аноним 04/08/20 Втр 17:57:20 1768411298
>>1768408
проебался. блять. там итератор на выходе. Короче ты понЕл
Аноним 04/08/20 Втр 18:25:49 1768437299
>>1768407
>>1768408
>>1768007
>>1767971
ну я в прошлый раз не зометил шо тебе нужна пара координат
глянь ето
points = [(1, 2), (3, 4), (5, 6), (7, 8)]
def two_points(points):
----g1 = (p for p in points[::2])
----g2 = (p for p in points[1::2])
----point = zip(g1, g2)
----return point

g = two_points(points)
print(next(g))
print('----------')
(x1, y1), (x2, y2) = next(g)
print(f'x1 = {x1}, y1 = {y1}\nx2 = {x2}, y2 = {y2}')
print('----------')
Аноним 04/08/20 Втр 18:28:03 1768438300
>>1768437
можно попробовать еще класс генератора напейсать, но у мну пока не получилось, сам нуб еще, методы init next iter надо реализовывать
Аноним 04/08/20 Втр 18:30:31 1768443301
image.png 54Кб, 469x426
469x426
>>1768437
и да, глянул ща фукнцию зип, он юзает генератор списков, значит моё решение в помойку если у тя будет миллион точек
Аноним 04/08/20 Втр 19:10:40 1768471302
>>1768443
а не, я тупанул, там же yield, так шо всё зоебис
Аноним 04/08/20 Втр 19:45:39 1768491303
>>1768170
>>1768007

https://ideone.com/AW8ICy
Такс, я дома, нахер. Накидал подобное. У нас есть генератор, который принимает на вход итератор и integer число, за каждый проход он возвращает именно это (или меньшее, если не хватает) число объектов

Но тут есть свои косяки и непонятки. Во-первых, с фига ли он мне пишет что тот же range не является итератором?? Чтобы все работало его нужно обязательно в iter() обернуть

Думал кстати делать raise StopIteration внутри блока except в надежде что тогда внешний цикл увидит это и прекратится, чтобы обойтись без ебучих флагов, но нихрена - лишь ошибка: RuntimeError: generator raised StopIteration
Аноним 04/08/20 Втр 19:47:21 1768493304
Всем привет, вопрос от новичка:
Когда нужно использовать в коде конструкцию

if __name__ = '__main__':
...

?
Аноним 04/08/20 Втр 19:49:02 1768494305
>>1768491
Также неплохо было бы добавить "дефолтное" значение для "пустых" ячеек. Например при вызове: numbered(iter(range(10)), 4) последний список будет содержать 2 значения а не 4, что может вызвать проблемы при присваивании. Поэтому юзер сам сможет задать свое дефолтное значение по типу: numbered(it=iter(range(8)), n=3, default=None)
А так значения можно принимать списком, а можно распаковывать на лету как: for x, y, z in numbered(iter(range(110)), 3)
Аноним 04/08/20 Втр 19:58:53 1768502306
>>1768494
напишешь как решишь, интересно
Аноним 04/08/20 Втр 20:01:16 1768505307
>>1768491
>>1768494
>>1768502
https://ideone.com/vFZV0D
Вот вроде как нормальная доработанная версия. iter напрямую больше нет нужды вызывать, отсутствующие значения тоже заполняются. Можно делать что-то вроде:
for u, x, y, z in numbered(range(255), 4, default=0):
print(sum((u, y, z)))
Аноним 04/08/20 Втр 20:51:57 1768530308
>>1768505
А у тебя задача какая?
Из цикла можно просто через break выйти без флага, а сам цикл while True.
Аноним 04/08/20 Втр 22:16:14 1768549309
хочу сделать бота для бесед (подчеркивание, бесед), но код (мне нужен конкретно его суммон) из гайдов 2017-ого года (ибо новее гайдов нету) устарел. заранее спасибо
Аноним 04/08/20 Втр 22:54:17 1768567310
>>1768549
И что ты хочешь, чтобы кто-то за тебя написал?
Кури доки.
Аноним 04/08/20 Втр 22:59:41 1768570311
>>1768567
ИТТ каждый третий такой
"Хочу готовое решение, нихуя не умею, в ангельский не умею, вот".
Бич питона. Даже не знаю, где ещё такой идиотизм есть. Видимо только только с питоном, спасибо инфоцыганам. Коллега без знания всего хвастался торговым ботом, который построен на if-else и жаловался, что питон медленный, лол. Все хотят здесь и сразу. Сразу стать миддлом и 150кк в наносекунду.
Про архитектуру приложений и паттерны никто и не слышал. Думали тут как на пехе, просто добавь воды говнокод
Аноним 04/08/20 Втр 23:04:27 1768572312
>>1768570
>Про архитектуру приложений и паттерны никто и не слышал.
Слышал только про паттерны PIDOR и MVC. Я успешен?
Аноним 04/08/20 Втр 23:17:06 1768577313
>>1768570
Анончик, подскажи, я видел многие намекали что if-else типа хуевая структура организации кода, а как реальные пацаны пишут тогда? Во что она эволюционировать должна? Я максимум до чего дорос - тернарный if.
Аноним 04/08/20 Втр 23:18:49 1768578314
>>1768577
Он о том, что бизнес-логика, построенная на ветвящихся if - однозначный признак говнокода
Аноним 05/08/20 Срд 01:59:33 1768627315
>>1768572
Ну для жангодебила хватит, пиздуй DRF макакой работать или CRUDы дрочить. Через пару лет завезут кривую асинхронки и комбайн снова начнет работать, а потом начнутся очередные бенчмарки без проксирования с черрипикингом, где жанга ПОЧТИ догонит ноду и не совсем Go, мхех
Аноним 05/08/20 Срд 02:11:53 1768632316
>>1768577
Да хоть свитч сделай (обещали в 3.9, лол. Таки дошло до Гвидо) через dict/enum.
Один хуй когда логика более чем "if my_date != date.today(), и состояний объекта может быть на цикл более чем 5 if-else уже нужен рефакторинг, иначе будет спагетти-код, ещё и сам запутаешься.
Ты думаешь многие советуют из-за ЧСВ? Просто сами столкнулись в своем/чужом коде с таким. Лучше заранее соломку подстелить.
В начале можешь хуячить и так. Правда потом обиднее лезть в старый код, вспоминать какая была первоначальная идея и снова писать тесты.
Это реально обидно и времени ещё больше отнимет.
Аноним 05/08/20 Срд 09:56:16 1768706317
>>1768632
switch давно реализуется через dict вида:

selecter = {
"first": lambda x: 2x,
"second": lambda x: custom_process(x),
"third": lambda x: not x
}
result = selecter[option](input_data)

Че там этот Гвидо подвозить собрался?
Аноним 05/08/20 Срд 10:30:12 1768715318
>>1768570
>Думали тут как на пехе
В 2005 году. Современный боевой пых - это джава с динамической типизацией, ООП, SOLID, паттернами и прочим.
Аноним 05/08/20 Срд 10:34:26 1768717319
Аноним 05/08/20 Срд 10:51:45 1768726320
>>1768715
>ООП, SOLID, паттернами и прочим
Пощади, ирод
Пыхобляди это вообще особый подвид долбоебов. Понагородили в динамически типизированном языке многоэтажных конструкций лишь чтобы выебнуться и заодно доказать самим себе что они почти "белые люди" (джависты). Тот еще цирк

мимо жсмакака
Аноним 05/08/20 Срд 10:52:50 1768727321
>>1768706
Нихуя ж себе - надо записать!

Может тогда объясните как вот эта хуета работает ?

def wind_direction(deg):
direction = {0 <= deg < 20: "N",
20 <= deg <= 30: "N/NE",
...
...
...

320 < deg <= 340: "N/NW",
340 < deg <= 360: "N"}[True]
return direction
Аноним 05/08/20 Срд 10:57:58 1768730322
>>1768726
Когда мне кстати кто угодно начинает предъявлять за solid, я сразу же понимаю что это attention whore с двумя извилинами. Это что-то на уровне предъяв за 5ю нормальную форму БД
Аноним 05/08/20 Срд 11:33:35 1768776323
>>1768727
Ты просто вернул словарь весьма странного содержания вот и все
Switch что через словарь что в том же си обеспечивает быстрый доступ к процедуре и порой лучшую читаемость через параметр case. В твоем случае case в любом случае должен быть вычислен до доступа к словарю. И тут внезапно вычислять его таки надо через if. Switch тут бесполезен
Хотя в твоем случае ты вообще не туда воюешь. Тебе надо банально решается математически. Вот у тебя есть окружность и 1722 равных по величине сектора. Ты серьезно собрался хуярить 1722 if-а либо 1722 case-а? Вот тут мы и подходим к вопросу, что огромное число if-ов говорит о тупости прогера в первую очередь
Аноним 05/08/20 Срд 11:40:07 1768781324
>>1768572
кста а есть репозиторий на паттерн PIDOR?
Аноним 05/08/20 Срд 11:44:21 1768789325
>>1768776
Самое очевидное что у меня на уме на жанный момент это разновидность бинарного поиска: берем середину окружности (средний сектор, если быть точнее) и проверяем больше или меньше значение deg, отрезая таким образом половину вариантов. Повторяем по новой пока не получим единственныф сектор
Призываются математики, способные решить задачку без циклом лишь на бумаге...
Аноним 05/08/20 Срд 11:51:21 1768803326
>>1768789
Либо: создаем массив элементов Decimal от 0 до 360 с шагом base = 360 / n (n - число секторов). Все ответы у нас уже в руках то бишь. Ищем index элементов, между которыми попадает deg
Но это по-прежнему решение от дауна-прогера. Уверен, математически это будет легче
Аноним 05/08/20 Срд 11:55:35 1768808327
>>1768776
Да это понятно что метод каличный, я не понимаю что за хуйня [True] после словаря идёт? Это можешь объяснить, пожалуйста?
Аноним 05/08/20 Срд 12:20:18 1768832328
Двач помогай. Кинули таску для перехода на другую должность. В итоге требуется -
С помощью Python разработать программу,которая выполняет следующие действия:
1.Открывает браузер
2.Осуществляет переход на google.com
3.В поисковой строке вводит слово "новости", после чего выполняется поиск по заданному слову
4.На открывшейся странице выполняется переход на раздел "новости"
5.Вывести в терминале заголовок случайной новости в пределах первой страницы

Получилось только сделать первые два пункта. Как дальше работать со страницей в браузере понятия не имею,подскажите как гуглить эту задчку
Аноним 05/08/20 Срд 12:24:26 1768838329
>>1768832
На какую еще должность ты там переходить собрался?

selenium епта
Аноним 05/08/20 Срд 12:26:01 1768840330
>>1768838
надо на питоне онли
Аноним 05/08/20 Срд 12:26:46 1768842331
>>1768808
Поиск по ключу True, что в большинстве случаев бред само по себе
Кто это навалял? Чтоб код работал надо при каждом новом значении deg инициализировать новый словарь. If и то профитнее
Аноним 05/08/20 Срд 12:29:00 1768850332
Аноним 05/08/20 Срд 13:16:21 1768900333
Аноним 05/08/20 Срд 13:20:12 1768903334
>>1768627
Учи жангу чтобы не быть батхёртом, чел
Аноним 05/08/20 Срд 13:59:12 1768980335
>>1768900
Тебе дают все ключи в руки, ты же как и сказано в >>1768570
хочешь на все готовенькое
Аноним 05/08/20 Срд 14:23:01 1769018336
Slowpoke.png 19Кб, 200x218
200x218
>>1762623 (OP)
Анон, напомни, пожалуйста, как решать следующие задачи.
Есть список (например, из 22 элементов), есть окно (например, из 5 элементов, т.е. длина списка не делится нацело на длину окна).
Надо окном извлечь все элементы из списка, включая последние два, которые это окно полностью не заполняют. Как это сделать?
Аноним 05/08/20 Срд 14:27:26 1769027337
Аноним 05/08/20 Срд 15:00:03 1769111338
>>1768842
теперь понял, спасибо
Аноним 05/08/20 Срд 15:48:06 1769192339
>>1768726
>мимо жсмакака
ясно
Аноним 05/08/20 Срд 16:49:29 1769226340
>>1769192
Что тебе ясно, ребёнок?
Аноним 05/08/20 Срд 16:55:31 1769237341
>>1768493
Когда ты хочешь, чтобы модуль по разному себя вел, когда ты его импортируешь из другого модуля, и когда ты запускаешь этот модуль как самостоятельную программу. Код в блоке после строчки "if __name__ == '__main__':" будет выполняться только, когда ты запускаешь данный модуль как основную программу, а когда ты импортируешь этот модуль из другого модуля, этот код выполняться не будет
Аноним 05/08/20 Срд 16:56:12 1769238342
изображение.png 4Кб, 350x92
350x92
Аноним 05/08/20 Срд 17:11:58 1769245343
>>1767817
>прошёл курс на курсере бесплатный от вшэ
И как оно?
Аноним 05/08/20 Срд 17:13:42 1769246344
Аноним 05/08/20 Срд 17:24:27 1769248345
>>1769245
Как первый курс, когда ничего не знаешь - ОК (если жопа не сгорит на тестовых заданиях), если есть основы - такое себе.
Аноним 05/08/20 Срд 18:01:33 1769263346
11.png 43Кб, 1109x321
1109x321
>>1768980
ладно.был не прав. и вправду через селениум делается. но все равно не могу доделать таску. застрял на том,как рандомно вывести заголовок новости в консоль.
подскажите хоть как примерно это реализовать?
сорян за скрин кода,а не в pastebin
Аноним 05/08/20 Срд 18:22:56 1769274347
>>1769238
пока только в голову пришли вложенные классы и properties
Аноним 05/08/20 Срд 18:24:40 1769276348
>>1769263
Зарплату будем на всех делить?
Аноним 05/08/20 Срд 19:18:59 1769309349
>>1769276
мне мне 100% те 0%

// мимокрокодил
Аноним 05/08/20 Срд 19:26:47 1769316350
Привет, друзья

Изменилось ли что-то в Питоне?

Почему код из __init__.py не исполняется неявно при исполнении модуля?
Аноним 05/08/20 Срд 19:29:07 1769317351
>>1769263
Получи список заголовков, а потом выбирай с помощью функции choice из стандартного модуля random
Аноним 05/08/20 Срд 19:32:47 1769318352
>>1767817
automating boring stuff
годнота штоле? уже второй в треде про это пишет
Аноним 05/08/20 Срд 19:37:40 1769322353
Аноним 05/08/20 Срд 19:49:56 1769325354
>>1769318
Хорошо для хоббистов или всяких тыжпрограммистов, можно найти решения для типовых задач. А так ничего особенного.
Аноним 05/08/20 Срд 20:09:31 1769338355
>>1769325
>>1769318
Каждому питонисту в том или ином виде стоит ее прочитать. Но всерьез думать, что это сделает тебя YOBA-разрабом - быть дауном
Для более глубокого погружения стоит читать Python Cookbook от Бизли (ебана, уже полгода работаю на галере, но иногда таки возвращаюсь к этой книге, действительно набор годных рецептов есть). А так - начинай потом хуярить доки фреймворков, которые тебе нужны и сразу же параллельно пиши на них свои проекты, учись на практике и не корми инфоцыган
Аноним 05/08/20 Срд 20:12:46 1769343356
>>1769338
ну python cookbook это само собой тем более шо от бизли, решил узнать шо анон нашел в этой книге, а так спасибо за ответы
Аноним 05/08/20 Срд 20:35:41 1769361357
Slowpoke.png 19Кб, 200x218
200x218
>>1769018>>1769027
Смотри, есть список
list = [1,2,3,4,5,6,7,8,9, 10,11,12,13,14,15,16,17,18,19, 20, 21, 22]
Мне во время прогона на первой итерации надо получить такое окно/срез [1,2,3,4,5], на второй [6,7,8,9,10], на третьей [11,12,13,14,15] и так далее.
Окна не пересакаются.
Аноним 05/08/20 Срд 20:38:53 1769363358
>>1769361
for frame in numbered(list, 5, default=0):
----print(frame)

comprende?
Аноним 05/08/20 Срд 20:40:39 1769366359
Аноним 05/08/20 Срд 20:47:31 1769368360
>>1769361
for i in range(0, len(list), 5):
__print(list[i:i+5])
Аноним 05/08/20 Срд 20:50:44 1769370361
>>1769368
---->print(list[i::i+5])

TypeError: 'type' object is not subscriptable
Аноним 05/08/20 Срд 20:52:04 1769373362
>>1769370
Ну так выбери нормальное имя, дурень.
Аноним 05/08/20 Срд 20:55:17 1769377363
>>1769373
Да это ж очередной недовкатывальщик, лишний раз извилину напрячь не хочет, забей
Аноним 05/08/20 Срд 20:55:51 1769378364
Аноним 05/08/20 Срд 20:57:10 1769379365
>>1769368
while len(list):
____print(list[:5])
____list = list[5:]
Аноним 05/08/20 Срд 20:59:30 1769382366
>>1769370
>>1769379
[list66[i:i+5] for i in range(0, len(list66), 5)]
>>1769377
У меня бывают прострелы, что простое вгоняет в ступор.
Всем спасибо.
Аноним 05/08/20 Срд 21:03:00 1769385367
КОК КУКАРЕК УЧИМ НЕ ЯЗЫК А ПОГРОМИРОВАНИЕ!1 ПСЕВДОКОКОКОД!!
@
TypeError: 'type' object is not subscriptable
Аноним 05/08/20 Срд 21:23:53 1769398368
>>1769382
>оправдываться на ссаче
Аноним 05/08/20 Срд 21:39:01 1769405369
>>1769368
>>1769363
>>1769370
Так, а если есть отсортированный по возрастанию словарь (у каждого ключа одно значение типа int, но значения могут совпадать) и мне аналогичным образом надо брать условные 5 значений и получать их ключи, потом следующие 5 и т.д.?
Аноним 05/08/20 Срд 21:43:20 1769407370
>>1769405
Спасибо, уже не надо.
for i in range(0, len(sorted_dict), 5):
dict_slice = list(sorted_dict.keys())[i:i+5]
Аноним 05/08/20 Срд 21:50:51 1769412371
>>1769385
a = list
for elem in a:
print(elem)

Ты определил тип, но на задал начально значение переменной, отсюда и ошибка. Хули тупишь? Ты бы и в жаве и Go говнокодил.
Аноним 05/08/20 Срд 21:52:19 1769414372
>>1769385
Так это ты петух зарезервированные имена для переменных используешь? Ох, мудила...
Аноним 05/08/20 Срд 22:36:05 1769438373
Хочу попробовать поработать с вебом и БД, вопрос, какая самая частая БД для питончика? Или такой нет? То что видел, используют PostgreSQL.
Аноним 05/08/20 Срд 22:36:29 1769439374
>>1769368
Бле, всегда казалось что срез выплюнет ошибку, если значения выскочат за индекс листа - ан нет, работает =.=
Аноним 05/08/20 Срд 22:40:43 1769443375
>>1769438
Лучше над выбором orm и движка задумайся
Аноним 05/08/20 Срд 23:04:34 1769450376
>>1769438
С точки зрения производительности Postgres, возможно еще Percona/MariaDB, но вот этот >>1769443
прав. Сразу ORM и тогда никакой ебли с БД не будет.
Сразу же создаешь таблицы по сути и определяешь связи.
Аноним 05/08/20 Срд 23:25:42 1769464377
Кек, пишу тут незамысловатый серверный код как при перезапуске кода эта срань мне выдает:

OSError: [WinError 10048] Обычно разрешается только одно использование адреса сокета (протокол/сетевой адрес/порт)

То есть этот петух сделал app.listen(8888) как я его и просил, но после перезапуска сокет 8888 остался занятым. Че за хрень? Как его "почистить"? (это винда если че)
Аноним 05/08/20 Срд 23:52:46 1769480378
>>1769464
а ты сокет закрываешь перед перезапуском?
Аноним 05/08/20 Срд 23:57:19 1769482379
>>1769480
Явно - нет. Раньше вроде без этого обходилось и все работало, а сейчас че-то он не закрылся
Где в винде его вручную ебнуть?
Аноним 06/08/20 Чтв 00:00:33 1769483380
>>1769482
У него есть время, которое он будет занят, что-то около 3 минут. Чтобы пакеты все дошли.
Аноним 06/08/20 Чтв 00:23:15 1769494381
Аноним 06/08/20 Чтв 00:46:25 1769500382
>>1769482
Посмотри, не висят ли питоньи процессы.
Аноним 06/08/20 Чтв 00:50:07 1769502383
Аноним 06/08/20 Чтв 03:29:35 1769530384
image.png 17Кб, 446x324
446x324
Аноним 06/08/20 Чтв 03:31:13 1769531385
image.png 18Кб, 467x328
467x328
> None
Охуеть
Аноним 06/08/20 Чтв 07:25:38 1769571386
>>1769531
>ORM
Его нет смысла использовать в программе на пару тысяч строк.
Аноним 06/08/20 Чтв 11:01:29 1769643387
image.png 20Кб, 926x570
926x570
язык вкатывальщиков и джунов
Аноним 06/08/20 Чтв 11:06:45 1769646388
>>1769643
скорее дата сатанистов и девопсов ну и прочих кому надо два раза ударить хуем по клаве и сделать скрипт
Аноним 06/08/20 Чтв 11:36:20 1769667389
Знает кто инструмент для анализа кода на не обработанные эксепшоны? Код анализатор ака mypy/flake, только для поиска необработанных ошибок.
Аноним 06/08/20 Чтв 11:38:49 1769670390
Хочу заниматься беком. Прошел пару курсов по основам питона, научился во всякие типы данных, классы, функции и прочие основы основ.
Думаю что делать дальше, как перейти от консольных программ по типу "посчитай сколько в телефонной книге Ивановых не считая Иван Ивановичей" к чему-то серьезному. Джангу/фласк учить или задрочить стандартную библиотеку чтоб от зубов отскакивало или что еще?
Аноним 06/08/20 Чтв 11:40:38 1769673391
Аноним 06/08/20 Чтв 12:49:59 1769760392
>>1769670
Учи фреймворки(синхронные и асинхронные), пиши сервисы с ними и всё будет ок. Параллельно с этим основные библиотеки выучишь.
Аноним 06/08/20 Чтв 13:39:14 1769829393
langfuck.jpg 75Кб, 726x811
726x811
Ананасики, выручайте. Проблема в интегрированном переводе стандартных форм в джанге. Как видете половина текста по-русське, вторая на ангельском. Как чинить?
Аноним 06/08/20 Чтв 14:12:17 1769856394
>>1769829
Добавь переводы. У неё есть поддержка gnu gettext.
Аноним 06/08/20 Чтв 14:29:19 1769870395
Есть словарь вида
dict1 = {'a' : (1, 2), 'b': (1, 5)...}
Надо отфильтровать словарь по определённому условию, например, если первый элемент значений в промежутке от 1 до 10.
Пробую:
dict2 = {key:val for key, val in dict1.items() if val[0] >=1 and val[0] <=10}
Пробую len(dict2), а он мне 0 выдаёт.

Что не так?
Аноним 06/08/20 Чтв 14:35:51 1769878396
>>1769856
Как это сделать? Объясни тупому, пожалуйста
Аноним 06/08/20 Чтв 14:46:44 1769895397
>>1769870
[0] там точно нужно ?
Аноним 06/08/20 Чтв 14:46:45 1769896398
>>1769870
По сути всё правильно.
Должно работать, где-то ты обосрался.
Аноним 06/08/20 Чтв 14:48:15 1769898399
>>1769895
а, да, туплю ))
Может переберешь просто словарь первый в цикле и через условие прогонишь? Добейся чтобы так работало, потом засунешь уже в такую форму
Аноним 06/08/20 Чтв 14:50:55 1769902400
>>1769870
С типами значений словаря все ок?
Аноним 06/08/20 Чтв 14:56:19 1769908401
>>1769902
>>1769896
Если убрать условие, то он возвращает целый словарь, как и надо.
Если написать {val[0] for key, val in dict1.items()}, то он возвращает первые элементы.
Вроде по отдельности работает, а вместе не очень.
>С типами значений словаря все ок?
Ключи - str, значения int'ты или float'ы
Аноним 06/08/20 Чтв 14:59:58 1769912402
Аноним 06/08/20 Чтв 15:01:01 1769914403
функция.PNG 5Кб, 365x105
365x105
Есть вот такая функция. Задание, доработать что бы можно было вызывать с ещё одним параметром - кратностью (величиной шага), который по умолчанию будет равен 1.
Параметр то добавить я могу...
Не понимаю, что от меня вообще хотят.
Что эта функция должна делать в конечном итоге?
Аноним 06/08/20 Чтв 15:52:56 1769968404
>>1769914
ну добавь и запихни в range после hight чтоб было range(start,stop,step). Функция выглядит как пустышка абсолютная которая циклит до ручного интерапта.
Аноним 06/08/20 Чтв 15:53:38 1769969405
>>1769914
Откуда задание? Явно из контекста вырвал.

Есть диапазон 0,1,2,3,4,5.
Тебя просят просто ввести число из него? Похоже что так. Какой дальше алгоритм знаешь только ты... Потому что... вырвано из контекста
Аноним 06/08/20 Чтв 15:54:17 1769970406
Screenshot 2020[...].png 51Кб, 1582x198
1582x198
Screenshot 2020[...].png 43Кб, 996x354
996x354
>>1769829
>>1769856

удивительное говно. Меняю текст в файле с переводами django.po, конвертирую его с помощью fmtmsg в djnago.mo и изменения на странице появляются, но при этом как на половину была форма переведена, так и осталось
Аноним 06/08/20 Чтв 15:56:14 1769971407
Аноним 06/08/20 Чтв 16:03:57 1769979408
Снимок.PNG 88Кб, 1089x357
1089x357
>>1769968
>>1769969
Спасибо кто отозвался.
Эта функция из игры крестики-нолики, она должна принимать номер "поля" (списка из 9 элементов) и возвращать его. Глава про написание своих функция и их взаимодействие.
За ней следуют эти задания.
При чём тут шаг который по умолчанию равен 1...
Аноним 06/08/20 Чтв 16:12:25 1769993409
>>1769979
Ну в range шаг по умолчанию и так равен 1, я хрен знает что за секретная у тебя такая книга, что ты только куски показываешь. видимо все действия приведут к единому приложению.
Аноним 06/08/20 Чтв 16:22:12 1770007410
>>1769993
Книга - Программируем на Python, автор Майкл Доусон
Аноним 06/08/20 Чтв 16:28:58 1770018411
Аноним 06/08/20 Чтв 16:37:24 1770031412
>>1770018
Эта функция как из первой, так и из второй игры.
Страница 185 в вышеупомянутой книге.
Аноним 06/08/20 Чтв 16:45:36 1770037413
image.png 756Кб, 650x616
650x616
>>1769670

Prepare your anus! Fight!

lvl 0. знать о docstring, pep8, стандартные либы, особенно всякие collections, asyncio, functools, socket, queue и т.д.
lvl 1. ознакомься с попурярными алгоритмами (сортировка и поиск) и структурами данных, как они устроены, поделай свои связанные списки, деревья, но глубоко не залезай, оно тебя сожрет
lvl 2. базы данных, postgres, советую задрочить индексы, потренеруйся с сложными запросами, всякими join и прочим
lvl 3. сделай 5-10 полноценных проекта на django, django-rest, django-channels, интернет магазин там какой нибудь, https://github.com/Hexlet/ru-test-assignments
lvl 4. git, docker, travis и покрыть тестом свой же код pytest, unittest (ради зелененьких бейджов в гите, ы)
lvl 5. читаешь "карьера программиста", много вопросов покрывает для собесов
lvl 6. пиздуешь по собесам, нарабатываешь скилл прохождения, корректируешь скиллы, решаешь задачки на leetcode

и да, не советую говнокодить в git, проекты тут должны быть как ебаный алмаз, даже самые простые типа ЕБУЧИЙ-ТУДУ. как минимум должно быть внятное README, без всякого говна в репозитории, скрытых папок типа .idea и прочего дерьма. переменные окружения держи в env...
короче советов дохуя можно дать, тебе главное нарабатывать свой опыт, наступать на грабли. учится и кодить, кодить и учится.
Аноним 06/08/20 Чтв 16:47:17 1770041414
>>1770018
Более того, я и не собирался её "дорабатывать" для крестиков-ноликов.
Первое задание указано безотносительно какой-то игры. Просто доработать функцию. Этой функции можно указать дефолтный параметр step = 1.
Я не могу понять, какую задачу такая функция должна выполнять и что они вообще хотят.При чём тут вообще шаг, если функция просто запрашивает аргумент - целое число для переменной response. до тех пор пока он не в заданном диапазоне. При чём тут какой-то шаг!?
Аноним 06/08/20 Чтв 17:08:16 1770056415
У меня есть словарь, который представляет querystring в url-запросе, с помощью чего его можно оперативно преобразовать в query строку?
Аноним 06/08/20 Чтв 17:11:39 1770058416
>>1770041
Надо посмотреть оригинал, что там долбоебы напереводили.
>>1770056
Ищи в urllib3, очевидно же.
Аноним 06/08/20 Чтв 19:23:18 1770181417
Работающие питонисты, у вас много баб в разработке сидит? Как они себя ведут? Скрепляют коллектив или наоборот дезорганизуют?
Аноним 06/08/20 Чтв 19:56:52 1770198418
изображение.png 1303Кб, 784x1145
784x1145
изображение.png 449Кб, 475x693
475x693
Аноны, занимался кто скрапином пикч с помощью Селениума? На сайте все пикчи в блобах, причем просто так их не откроешь, решил копировать URI изображения, а потом пихать обратно из base64 в пикчу, но какого-то хуя оно вместо первого пика выдает второй, если выполнить в браузере тот же ЖС код, который преобразовывает пикчу в б64 - выдаст или первый пик, или его же, но с небольшими краями. Что делаю не так, или как лучше сделать?

https://ideone.com/40MBo4 - код
https://mangaplus.shueisha.co.jp/viewer/1007477 - сайт что пытаюсь парсить
Аноним 06/08/20 Чтв 20:06:49 1770208419
>>1770198
Я тупой, оно брало flex высоту и по ней обрезало изображение, если задать ручками то вроде норм
Аноним 06/08/20 Чтв 20:23:30 1770222420
>>1770198
Ебать там передовой вротэнд, надо будет поковырять.
Аноним 06/08/20 Чтв 21:16:54 1770281421
>>1762623 (OP)
Какой пэт проект заебашить, чтобы он был максимально полезен при устройстве на работу?
Аноним 06/08/20 Чтв 21:23:22 1770284422
Аноним 06/08/20 Чтв 22:01:00 1770315423
>>1770284
Ну хотя бы направление? Джанго или как-то в опен сорс проект попробовать заехать или еще че-то?
Аноним 06/08/20 Чтв 22:05:46 1770319424
>>1770315
микросервисный бигдата блокчейн по торговле криптопирожками у вокзалов с машинным обучением
Аноним 06/08/20 Чтв 22:06:20 1770322425
Аноним 06/08/20 Чтв 22:15:02 1770330426
>>1770322
Без шуток, если нахуяришь как можно больше хипстерских технологий и оно будет работать, тем охотнее жадный кабанчик пустит тебя приностить ему бабки.
Аноним 06/08/20 Чтв 23:06:20 1770371427
>>1770041
Это сраный учебник. Просто для тренировки может быть.
Аноним 06/08/20 Чтв 23:16:20 1770376428
>>1770222
Да пиздец, наворотили хуйни, чтобы просто так сохранить пикчи нельзя было, в итоге ебаная читалка просто шакалила картинки, которые у них же в нормальном качестве. Добавили разрешение пикч - все равно у некоторых шакалит, ууу, сука.
Аноним 07/08/20 Птн 00:06:11 1770391429
В чем суть реализации чата для двух человек через вебсокеты? Хотелось потренить вебсокеты неважно на каком питон-фреймворке, но че-то не въезжаю как вебсокет ставит коннект между двумя пирами? Коннект же между сервером и клиентом только
Аноним 07/08/20 Птн 00:49:44 1770414430
>>1770391
ну ёпта, дай каждому клиенту свой сервер))
Аноним 07/08/20 Птн 09:02:57 1770506431
Помогите с сигналами. Не отправляет почту, если указывать адрес из модели, если указывать обычный емаил - норм.

ошибка из дебага "sequence item 0: expected string or Unicode django"

user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=LABELS['user'])

@receiver(post_save, sender=MyModel, dispatch_uid='active')
def active(sender, instance, kwargs):
if instance.note and MyModel.objects.filter(pk=instance.pk, user=instance.user, note=True).exists():
email = EmailMessage(
subject='%s Тема' % settings.EMAIL_SUBJECT_PREFIX,
body=('%s измененна ' % (instance.pk)) + (instance.message),
to=[instance.user],
)

email.send()
post_save.connect(active, sender=MyModel, dispatch_uid='active')
Аноним 07/08/20 Птн 09:45:56 1770532432
>>1770391
Кто послал запрос на соединение, тот и клиент.
>>1770506
Так у тебя instance.user - это же модель, не? Может тебе надо указать что-то вроде to=[instance.user.email]?
Аноним 07/08/20 Птн 09:59:30 1770551433
>>1769970
>>1769829
Проблему решил. Оказывается в джанге кривой русский перевод в стандартных формах аутентификации, хуй знает чем это объяснить. Чтобы починить частичный перевод нужно найти проблемные строки msgid на английском и закопипастить их заново, затем сконвертировать файл с переводом в бинарик с помошью msgfmt -- и вуаля. Надо им ишью зарепортить, охуели блядь.
Аноним 07/08/20 Птн 10:06:12 1770558434
Какая у вас бд на бэке идет чаще всего, postgre?
Аноним 07/08/20 Птн 10:11:37 1770570435
>>1770532
>instance.user.email
Благодарю, юзер и емаил в основном совпадают.
Аноним 07/08/20 Птн 12:24:53 1770725436
Аноним 07/08/20 Птн 12:33:04 1770745437
Аноним 07/08/20 Птн 13:33:34 1770855438
Для меня тут пару дней назад стало откровением что range не является итератором, а является итерируемым объектом
Разница-то сука ключевая (но большинству как и мне скорее всего не придется с этим столкнуться): если создать объект через obj = range(10) то по нему нельзя будет пройтись, вызывая next(obj) - с другими итераторами все работает, например с itertools.cycle
07/08/20 Птн 15:17:42 1770975439
Планирую конкретно в data science, big data и нейросети углубляться, какие направления и полезную литературу посоветуете?

Аноним 07/08/20 Птн 16:06:12 1771018440
У меня тут немного ебанутая мысль но все же: как замутить структуру по типу словаря, в которой ключ сссылается на другой ключ, либо на None? Очевидно что это можно сделать "в тупую" просто продублировав строки вроде
{"key1": "key2", "key2": "key1"}
По-другому никак?
Аноним 07/08/20 Птн 16:22:49 1771040441
Как выбрать курс по питону для вката в data science? Язык русский или англ. Базу питона норм знаю.
Аноним 07/08/20 Птн 16:25:42 1771047442
>>1771018
По-другому никак, но вероятно строки и так будут лежать в одном месте в памяти, так что это оно и есть.
Аноним 07/08/20 Птн 17:36:04 1771171443
>>1770037
писать на django в 2к20? ты ебобо?
Аноним 07/08/20 Птн 17:50:20 1771189444
Аноним 07/08/20 Птн 18:22:24 1771234445
>>1770975
Сначала учишь pandas наизусть (это означает, что ты должен будешь знать все методы наизусть, а не открывать стак каждый раз)

Потом всякие skikitlearn'ы и прочие тензерфлоуы
Но ключевой библиотекой будет pandas
Аноним 07/08/20 Птн 18:31:23 1771237446
>>1771234
Нихуя ты жоский. Нормальные люди сначала смторят доку и стак каждый раз, и через время знают все методы наизусть.
Аноним 07/08/20 Птн 19:45:39 1771309447
>>1771171
А че такого?
п.с. сам-то я на джанге не пишу, но интересно что тебе так не приглоянулось в нем, для своих задач норм же
Аноним 07/08/20 Птн 20:24:11 1771327448
15917385397670.png 246Кб, 684x369
684x369
>>1762623 (OP)
Так, значится... У меня небольшая идея по написанию "чата с незнакомцем": юзер заходит на основную страницу ресурса и коннектится с другим таким же юзером, теперь у них двоих приватный чат, где они могут общаться и даже пересылать фотки хуев, если надо. Это то, что происходит на фронте

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

А теперь мякота: КАК это намутить? Вот подобие каркаса, который я накидал:
https://pastebin.com/ibjYWSZj
я выбрал tornado, но это вообще не суть, принцип бизнес-логики везде должен быть один; MainHandler принимает post-запрос в котором лежит рандомно сгенерированная на фронте строка, кладет ее в общий пул waiting и начинает каждые 0.1 секунды вытаскивать из этого пула рандомное значение (гениально, правда? пиздец, если быть точнее, белый человек сделал бы асинхронную очередь и ожидал бы данные через await (учитывая конечно что в пуле будет точно лежать тот самый идентификатор тоже)) когда значение таки подберется, мы помечаем строки-идентификаторы как занятые, убираем их из пула waiting и запиливает вебсокет-соединение: по одному на каждого юзера (то есть юзер отсылает данные на сервер через вебсокет, серв читает сообщение и пересылает его в другой "спаянный" вебсокет второму юзеру, и наоборот)

Норм? Че пофиксить?
Аноним 07/08/20 Птн 20:31:35 1771333449
>>1771327
Также я вот тут писал про ебанутый вид словаря: >>1771018
Он конечно же нужен, чтобы хранить там парные соединения для вебсокетов. Идентификатор1 ссылается на Идентификатор2 и наоборот, каждый из них можно легко найти по нему же как по ключу. Когда удаляется один ключ, удаляется и второй. Чтобы установить идентификаторы достаточно установить лишь один из них как:
pool = PairedConnections()
pool[idn1] = idn2
Операция pool[idn2] = idn1 выполнится самостоятельно
Конечно же надо учитывать, что соединение может быть "в состоянии ожидания" и ссылаться на None. В таком случае пары у нее нет

Вот код основанный на питоновском словаре, судя по тесту в конце вроде работает:
https://ideone.com/U9VZ03
Аноним 07/08/20 Птн 20:35:19 1771340450
Продолжаю писать ебучий скрапер с >>1770198 , столкнулся с тем, что оказывается с недавнего времени развороты на 2 страницы представляются 2 разными изображениями рядом друг с другом, а не одним большим. Какой самый простой способ проверять является ли одно изображение продолжением второго? Единственное что приходит в голову - какая-нибудь простенькая нейронка на каком-нибудь тензорфлоу, но никогда особо этим не занимался.
Аноним 07/08/20 Птн 21:35:17 1771391451
>>1771340
>Какой самый простой способ проверять является ли одно изображение продолжением второго? Единственное что приходит в голову - какая-нибудь простенькая нейронка на каком-нибудь тензорфлоу, но никогда особо этим не занимался
Мне кажется это будет не простая, а ебейщая нейросетище
Аноним 07/08/20 Птн 21:45:07 1771397452
>>1771340
>Какой самый простой способ проверять является ли одно изображение продолжением второго?
Считаешь разницу RGB между соседними пикселями (один пиксель на одном изображении, второй на другом), усредняешь значение для всех пикселей на границе изображений. Если разница небольшая, то изображения являются продолжением друг друга.
Аноним 07/08/20 Птн 23:06:48 1771463453
>>1771391
Да хуй знает, я для универа простые на тензорфлоу делал, а тут вроде просто классификация изображений, по ним материала дохуя везде, главное обучающую выборку сделать.

>>1771397
Спасибо, анон, попробую так сделать.
Аноним 07/08/20 Птн 23:21:46 1771476454
Аноним 08/08/20 Суб 03:38:08 1771597455
15943201959020.jpg 202Кб, 858x877
858x877
Пагни, всем Спасибо за помощь этому посту который заебал всех. Вроде все всех устроило пока.
Сделал тупо по mock библиотеке и замокал класс. Тупо, но что хотели, то получили.

>>1764675

Аноним 08/08/20 Суб 13:11:04 1771716456
Аноним 08/08/20 Суб 13:12:20 1771717457
Аноним 08/08/20 Суб 13:16:38 1771719458
Аноним 08/08/20 Суб 13:31:29 1771724459
Господа, какую orm выбрать, чтобы потом работу найти? SQLAlchemy пойдет?
Аноним 08/08/20 Суб 13:59:15 1771746460
>>1771717
Тоесть у тебя всплывает окно операционной системы, в которую ты хочешь ввести символы с помощью инструмента для работы с браузером, я все правильно понимаю?
Аноним 08/08/20 Суб 14:02:26 1771750461
посоны, что заюзать для генерации excel файла? openpyxl норм?
Аноним 08/08/20 Суб 14:46:46 1771804462
Зачем писать python -m? Что такого этот -m дает?
Аноним 08/08/20 Суб 14:52:30 1771814463
https://ideone.com/4ANhcl
Пацаны, я тут провел исследование насчет дейтвия try/except и if. Если эксепшнов мало, то try/except блок быстрее примерно на 20%, а если же эксепшны вылетают постоянно, то отсос try/except составит в 1200% и более епта. В примере выше for через if выполнился за ~2 секунды, а тот же for через try за 25 с...
Аноним 08/08/20 Суб 14:53:03 1771816464
>>1771804
да забей это хуйня, если запускаешь скрипт из той же директории то не надо, -м дает возможность исполнить скрипт импортировав как модуль,
python zalupa/govno/pizda.py
python -m zalupa.govno.pizda
вот эти 2 хуйни делают по сути одно и тоже
Аноним 08/08/20 Суб 14:55:42 1771824465
>>1771814
интересно, а если не сохранять данные об эксепшоне в е, а просто экцепт:пасс будет такая же разница?
Аноним 08/08/20 Суб 14:59:13 1771838466
>>1771824
Разница в 1.5 с. Ни о чем
Аноним 08/08/20 Суб 15:00:58 1771844467
>>1771838
Не ну в целом то оно конечно понятно, там же внутренности по сути поднимаются, а не просто пару проверок на истиность, но цифры действительно внушительные
Аноним 08/08/20 Суб 15:09:57 1771864468
image.png 4Кб, 717x84
717x84
Прочитал как "отрезки пенисов длиной не более". Я обдвачевался?
Аноним 08/08/20 Суб 17:40:49 1772074469
как опеределить количество запросов, которые моя борда сможет обработать? пошел по пути к успеху из пасты
Аноним 08/08/20 Суб 18:11:45 1772092470
>>1762623 (OP)
Как перейти к созданию ботов? Я недавно начал изучать питон, какие-то основы понимаю, но вот мне сказали что для ботов нужно учить библиотеку, я открываю нужную библиотеку с описанием модулей типов етц и нихуя не понимаю. Может есть какой-то промежуточный этап?
Аноним 08/08/20 Суб 18:25:54 1772100471
>>1771804

могу назвать 2 случая когда очень полезно

1 когда нужно вызвать pip и питонов этих в системе не один и так будет гарантия, что будет вызван нужный pip
2 Запустить встроенный модуль. Например зайти куда то и

python -m http.server --bind 127.0.0.1 5000

даст нам по бырому вебсервачок для этой папки.
Аноним 08/08/20 Суб 19:15:38 1772130472
Аноним 08/08/20 Суб 19:36:07 1772144473
>>1771397
Анон, я может не так понял, но как именно усреднять значение на границе? Т.е. я вычисляю разницу двух изображений, а на втором просто беру 1 из выбранных сторон и делю каждый пиксель на высоту изображения? Сначала подумал сложить все пиксели, поделить и вывести средний цвет с обоих сторон, но чет хуйня какая-то выходит
Аноним 08/08/20 Суб 20:10:07 1772168474
>>1772130
Нихуя, спасибо, анончик. Добра и апельсинок тебе.
Аноним 08/08/20 Суб 20:23:36 1772181475
>>1772074
Можешь, пожалуйста, рассказать о проекте? Тоже хочу борду для теста запилить.
Аноним 08/08/20 Суб 20:42:24 1772193476
Как получить список всех инстанцов класса?
При создании класса я даю ему имя второго класса, с которым он должен быть "связан" вроде этого:
def __init__(self, name, pair_name=None):
----self.name = name
----self.pair = self.__class__.getinstance(pair_name) # как-то надо достать экземпляр с определенным именем, но как?
Аноним 08/08/20 Суб 20:45:12 1772198477
>>1772193
Тебе список или экземпляр по некоторому параметру? Если второе, то делай словарь и пихай туда экземпляры при инициализации.
Аноним 08/08/20 Суб 21:49:06 1772226478
>>1772144
>Анон, я может не так понял, но как именно усреднять значение на границе?
Допустим, у тебя есть две части изображения, каждая шириной в 1000 пикселей. Из верхней части тебе нужно извлечь нижний ряд пикселей:

row_1= upper_part[-1]

Из нижней, наоборот - верхний ряд пикселей:

row_2 = lower_part[0]

row_1 и row_2 имеют shape (1000, 3), поскольку ширина картинки 1000 пикселей и пиксели записаны в RGB. Дальше просто считаешь разницу между каждым соседним пикселем и усредняешь значение при помощи Numpy:

value = np.abs(row_1 - row_2).mean()

Полученное значение сравниваешь с некоторым порогом. Если больше него, то изображения не являются продолжением друг друга, если меньше - являются. Сам порог можно либо подобрать руками, либо при помощи машинного обучения, что в данном случае очень просто, поскольку можно написать скрипт для создания датасета.
Аноним 08/08/20 Суб 23:30:18 1772295479
>>1772226
Понятно, значит я примерно правильно понял, просто подумал что надо сравнивать не с каким-то пороговым значением, а со средним значением пикселей на одной из границ. Ну тогда у меня какая-то хуйня немного получается, может быть из-за того, что все пикчи черно-белые.
Тестил вот на пикчах отсюда https://mangaplus.shueisha.co.jp/viewer/1007310
Вот код - https://ideone.com/bQZb4O
По результатам выходит, что среднее значение у страниц, которые должны быть 1 большой не обязательно является минимальным или максимальным. Так для пикч со ссылке выше получается: 1-2: 63.64, 2-3: 89.55 - должны быть одной страницей, 3-4: 132.97, 4-5: 53.21, 5-6: 45.22, 6-7: 107.68, 7-8: 119.89
8-9: 120.21 - должны быть одной страницей, 9-10: 108.46, 10-11: 65.11, 11-12: 21.20, 12-13: 81.72, 13-14: 82.43, 14-15: 158.41, 15-16: 158.08, 16-17: 82.90, 17-18: 118.89, 18-19: 92.19
Аноним 09/08/20 Вск 00:04:40 1772319480
Сделал я
sum(i for i in range(int(8e9)))
чтобы посчитать гипотетическое количество количество соединений, которое получится, если каждый житель Земли установит приватное соединение с каждым другим жителем. Комп пидарюга подвис на хуялион минут. И дело тут не только в Питоне (ну и в нем канешн тоже). Как это задачу решить математически "на бумаге" без циклов? Это реально?
Аноним 09/08/20 Вск 00:06:32 1772322481
>>1772295
С кодом ты явно перемудрил, и все можно было сделать намного проще.
>По результатам выходит, что среднее значение у страниц, которые должны быть 1 большой не обязательно является минимальным или максимальным
Скорее всего слишком много шума и мелких деталей. Нужно упрощать картинки. Снизить разрешение, немного размыть, и прогнать через Otsu threshold чтобы остались только два цвета. Что конкретно сработает сразу не скажешь - надо экспериментировать. Я бы для начала поискал, занимался ли кто-нибудь подобной проблемой.
Аноним 09/08/20 Вск 00:18:33 1772330482
Аноним 09/08/20 Вск 10:57:36 1772445483
1.PNG 61Кб, 647x1003
647x1003
Код полностью скопирован из книги. Но результат видно на скрине.
Подскажите пожалуйста, почему текст из файла не прочтён и почему выдаёт ошибку.
Аноним 09/08/20 Вск 11:00:34 1772448484
>>1772445
Потому что либо автор еблан, либо ты не умеешь копировать
Интерпретатор даже говорит тебе в какой строчке ошибка и как ее пофиксить (только не говори, что не знаешь ангельского...)
Ты файл заново не открыл (пытался открыть, но таки не открыл). Прочитай код заново и сравни код посимвольного чтения файла с чтением целиком
Аноним 09/08/20 Вск 11:04:02 1772451485
>>1772448
Прост на будущее: юзай менеджеры контекста для открытых файлов
with open("read_it.txt", "r") as text_file:
----do_stuff()
Загугли. И читай логи интерпретатора, он тебе сам расскажет, как фиксить ошибки
Аноним 09/08/20 Вск 11:35:02 1772463486
1.PNG 12Кб, 643x260
643x260
Спасибо кто ответил.
Я исходил из того, что код в книге не может содержать ошибку, до сих пор не понимаю, как такое возможно.
Действительно, проанализировав я понял, что предыдущий кусок кода закрывает файл, а новый его не открывает.
Я изменил строку
open("read_it.txt", "r", encoding='utf-8')
на
text_file = open("read_it.txt", "r", encoding='utf-8')
Теперь результат такой.
На сколько я понимаю, кодек utf-8 по какой-то причине не может что-то декодировать... До этого мог, а теперь нет.
Аноним 09/08/20 Вск 11:37:27 1772464487
>>1772451
Спасибо за совет про менеджеры контекста. В будущем...
А этот код писал не я, я его только копирую и анализирую с помощью книги.
Аноним 09/08/20 Вск 12:06:32 1772479488
Получилось. Оказалось что текстовый файл по дефолту кодируется не в utf-8.
Аноним 09/08/20 Вск 12:09:39 1772480489
>>1772479
Ебля с кодировками она такая
Аноним 09/08/20 Вск 14:09:22 1772553490
Почаны-фрилансеры-питонеры, какие задачи, в основном, решаете во фрилансе? Насколько, по-вашему, рынок пресыщен предложением со стороны исполнителей?
Аноним 09/08/20 Вск 14:35:31 1772590491
1.PNG 7Кб, 444x251
444x251
скажите, почему если методу .read передать 1
программа не выводит на экран первую букву?
Если передать 2, выводит первую букву, вместо первых двух и т.д.
Это типа как индексация, первый символ нулевой?
Аноним 09/08/20 Вск 15:35:16 1772625492
>>1772553
>Насколько, по-вашему, рынок пресыщен предложением со стороны исполнителей
Как ты блять думаешь, если сейчас уже мамашки в декрете питон знают и рвутся в айти?
Аноним 09/08/20 Вск 16:05:39 1772644493
>>1772590
Видимо, у тебя что-то с файлом, может, кодировка необычная, или что. Он же у тебя напечатал что-то, это тире или точка, посмотри, может это и есть первый символ в твоем файле.
Аноним 09/08/20 Вск 16:06:27 1772646494
>>1772590
Попробуй применить стандартный модуль pathlib
Аноним 09/08/20 Вск 17:36:54 1772723495
>>1772625
Ну это-же сегмент индусского быдлокода. А какие мидлы, например, задачи решают?
Аноним 09/08/20 Вск 20:53:41 1772934496
>>1772723
А на фрилансе лычек и нет
Аноним 09/08/20 Вск 21:18:47 1772943497
изображение.png 133Кб, 505x556
505x556
Аноним 09/08/20 Вск 21:45:54 1772951498
Аноним 09/08/20 Вск 23:05:01 1772996499
>>1772723
Перекатываются на Julia и Go.
Аноним 10/08/20 Пнд 00:32:06 1773034500
https://www.youtube.com/watch?v=z7WIm0iZcOU

Всем, кто любит орать про бенчмарки которые "показали однозначное превосходство ФреймворкаА над ФреймворкомБ"
Аноним 10/08/20 Пнд 01:39:06 1773054501
>>1773034
там же правильный комент

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

Аноним 10/08/20 Пнд 08:41:47 1773126502
1.png 169Кб, 1920x1080
1920x1080
3.png 158Кб, 1920x1080
1920x1080
5.png 180Кб, 1920x1080
1920x1080
6.png 170Кб, 1920x1080
1920x1080
Вечер в хату, Уважаемые господа. Пришел я в этот трудный час с просьбой или за советом . есть проблема. Power bi пик1 выдает карточку с общим количеством секунд по таблице-n . а мне хотелось бы видеть это в днях-часах-минутах . код для перевода из секунд в нужный мне формат я нашел (пик3). и встает вопрос как подружить power bi и скрипт? пик5 код карточки в power bi. желаемый результат пик6. Заранее благодарю за любой ответ
Аноним 10/08/20 Пнд 09:43:04 1773140503
Безымянный.jpg 75Кб, 490x509
490x509
Безымянный2.jpg 32Кб, 372x417
372x417
Сап програмач, ньюфаг на связи.Нужна помощь, если можно пожалуйста.
Посчитать лимит символов для левой части
Если левая часть меньше лимита символов, добавить пробелы
Если левая часть больше лимита символов, отобразить первые n символов, где n — лимит символов
На следующих строках отобразить всё остальное, но максимум n символов на каждой строчке
Суть в том что это доработка программы-магазина которая выдает чек.На пике 1 показан код где нужно внести изменения по заданию, а на втором результат который сейчас.Собственно буду благодарен любым подсказкам как это можно сделать ньюфагу, или чаво можно почитать чтоб понять что делать.
Аноним 10/08/20 Пнд 12:15:43 1773238504
>>1773140
max = WIDTH - len(right)
left = left.ljust(max, " ") if left < max else left[:max]

# Идея такая: если меньше максимума то добиваем пробелами (ljust сделает это справа, можешь поменять на rjust). Если больше, то делаем срез строки

Дальше сам
Аноним 10/08/20 Пнд 14:43:38 1773339505
Перекат нужно.
Аноним 10/08/20 Пнд 18:35:51 1773504506
Аноним 10/08/20 Пнд 19:48:50 1773537507
>>1773504
Я думаю классная книга. Автоматизацию рутинных задач не читал?
Аноним 10/08/20 Пнд 19:57:44 1773542508
>>1773537
Нет, но она у меня в закладках тоже есть.
Аноним 10/08/20 Пнд 20:07:36 1773545509
>>1773504
впринципе для обучения пойдет, я коенчно не читал первую половину книги, так как прочитав одну книгу по питону, у остальных можешь половину скипать, так как там азы все время пишут
но я видел проэкт с игрой из этой книги и он написан просто ужасно, такое чувство что автор не питонист, а какой то джавист в смеси с еще какой то функциональной хуйней,
а вот с автоматизацией мне понравилась книжка, правда первую половину я опять же не читал, а вторая начинается с регулярочек, который при первом знакомстве могут показаться той еще ебалой,
лутц это конечно пиздец рофлан поминки тем кто решился его читать, основная идея книги это повторение мать учения видимо, впринципе очень подробно, но пиздец как скучно
Аноним 10/08/20 Пнд 20:24:40 1773561510
>>1773545
Первую часть про совсем язы я тоже пропущу, наверно. Я не программист, но приходилось делать всякие штуки типа парсера текстовых файлов/xml/выгрузка данных из бд когда я загуглил как сделать мне нужное на оракле, то просто охуел и не встал, оказалось проще написать скрипт на коленке 50 строк со сторонней библиотекой. В том числе и на том же питоне. Короче всякие такие одноразовые дрочилки, которые были нужны по работе.
Но все, что я делал, было без понимания. Тупо копипаст со стаковерфлоу и прочих готовых примеров. Есть у меня желание в будущем, если получится, пойти по карьере программиста. Если не получится, то хоть для себя поучу, чтобы эффективнее решать свои мелкие задачи.

По поводу регулярок - я давно себе зарубил на носу, что если решил какую-то проблему решать регулярками, то у тебя уже две проблемы.
Стараюсь их не использовать, если нет острой нужды. Мне читабельность и реюзабельность важнее, чем скорость и меньший объем кода. Даже с онлайн-тулзами отладка этой шняги у меня частенько занимала непозволительно много времени.
Аноним 10/08/20 Пнд 20:43:10 1773580511
>>1773561
Я не твой собеседник, но хочу заметить что раньше тоже блевал от регулярок, но потом открыл для себя онлайн тестеры вроде https://regex101.com/ и re.VERBOSE, блять, я хз как вообще люди живут без этой штуки - это просто О-ХУ-ЕН-НО упрощает понимание регулярок и что важнее - читабельность кода.
Аноним 10/08/20 Пнд 20:45:10 1773581512
изображение.png 9Кб, 710x145
710x145
>>1773580
для примера сравни:

([a-zA-Z0-9._%+-])?([a-zA-Z_ ])(\d{1,20})([a-zA-Z._%+-])?(\.[a-z]*)

и скрин.

Аноним 10/08/20 Пнд 21:03:13 1773585513
>>1773581
Я regextester и rubular раньще юзал.
А как тут сделать автогенерацию комментов к коду? Чет не вижу.
Аноним 10/08/20 Пнд 21:15:48 1773597514
>>1773585
Ебать у тебя вопросы.
Аноним 10/08/20 Пнд 21:19:20 1773601515
>>1773597
Может не так выразился, на https://regex101.com/ есть автогенерация коммента к регулярке, чтобы как на скриншоте было?
Аноним 10/08/20 Пнд 21:35:57 1773610516
>>1773585 аргумент ре.вербосе к функции компайл позволяет писать коментарии вместе регуляркой
Аноним 10/08/20 Пнд 22:22:37 1773647517
>>1773601
Чел, это мои комменты если что...

На regex101 там автокомменты справа, но они не то чтобы очень информативные, если честно.
ползите Аноним 11/08/20 Втр 01:13:08 1773716518
Аноним 22/08/20 Суб 18:22:43 1785002519
tuple
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов