Тред, посвящённый языку программирования Питон, #85Предыдущий: >>1647702 (OP)Литература:Автоматизация рутинных задач ч.2 - https://anonymousfiles.io/3CBCoy1o/ <-- тут только одна книжка. Кто может, залейте её на ЯД к остальным.Ещё книжки: 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/ (нужно знать ангельский или уметь пользоваться переводчиком)— Можно ли на питоне делать мобильные приложения?Да, смотри на фреймворк Kyvi https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io— Как можно без лишней возни ускорить программу на питоне1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy. — Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником. текущая версия (№85) здесь: https://dumpz.org/c6qHxAwADZYW
>>1656865 (OP)>Да, смотри на фреймворк KyviБля, добавить всего две строчки и обосратьсяKivyисправленный шаблон https://dumpz.org/cAaW2nPySYyy
>>1656865 (OP)Какой самый лучший способ разделить словарь на части по n элементов, исключая преобразования в список? То, что у меня получилось, выглядит как-то всрато.
>>1656877Тебе именно итератор нужен?Вообще глянь модуль itertools, там много чего интересного:https://docs.python.org/3/library/itertools.html
>>1656877Я бы оформил такПо сути тоже самое, просто не понятно, зачем ты лезешь в эти низкоуровниевые вызовы iter-next, когда в словаре есть встроенные итераторы именно для этого.
Помогите, пожалуйста, доделать код. Подскажи как через ввод вписать в f, цифры, а не текст. Дан файл f, компоненты которого являются целыми числами. Найти позицию последнего числа, не превышающего числа bhttps://repl.it/@allpickan/Python-3-9
PyCharm Professional стоит своих денег? Насколько я понимаю, основная фишка там - это интеграция с БД из коробки, или что-то там ещё есть? Можно ли комфортно жить на Community Edition?
>>1656969Жить можно и на вскоде.Там же у них есть триал, попробуй его.Мне в начале очень сильно помогал пучарм именно платная версия, когда сам научился все делает и без его плагинов, то перешёл на вскод/обычную версию.
О какой в данном примере ошибке идёт речь? Я понимаю что изменчивость переменных в коде это плохо, но в данном примере как ошибка может быть, я не понял. Это надо специально ведь в функцию лезть и менять её.
В олимпиаде по информатике принимало участие несколько человек.Определите и выведите средние баллы участников олимпиады в 9 классе, в 10 классе, в 11 классе.Информация о результатах олимпиады записана в файле, каждая строка которого имеет вид:фамилия имя класс балл.Аноны, посоветуйте как лучше хранить данные в таком случае:Сделать класс с полями:1) Номер класса - число2) Оценки - листИли сделать словарь с ключами 9, 10, 11, а элементами будут списки, и в эти списки добавлять оценки?Или без разницы чем пользоваться - хоть двумерным массивом? Как бы вы поступили?Преподаватель с курсеры советовал посмотреть на named tuple, но я как я понял из документации модуль collections не поддерживается и будет выпилен в следующих версиях. Ему на смену пришел collections_abc , но там я ничего не понял.
Помогите ньюфане пожалуйста.В файле test несколько строчек, но с данным кодом выводится только вторая. ЧЯДНТ?Если вместо цикла for юзнуть read() то все в порядкеhttps://dumpz.org/b6ZAQ8BSn4be
>>1657055имеется в виду, что эти классы (https://docs.python.org/3/library/collections.abc.html#collections-abstract-base-classes) перемещены в новый модуль, и из коллекшнса их выпилятникто популярную либу убивать просто так не будет, сломав кучу кодатак что с говном типа всяких ткинтеров, асинкоров и итертулсов пайтон 3 останется навсегдаиспользуй неймфажный тупль, самое то
>>1657055еще можешь выебнуться перед одноклассниками и заюзать dataclasses, но это в твоем случае то же самое, по сути
Посоветуйте учебник, а лучше онлайн курс с практическими заданиями, где бы с самого начала объяснялась структура языка, а не просто "чтоб считать строку сделай это".
>>1657091вот тут все базовые аспекты языка с самых основ и до ооп, да на неплохой и интересной практикеhttps://www.coursera.org/learn/interactive-python-1https://www.coursera.org/learn/interactive-python-2
>>1657098А есть, где сразу начинают с ООП? Я уже уил немного плюсы, не хочется тратить время на жевание воды.
>>1657109вот интересный онгоинг, который не требует знаний каких-то либ, при этом сразу ебашит тебя лицом в ооп и programming language theoryhttps://ruslanspivak.com/lsbasi-part1/
>>1657121https://stackoverflow.com/questions/7160737/python-how-to-validate-a-url-in-python-malformed-or-not
Заметило что в джанге мои url выглядят так: http://127.0.0.1:8000/thispost/(4)Что это за херня со скобками? Раньше таких скобок не было (во второй версии джанго). С чего они вообще появились? В чем их смысл бля?
Пишу реализацию протокола для одной железяки, которая шлет данные через tcp. Прочитал вот такую штуку в документации к протоколу: "Следует обратить внимание, что TCP/IP – потоковыи протокол, т.е. для прикладного серверного ПО не существует пакетов уровня TCP/IP. Чтение из сокета TCP/IP – чтение потока баит, а не чтение пакетов. Пакеты протокола Galileosky являются пакетами прикладного уровня, для корректного их разбора серверное ПО должно выделить буфер и осуществлять сборку пакета. Ни в коем случае нельзя полагаться на то, что одна операция чтения из сокета вернет полныи пакет протокола Galileosky. Полныи пакет Galileosky может быть получен после выполнения нескольких последовательных операции чтения, между ними могут быть временные промежутки, это связано с особенностями работы протокола TCP/IP."Поясните, что значит "выполнение нескольких последовательных операции чтения"? То есть написать await reader.read(1024) как на скрине не прокатит? (для примера сократил код)
>>1657141Просто нужно дожидаться получения пакета полностью и тогда уже обрабатывать, а не считал-обработал.Очевидно, должна быть длинна в заголовках или какие-то маркеры конца.
>>1657160У пакета первый байт - заголовок, следующие 2 - размер пакета, затем тело и последние 2 байта - контрольная сумма. То есть должно получиться что-то типа этого?package_size_raw = await reader.read(3)[1:]package_size = int.from_bytes(package_size_raw, 'little')package = await reader.read(package_size)checksum = await reader.read(2)
>>1657164Ну вот у тебя while True, лови там новые пакеты, и как только размер уже полученного достигает того что из заголовка, отправляешь на обработку. И т.д.
Вообще, там есть readexactly. Вполне возможно, что он эту логику как раз реализует. Т.е. exactly читаешь хидер, и потом exactly длинна пакета.
>>1657141Смотри в чём дело, и это актуально для всех языков программирования. Когда на сокет клиента приходит какой-то пакет данных, система сразу отдаёт ему столько, сколько может.Но данные по сети идут по частям, они дробятся, это нормально.Ты когда делаешь recv/read или что-то ещё, можешь получить только часть пакета, а можешь и весь, как повезёт. Число в скобках означает максимальный размер пакета.В сети идут отдельные ip пакеты, и размер каждого обычно MTU, который примерно 1500 байт вместе с заголовком. Поэтому если ты шлёшь пакет в 2 килобайта, он скорее всего будет разбит.Если 1 килобайт, то скорее всего он придёт целиком, но ты не можешь на это закладываться.Как с этим работать: собирать всё в буфер, и как поймёшь, что к тебе пакет целиком пришёл, так и отправляешь его на обработку.
>>1657164мне кажется так надо - ставиль read(2000), после каждой операции пришедшие данные добавляешь в буфер.следующей строчкой, если размер буфера больше минимального (3-5 байтов), вычисляешь размер, и если буфер больше этого размера, вырезаешь из него пакет и отправляешь на обработку.
>>1657166>>1657188>>1657198Спасибо большое, именно то что нужно! А по сколько байт лучше разбивать куски, которые собираются в буфер?>>1657196JetBrains Mono, он стандартный в новой версии pycharm
>>1657207>А по сколько байт лучше разбивать куски, которые собираются в буфер?Ставь максимум, который можешь переварить, хоть мегабайт. Если придёт данных меньше, ты просто на выходе получишь меньше.В любом случае потом отправишь в буфер, а буфер уже обрабатываешь.
Выбираю между Джанго и aiohttp. Задание создать обычный, не самый навороченный REST API. С Джанго опыт есть (1год), работал года 3 назад. Но сегодня я взглянул на бенчмарки и мне показалось, что его лучше вообще не трогать. Или может быть Фласк? И вообще питон как серьезный веб инструмент, стоит рассматривать в 2020?
>>1657244Да нисколько в общем то. Просто делать нечего на карантине. Решил запилить, что нибудь хардкорное на питоне в свободное время. Комплекс неполноценности перед борщехлебами
>>1657077А если у меня есть namedtuple1 с полями Field1, Field2, Field3, то могу ли я через цикл for field in (Field1, Field2, Field3):__ namedtuple1.field.append(1)Получать доступ к объекту в этом поле? Например если у меня в полях лежат списки. В словаре такой подход возможен, в тут ошибка потому, что field в теле цикла не заменяется на значение из (Field1, Field2, Field3)Или пользоваться словарями и не ебать мозг?
Привет анонХочу написать сервак на питоне для анонимного чата. Опыт в питоне хороший (тк в основном под написание протоколов для связи с контролерами его юзал), но серваки пишу первый разидея норм или лучше сразу смотреть в сторону шарпов/крестов/жавы? какие камни? понятно что си++ проебу в скорости, но где, например, будет четка граница нагрузки, после которой можно будет с уверенностью сказать: "все, пиздец, на справляется"спасибо
>>1657259Если выбирать между джавой и шарпами, то определённо питон. Не знаю как там работа с сокетами в плюсах но подозреваю с плюсами питону не тягаться. Но если тебе не столь важно какой язык выбрать, есть более специализированные языки для реал-тайм приложений, которые будут в разы быстрее плюсов.
>>1657259> "все, пиздец, на справляется"Когда юзеры поймут что гроб-гроб-пизда.Но ты ж понимаешь что этого не произойдет.Хочешь познать пистон с этой стороны - пиши свой серв.Советую чекнуть торнадо.
>>1657278>есть более специализированные языки для реал-тайм приложений, которые будут в разы быстрее плюсов.это какие?
>>1657259> понятно что си++ проебу в скорости,Нет, не понятно, тут не числодробилки. Тебе надо сеть обслуживать, в этом затыки. На сколько пользователей ты хочешь чат делать?Хайлоад большая тема. Там много всего, и не только от одного языка программирования всё зависит, но и от MQ, баз, балансировщиков нагрузок и прочей хрени.Порядок величин такой, что 1000 клиентов и на одном потоке вытянуть можно, это ещё не хайлоад. Тебе надо изучать асинхронное программирование с asyncio, и какой-нибудь фреймворк вроде aiohttp.
>>1657121перейти по ней с помощью requests, возвращая код запроса и ловя эксепшнывсе гениальное просто
>>1657358Технически устарел. Вот тут объяснение есть:https://habr.com/ru/company/avito/blog/435532/>>1657358>Вполне себе успешно юзают данный инструмент. Был актуален раньше, пока не развилась штатная асинхронность в питоне. Сейчас скорее поддерживают старое, сложно мигрировать скорее всего.
>>1657361Почитаю, окей. Уже как-то читал, надо освежить.Был пару месцев назад на собесе в одной локальной, продуктовой компании, gurtam, искали повидло на сервер их, так вот, вполне себе активно юзают торнадо т.к. им нужен постоянный конект.
Почаны, помню как спортмастер в начале этого года активно набирал себе бэкендеров на Питоне, Го и ЖабеЧто с ними всеми сейчас случилось, интересно
>>1657379Пистон 3, кстати, но код очевидно содержит легаси ибо не вчера они появились.Исходя из их слов у них там микросервисы, так что была надежда на то, что новое пишется на 3,6+, все таки.
>>1657278>>1657283>>1657286>>1657307>>1657319>>1657332>>1657338>>1657351>>1657361> >>1657367Чуваки, вы топ, очень крутые ответы (надеюсь всех выделил, если что сорян)ПОнял что мой вопрос делитанский и что оч много не знаюКуда примерно посмотреть/почитать что-нибудь по теме?
>>1657485>Особенно первую строчку10^0 % 13 == 110^1 % 13 == 1010^2 % 13 == 910^3 % 13 == 12Дальше первой строчкм не читал.
Комрады подскажите че почитать чтоб решить задачу. Мне вот надо например установить сетапы сторонней проги запакованной в архив, плюс установить в определённое место тобишь прописать имя в окна и все дела, потом в проге ещё прогнать действия. Где такие прикладные вопросы расписаны?
Нужен архитектурный совет.Пишу приложуху на Kivy и вроде бы треды нормально запускаются и работаю.Нахуя столько возни в питоне вокруг async ?Если приложение не серверное, нормально же будет запускать в треде опросы и вычисления ?Питон и мобильную разработку пока знаю плохо, но в целом не новичок
Вот вам в качестве рекламы Kivy приложение Собянин.apkhttps://dropmefiles.com/Koc5pПросто сканирует все qr-коды, которые видит и выкладывает на экран.как же я заебался просто его компилить из гитхаба!очень мало инфы в инете и приходится постоянно экспериментировать и думать
>>1657516я не одмин, но возможно chocolatey тебе поможет. а именно инструкции для мейнтейнеров, как там пилить собственные сценарии установки
>>1657527>заебался просто его компилить>очень мало инфы в инетевся суть кивей. вечный не продакшнреди. я в шоке, что оно до сих пор живо, с таким-то подходом
>>1657598щто поделать.он реди, просто в гугле не будет ответов сразу на все вопросы начинающего.Надо читать код и думать.Все равно намного лучше чем джаву дрочить ради не очень то важных преимуществ.
>>1657521>нормально же будет запускать в треде опросы и вычисленияЕсли тебе удобно с тредами - то нормально. И с сетями в тредах нормально рабоать, раньше ведь работали.Просто все задачи сложные с взаимодействием с пользователем, сетью и сервисами конкурентные, в принципе требуют работы нескольких задач одновременно. Дальше выбор, или треды, или асинхронность.Исключительно кому как удобнее. По мне с тредами гемор большой, тем более, что в питоне они производительность не увеличивают из-за GIL. А все эти thread-save, синхронизации и т.п. гемор и грабли, поэтому я асинки очень люблю.Но надо ещё чтобы либы асинхронность поддерживали.
>>1657666> По мне с тредами гемор большой,вот в этом и суть моего вопроса. Как ты дошел до жизни такой? Почему все питонисты ебнутые? Любую подзадачу проще закодировать и отладить, если воспринимать в уме или на бумажке как отдельный поток выполнения.Ну надо иногда чтото синхронизировать, но это же не машину состояний городить для самого себя.Непонятно, короче.
сап, двач. рискуя вызвать пену изо рта или горение жеппы у бывалых обывателей, задам вопрос, который наверняка вам задавали. так вот, решил я, значит, изучать питон, понимая в программировании чуть менее, чем ничего. какие актуальные книги/методы есть для полных чайников на 2020 год? какую версию питона надо осваивать? шапку читал, там слишком много книг. посоветуйте одну плезп.с. английский не знаю. дурак. буду осваивать по пути.думаю учить на первых порах как хобби, ну а далее - если зайдет - может стану работать.спасибо, анон. посылаю вам лучи добра
>>1657730книги - скучно. чтобы не бросить, попробуй степиковский курс.там два курса. задания - атас! С книгой не идёт ни в какое сравнение
>>1657741https://stepik.org/course/67/promo(Я, правда, сам не пытался это проходить, а сразу начал сразу с курса посложнее)
>>1657678>Любую подзадачу проще закодировать и отладить, если воспринимать в уме или на бумажке как отдельный поток выполнения.Так в случае тредов очень условные потоки исполнения. Ты всегда должен думать о том, чтобы твой код был thread-safe, потому что переключение потока может произойти в любой момент времени. Программирование с async-await по сути тоже самое, но только точки переключения потока исполнения прописаны явно и особых мест для сюрпризов нет. Сильно меньше, чем с тредами.Во многих языках треды имеют смысл, поскольку они распараллеливают вычисления. Но не в питоне, где треды реально в один поток выполняются.
>>1657666>Просто все задачи сложные с взаимодействием с пользователем,вот этого не понел.Ну вот я сделал на kivy отдельный тред и обновил фейковую бекграундную информацию прямо в объектах гуи - все отлично рисуется и обновляется. Кнопочки жмутся, тредик крутится.Зачем этим шизикам понадобился отдельный класс Clock и еще какая-то отдельная поддержка asyncio ?
>>1657769ну в принципе я осознаю, что если я наговнокодю в своем отдельном потоке бесконечный цикл, то скорее всего зависнет все приложение.На начальных этапах это не очень страшно.Короче, феномер упорного развития асинхронных фрейворков в питоне - ответ на глобальный лок, который GIL ?
>>1657804я не понимаю почему.Всю дорогу я писал линейные алгоритмы Если - ТО - ИНАЧЕ, и теперь вдруг начать думать в виде Машины Состояний?может я неверное понимаю питоновскую асинхронщину? Предприняты какие-то серьезные улучшения?
>>1657818ну допустим для сервера HTTP это когда ты вынужден постоянно отдавать управление другому коду, хранить промежуточные состояния типа : чтение первой строки, чтение заголовков, чтение тела запроса, отправка клиенту. то есть, вот https://ru.wikipedia.org/wiki/%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5или все значительно проще?а что происходит если написать бесконечный цикл по ошибке?
Вротебал переустановил пучения на коммьюнити версию хуйпойми какие шрифты стали какой фрит стандартный на пуперверсии другой разве или чото уже накрутил блять ?
Не такого точно не было, Ребрик скажите какие шрифты у вас по дефолту стоят, у меня вот эти пидорские с новой версии а какие были ?
>>1657777>Короче, феномер упорного развития асинхронных фрейворков в питоне - ответ на глобальный лок, который GIL ? Сейчас во всех языках развивается асинхронность, обычно через async-await или близкое, общий тренд последних лет пяти. Минус многопоточности в том, что переключение потоков происходит в случайный момент времени. Это накладно, надо контекст какой-то сохранять, и это проблемы создаёт по thread-safe, и переключаться потоки могут не туда, куда надо.
>>1657827О чём ты? В некотором роде у тебя и синхронный код - самая настоящая машина состояний.Асинки как раз позволяют тебе писать код, который глазами этой ветки исполнения синхронный. Или многопоточный, но с заранее обозначенными точками, где может переключиться исполнение на другой поток. Очень удобно.
>>1657842>Сейчас во всех языках развивается асинхронность, обычно через async-await или близкое, общий тренд последних лет пяти.Вообще не понятно почему. Выглядит как возвращение windows 3.11Точечные применения я могу понять, но зачем навязывать для всех приложений и языков?
>>1657861В большинстве случаев треды использовались не по назначению, там, где были какие-то блокирующие операции, а не где нужно было распараллелить вычисления. Асинки не призваны заменить многопроцессность, это разные вещи, причём как раз работа с большим количеством процессов очень хорошо стыкуется с асинхронностью.
>>1657777Нет, асинхронность для лучшей работы с сетью, чтобы не блочить воркер когда мы идём за данными в базу или по api.
>>1657877Там ещё сверху появляется две строчки одна текущая вторая во что хочешь переименовать напомните хоткейс
>>1657880имхо, хуйня получилась.я в nginx + lua с тем же успехом ебенейше эффективные приложения делал. он переключается при любом вызове api nginx.
Хелпайте , питонисты. Ебусь с этим уже час. Менял путь уже в PATH все равно не работет. Недавно сменил имя пользователя, но не могу поставить обратно и пытаюсь решить эту проблему. Так же не устанавливается PIP , хотя другие версии питона работают
>>1657897Какой смысл от игрушечных примеров, реализовать с помощью select событийный цикл не так сложно, только без синтаксического сахара и нормального api это не применимо в продакшене.
>>1657918Я делал на селектах что-то для продакшеша, на втором питоне ещё (такой был в проекте), но это ненормально. Так можно один какой-нибудь цикл реализовать для ожидания данных на сокетах, не больше.Если инструмент очень неудобный, пользоваться им невозможно. Нормальная асинхронность в питоне только с 3.5 появилась, с приходом async/await. С ними пишешь асинхронный код как дышишь, надо только мозги перестроить по асинхронное проектирование.И по взлёту популярности питона последние годы видно, что многим по душе пришлось. Конечно, не во всех задачах актуально. Но там, где сервисы какие-то, которые обслуживают много задач, с разными источниками данных работают, это очень актуально.
>>1657932> С ними пишешь асинхронный код как дышишь, надо только мозги перестроить по асинхронное проектирование.То есть, придется помучатся.Не, пока пока не вижу смысла погружаться в это ради гуев.
>>1657938>То есть, придется помучатся.>Не, пока пока не вижу смысла погружаться в это ради гуев. Гуи идеально ложатся на асинкио, при условии, что именно под асинкио сделаны. Потому что внутри гуи тот же принцип используют, цикл обработки сообщений, события, задачи и т.п. А вот если они свой цикл поднимают, как это обычно бывает, то там уже через жопу совмещают, в общем да, надо думать, а действительно ли оно надо.Так что разумно. Qt и tkinter вроде пока напрямую не поддержали.
>>1657938>надо только мозги перестроить под асинхронное проектированиеАсинк это типа как просто как современная альтернатива синхронному кодингу с ограниченным применениемИли можно в принципе реально перестроиться и писать любые проекты (хотя бы свои домашние) в асинхронном стиле?
>>1657992Не всегда понятно зачем, что проекты делают? Если исполнение чётко последовательное, то не нужно. Если есть ветви исполнения, параллельность и т.п., то можно. Про гуи не скажу.Вообще очень полезно освоить асинхронное программирование, это современный тренд во всех языках. Хуже не станет.
>>1656865 (OP)Положим у меня есть картинка, на картинке числа. Числа крупные, многоразрядные. Мне нужно что бы питон брал эти числа и складывал каждый разряд в список, в соответствующий индекс.Пример:Число на картинке: 125 436 874list = [1, 2, 5, 4, 3, 6, 8, 7, 4]Ну или просто, чтоб распознавал цифры и сохранял прямо сразу числом в какую-то переменную, я просто не знаю как будет проще. В идеале нужно что бы при смене числа на картинке он мог регистрировать это и дальше действовать по условию. У меня такое ощущение, что это можно организовать в 10 строчек, просто нужно знать нужные команды из стандартных либ. Если это так, то скажите просто какие, я и сам смогу.
Ребят как переименовывать в пучарме только не через ф6 а по другому ? Комбинация вызывающая две строки сверху ? Скажите плез
>>1658149ну охуеть вообще.давай ты предметную область опишешь подробнее?это что за ебанутость? делаешь решатель домашки по матеше для второго класса?Хочешь распознавания - мучайся с распознаванием. Но это непросто и конечно же срабатывает не каждый раз.
>>1658149на читай, вроде приличная статья.https://nanonets.com/blog/ocr-with-tesseract/если у твое брата совсем хуевый почерк, можешь этот тессеракт перетренировать.
>>1658012слушай, может быть все дело в том, что питоне есть хороший оператор yield , а в других языках эта концепция неразвита?этот ваш asyncio основан на yield ?
import requestsfrom bs4 import BeautifulSoup as BS def save (): with open('parse_info.txt', 'a') as file: file.write(f'{comp["title"]} -> Price: {comp ["price"]} -> Link: {comp["link"]}')def parse (): URL ='https://www.avito.ru/sankt-peterburg/doma_dachi_kottedzhi' head ={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36' } global comp pageObj = requests.get(URL, headres = head) soap = BS(pageObj.content, 'html.parser') items = soap.findAll('div', class_ = 'item__line') comps = [] for item in items: comps.append({ 'title': item.find('a', class_= 'snippet-link').get_text(strip = True), 'price': item.find('div', class_= 'snippet-price-row').get_text(strip = True), 'link': item.find ('a', class_= 'snippet-link').get('href') }) for comp in comps: print(f'{comp["title"]} -> Price: {comp ["price"]} -> Link: {comp["link"]}') save()parse()ОШИБКА Exception has occurred: TypeErrorrequest() got an unexpected keyword argument 'headres' File "C:\Users\Harkaman\Desktop\Parser\Parser.py", line 15, in parse pageObj = requests.get(URL, headres = head) File "C:\Users\Harkaman\Desktop\Parser\Parser.py", line 31, in <module> parse()=============Пытаюсь запарсить авито , но получаю такую хуйню. Поскажите , что делать. python 3.6.4
>>1658240import requestsfrom bs4 import BeautifulSoup #def save (): # with open('parse_info.txt', 'a') as file: # file.write(comp)def parse (): URL ='https://www.avito.ru/sankt-peterburg/doma_dachi_kottedzhi?cd=1' HEADERS ={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36' } response = requests.get(URL, headers = HEADERS) soap = BeautifulSoup(response.content, 'html.parser') items = soap.findAll('div', class_ = 'item__line') comps = [] for item in items: comps.append({ 'title': item.find('a', class_ = 'snippet-link').get_text(strip = True), 'price': item.find('span', class_= 'snippet-price.snippet-price-vas').get_text(strip = True), #'link': item.find ('a', class_ = 'snippet-link').get('href') }) global comp for comp in comps: print(f'{comp["title"]} -> Price: {comp ["price"]}') parse()Я уже передал , теперь другая ошибка Exception has occurred: AttributeError'NoneType' object has no attribute 'get_text' в price
>>1657833>Вротебал переустановил пучения на коммьюнити версию хуйпойми какие шрифты стали какой фрит стандартный на пуперверсии другой разве или чото уже накрутил блять ?это что-то на языке питонистов?
>>1657900Тебя не смущает, что у инсталлятора нет достаточных прав?Устанавливай для всех юзеров в папку С
Кто-нибудь пользуется komodo ide? (Она больше не ворованная, а бесплатная)Хочу начать писать по pep8 и не могу включить линтер в ide.Остальные два линтера на картинке работают, но заебешься за ними следить.
>>1658491 ладно, отредактировал код этой ебанутой тулзы. Вроде проверяет.теперь я дохуя pep8-совместим!
object.__dict__Что эта хрень делает? Двойная звезда "раскрывает" словарь это я знаю, но в чем смысл всей этой конструкции, в особенности метода __dict__ (почему-то без скобок и без аргументов)
>>1658554Это не метод, а словарьhttps://docs.python.org/3/library/stdtypes.html#object.__dict__object.__dict__ A dictionary or other mapping object used to store an object’s (writable) attributes.
Начал читать про эти ваши алгоритмы.Есть список и есть массив.Список необходимо использовать тогда, когда нам нужно удалять и добавлять туда данные, совершенно понятно, почему в данном случае тут сложность O(1)Массив нужно использовать когда нам необходимо получать доступ по индексу, но суть в том что в питоне я также могу получить доступ к списку по индексу list = [1, 2, 3]print(list[0]) Тогда почему доступ к элементу в массиве - O(1), а в списке O(n)?
>>1658663Потому что ты не врубаешься в dinamic array, static array и linked listБуквально в прошлом треде вроде это обсуждалосьда, list - это не linked list, тебя наебал сам Гвидо
>>1658663именно поэтому питон не стоит брать как первый языкмассив - это структура данныхсписок - абстрактный тип данныхв питоне списки реализованы поверх массивов, такие дела и сложность там O(1)https://wiki.python.org/moin/TimeComplexity
>>1658689да зачем задавать вопросы на сайте для школьников, когда есть подробный ответ на stackoverflow?https://github.com/python/cpython/blob/e5014be0497d06d78343623588a80f491a6f7b74/Objects/listobject.c#L22
Зачем в try.. нужны секции finally и else?Код из else можно перенести вниз try, а finally вовсе снизу вне блоков написать?Я ещё могу понять else - чтобы исключение в else обрабатывалось внешним обработчиком ошибок вне моего except, но какой смысл в finally?
>>1658762> finally вовсе снизу вне блоков написатьПодумай сам, если код в finaly зависит от того, выполнится ли try - то при переносе кода вниз - ты можешь выполнять операции с None, или городить очередные проверки
>>1658762finally выполняется всегда, в том числе если исключение не было перехвачено, или было перезапущено. Соответственно код, который вне try-except-finally в этом случае вызван не будет.
>>1658780>перезапущеноВот так что ли? Оно выводит 1-2-4.Если исключение пробрасывается выше в else/except секции?>>1658766>ты можешь выполнять операции с NoneДа вроде бы не могу если я понял о чём ты, try же не создаёт новую область видимости
>>1658798>Вот так что ли? Оно выводит 1-2-4.Да, у тебя не печатается 3, в этом и отличие с finallyОбычно конструкция не такая, а try блок находится внутри какой-то функции. А внешние try блоки уже не в этой функции, а где-то сильно выше в коде, откуда функция-метод вызывается. Исходное назначение finally главным образом в том, чтобы корректно и во всех ситуациях закрыть какие-то ресурсы, которые ты открыл в try-блоке.
Не знаю, туда ли пишу, но спрошу тут. Есть папка с osu! osu.ppy.sh и оттуда надо вытащить музыку. Примерная структура такова: osu!/Songs/42048 RYO - Shuffle Heaven/audio.mp3Возможно расширение файла отличается от песни к песне, сейчас оно всё в десятигиговом архиве. Надо сделать: скопировать audio.mp3 (чтобы решить проблему расширений надо будет wildcard какой-нибудь?), в другую папку, переименовать его в название папки без цифры в начале. Задача совсем простая, но я не программист. Подскажите, что делать? Простой цикл for? Библиотек кроме os не надо? Питон не знаю, насколько сложно будет?
>>1658762>Код из else можно перенести вниз tryСам-то понял, что сказал?>finally вовсе снизу вне блоков написатьСкажу больше: иногда вообще юзается только конструкция из try и finally. Каково? потому что finally может гарантированно закрыть некий ресурс
Доброго дня всем. Помогите плез, как увеличить шаг вырезки при повторении цикла? Как видите mass[x] + mass[x:: +1] не работает
>>1658924>увеличить шаг вырезкина 5-10 см, без смс и регистрацииУ тебя ж есть еще переменные помимо x, Алеша! Увеличивай
>>1658924чтото странное делаешь. почему бы не показать весь код? намерения не ясны.тут у тебя ругается на то, что ты собрался складывать одно число int и срез.
>>1656865 (OP)>Вот, пожалуйста, та же самая программа, но переработанная под язык Python:Это шо, сикп пиздон?
>>1659360С короной этих вкатывальщиков уже некуда девать.Надо перепрофилировать заводы по сжиганию фотографов.
>>1659272Ну тогда ладно сикп питон я нагуглил вот https://wizardforcel.gitbooks.io/sicp-in-python/content/
>>1656865 (OP)Есть желающие за деньги на карантине тупой не сильно женщине за деньги дистанционно физическая локация спб через дискорд/скайп/tmv etc попреподавать немного питон? Напишем какой-нибудь парсер для соца или еще какую нибудь хуйню ненужную. Одной скучно, основы погромирования вроде есть, работаю в айти.стучите сюда если вдруг кто то хочет [email protected] или сюда в тг @poplaval
Аноны, я че то туплю. Почему когда я запускаю .py через консоль открывается пучарм? Я хотел бы скинуть свой скрипт другим людям, и чтобы им не ставить ИДЕ просто скачать питон, поставить библиотеки через пип и запустить скрипт.Или просто пусть откроют его через IDLE?
>>1659598Потому что ты дурачок и сменил ассоциацию на пичарм.При нормальной установке всё будет работать как надо.
>>1659606Можно запускать py script.pyА так надо копаться в реестрах-хуестрах. Ну или переустанови шиндовс питон, он поставит обратно свои.
>>1659598Ты точно пишешь python example.py и у тебя открывается pycharm, а не открываешь файл через консоль?
Есть список экземпляров класса, помимо этого эти же экземпляры лежат в двух словарях помеченные определённым образом.Как организовать удаление экземпляра из списка и всех словарей? Ставить метку в экземпляре, и элементы с меткой удалять при обходе каждого из этих контейнеров?>>1659606>>1659598Батник же положи рядом, и всё.Открываешь свойства файла, там есть "приложение", меняешь его с пучарма на python.exe
Я вас категорически приветствую.На выходе из функции получается dict с ключами name и descriptionАутпут некрасивый.Как сделать так, чтобы выводилось исключительно name и description без скобок, имен ключей и так далее, только значения?type(output_movie) - dictС меня канистра чая!
БЛЯДЬНе работает в этом киви абсолютно нихуя! не могу больше.https://github.com/kivy/plyer/issues/500#issuecomment-595756815Что этот пидор тут форкнул? как правильно его наработки взять ?
Зачем нужны 2 и 3 строчки? Разве первая не делает то же самое, что и третья, включая в себя то, что делает вторая?
>>1659850низачем, просто кто-то вот так написал, показалось ему что-то или впадлу было норм сделатьлучше просто оставить import tkinter as tkа from tkinter import * не делать никогда
>>1659863Думал его курс посмотреть по Python, или Django, и он там так косячил будто неделю назад сам только их изучил (имею в виду бесплатные уроки на ютубе)
>>1659850первая импортирует tk, позволяя вызывать функции типа tk.ttk.shit()ты не сможешь вызвать ttk.shit() без префикса "tk.", потому что ttk определен внутри tkчтобы таки смочь, автор импортировал ttk, и теперь в коде можно делать ttk.shit()третья импортирует всё подряд, включая ttk, так что с ней вторая строчка не имеет ссмысла, но бездумно импортировать всё подряд считается плохо, так как засирает неймспейс и может заоверрайдить какой-то другой функционал, поэтому такие звездочки на позднем этапе заменяют на то, что во второй строке - импорт индивидуальных классов и модулей. либо вообще оставляют один верхний уровень и вызывают всё через.длинную.череду.точек()
>>1659647 >>1659680 Ну да, я долбоеб получается и открывал файл. Сейчас написал через py scriptname и заработало. Спасибо за помощь.
Не работает pylint в VSCode в virtualenv. Ниже settings.json виртуального окружения. Кто-нибудь сталкивался с этим? { "python.pythonPath": "django_libraryenv\\Scripts\\python.exe", "python.linting.pylintPath": "django_libraryenv\\Scripts\\pylint.exe", "python.linting.pylintEnabled": true, "python.linting.enabled": true, "emmet.includeLanguages" : {"django-html": "html"}, "[django-html]": { "editor.formatOnSave": true, "editor.defaultFormatter": "HookyQR.beautify" }, "python.linting.pylintArgs": ["--load-plugins", "pylint_django"]}
сап двачик родной, извините, ради бога, что я к вам такой обращаюсь, препод задал залупу, а я ни в зуб ногой (я ексель-макака, нахуй мне питон не нужен). Курс по питону идет всего вторую неделю, на лекциях одно, а на дз хуй разберешь что. мож кто поможет ? юзаем анаконду, если это имеет какое-то значение https://pastebin.com/eEGECbVM тут образец
>>1660433Код говно, в условии нихуя не ясно, у тебя 6 часов что бы переписать условие нормальным текстом и я помогу тебе с кодом.
>>1660941смотри, условия как и код писались индусом, скажи что именно непонятно, попробую разобраться или по крайней мере спросить у препода. Нужно сделать модель симуляции морского порта, в порт заходят корабли трех классов с разной вероятностью и разной временем загрузки\разгрузки. есть еще такой код https://pastebin.com/fXwtC5b9 но не думаю что разница велика
>>1660433Ну что там сложного-то? Пишешь реализацию очереди, потом симулираешь день за днём:1 прибыл корабль? ставим в очередь2 есть корабль на разгрузке? нет: берём из очереди3 уменьшаем ему остаток разгрузки4 считаем корабли в гавани
>>1660953Бля. Я делал такое, это ж симулятор очереди. Ищи короче на CodeWars симулятор очереди ну или похуй что угодно со словом очередь вбивай и там будет похожее
>>1660956Скажи, имеет смысл в этом коде копаться, или проще написать все с нуля самому?>>1660961оп-па, это уже интересно, ща гляну, дякую
>>1660965>Скажи, имеет смысл в этом коде копаться, или проще написать все с нуля самому?У тебя задание написать самому.
>>1660433Ничего не понял, надо сделать симуляцию, через random()?Зачем тут numpy и прочее?Разгружают одновременно только один танкер?Для выборки с предписанными вероятностями в питоне есть специальные функции в стандартной библиотеке randomНапример, получить корабль случайным образомrandom.choices(['super', 'medium', 'small'], [0.4, 0.35, 0.25])аналогично интервалrandom.choices([3, 4, 5, 6, 7], [0.15, 0.25, 0.35, 0.15, 0.10])
>>1660973>Разгружают одновременно только один танкер?да>Зачем тут numpy и прочее?так уж у нас заведено, что на паре объясняют только нампай, а дз дают на работу с пандас или вот например с радномом, при этом не объясняя что такие библиотеки вообще существуют
>>1660973numpy в примере был использован чтобы например сгенерировать время обслуживание корабля, которое увеличивается по экпоненте
Вроде научился кое-как пользоваться пистоном и его либами в прикладных задачках (ну или гуглить решения на стековерфлоу)А теперь хочу реализовать какой-нибудь велосипед, чтобы начать понимать, как вообще проектируется софт и библиотеки.Например - асинхронный серва чок какой-нибудь! Но беда, я не знаю, что мне теперь читать по этой теме...Знаю очень поверхностно, как работает http, сокеты ну и asyncio офк. Нужно больше теории, как там внутри устроены эти веб фреймворки и как можно закодировать свой простейший аналог?
>>1660975>так уж у нас заведено, что на паре объясняют только нампайВозможно что хотят обучить работе с numpy, чтобы потом с ней какие-то более сложные вещи делать. Пусть даже для этих примеров numpy не нужна.Но знать про такие модули всё равно полезно. Полезны модули random, statistics, itertools - там много чего полезного и интересного. Функционал оттуда часто для учебных задачек дают, проделать самостоятельно полезно, но для продакшен кода штатные библиотеки очень полезно освоить.
>>1661041>Нужно больше теории, как там внутри устроены эти веб фреймворки и как можно закодировать свой простейший аналог? При развитых макака-скиллах можно закодировать и не понимая. Но имхо лучше разобраться, хотя бы с принципами asyncio и http. Потом легче будет.
>>1661041Я бы почитал статейки уровня 'from scratch', вот пару примеров:https://defn.io/2018/02/25/web-app-from-scratch-01/https://github.com/hzlmn/diy-async-web-frameworkТолько аккуратней с этим, потом ты полезешь ковырять tcp и далее по наклонной. Это как с проном: не успел оглянуться, а уже смотришь русское домашнее.
>>1659748Это ты ещё не пробовал OpenCV с киви познакомить. Я так 2 недели проебал, очнулся, а у меня уже андроид студио, глаз дергается, и Java ко мне сзади пристраивается. Больше к этому говну (kivy) не подхожу.
Норм начинать изучение питона на code.basics? Прошел больше половины, вроде все норм. Но это проект от хекслета, а его тут вроде как хуесосят, непонятно почему. Какие книги после этого сайта прочесть? Укус питона начал, вроде норм, но там нет упражнений после каждой темы как обычно бывает в старых книгах по программированию.
>>1661378>Но это проект от хекслета, а его тут вроде как хуесосят, непонятно почему.Да потому что нахуй не нужны все эти курсы ебучие. Основы легко можно и самому выучить, решая задачки на codewars/leetcode/hackerrank, попутно гугля нужные алгоритмы и разбирая решения от других участников. Выхлопа получишь в несколько раз больше, чем способны дать любые курсы.И книги по питону для вкатыша тоже нахуй не нужны. Их стоит начинать читать, когда уже имеешь базу и интересуешься конкретными паттернами, например.
Анон, подскажи, как описать питонное апи (не рест) на более человекочитаемом и отдельном от кода уровне, чем в docstring. Слышал про IDL, но хз, что это и что с ним делать
>>1661411Не совсем что что тебе нужно. Если хочешь документацию, есть генераторы документации - пишешь в коде комментарии специального вида, а по ним потом специальная программа с генерирует документацию в удобном формате, там html, pdf, что хочешь. С питоном часто используют sphinxhttps://www.sphinx-doc.org/en/master/
>>1661399> основы можно легко изучить codewars/leetcode/hackerrankна данных ресурсах только задачки на алгоритмы, которые сильно отличаются от задач обычной разработки.эти задачи не научат тебя правильно разбивать код на модули и функции, скорее всего тебя даже не научат использовать классы, там не используюется многопоточность, многопроцессность или асинхронность, и уж тем более эти ресурсы не дадут тебе никакого представления о веб-программировании. никаких основ на таких сайтах изучить не получится, особенно если у тебя мало опыта в программировании в принципе.> разбирая решения от других участниковзачастую участники данных ресурсов соревнуются в том, чтобы ужать всё решение в одну строчку, так что обучение на их примерах - прямая дорога к говнокодингу> книги по питону для вкатыша тоже нахуй не нужны; их стоит начинать читать, когда уже имеешь базуа каким образом ты получишь базу? или по-твоему это априорное знание? я тоже сторонник обучения на практике, но перед этим все равно нужно изучить необходимый минимум теории из курса, статьи, книги или видосика на ютубе
>>1661399Видел у Лутаца очень много упражнений, сам книгу не читал и не советую, т.к. на мой взгляд, там слишком много воды. Но упражнения можно брать и оттуда
>>1661378Видел у Лутца очень много упражнений, сам книгу не читал и не советую, т.к. на мой взгляд, там слишком много воды. Но упражнения можно брать и оттуда
Вопрос:Как пройти список с обратной стороны без использования len? Может срез какой-нибудь соорудить?И есть ли в этом вообще вычислительная польза, если список огромный, а нужный элемент скорее всего ближе к концу?
>>1661518Интересно, что за энтузиаст именно так решил.А почему тогда срез быстрее работает (если верить интернету)?
>>1661520Как так? Слайсы решают задачу извлечения значений из списков. Реверсед решает задачу обратного итерирования.Работает не быстрее https://ideone.com/g5MmEKПлюс проеб по памяти.
>>1661521Просто раньше думал что срезы - это что-то вроде обращения по индексу, а когда вызываешь функцию от чего-то, то интуитивно она должна возвращать новый объект.Благодарю. Важная инфа на будущее.
>>1661521Тупла быстрее через ::-1, чем через reversed, кстати, что я с ней не делаю. И ещё она работает хуже листа, что странно, впрочем, не первый раз подобное замечаю.Я только создание контейнера вынес из функции - замеряются лишь обращения.Научите массивы numpy использовать. Хули они медленнее в шесть раз работают - если у них прибит тип и размер гвоздями? Я бы понял ещё в два - из-за того что у них природа апитонная, но не в шесть же мать их.
>>1661748>Научите массивы numpy использовать. Хули они медленнее в шесть раз работают - если у них прибит тип и размер гвоздями? У них дорогая инициализация, конвертация из питона в np массив, на это идёт основное время. Вообще код покажи лучше.
>>1661753Без инициализации и конвертации, просто обход.https://ideone.com/sWoY9VВот с этими числами, а то идеон не пропускал мои. Тут вообще почти в 10 раз замедлилось.Что любопытно - если использовать np.arange, то работает быстро. А если np.array(range()), то сразу замедляется - хотя массивы полностью совпадают во всех значениях.
>>1661767Модуль dis ответа не даёт, с его точки зрения тут вообще разницы нет, код извлечения данных из np прописывается как-то в более низкий уровень.Мне кажется, что тут просто идёт постоянное преобразование типов из кишков np в данные питона. Вот это и занимает много времени. np для этого не предназначен совсем. С такими библиотеками другой принцип работы, как с сервисами, ты должен минимизировать количество операций с ними. Ты записываешь туда данные, потом библиотека сама с ними что-то делает, используя специальные функции.
>>1661877>ты должен минимизировать количество операций с нимиУгу, операции над нумповскими массивами нумповскими функциями несравнимо резвее, чем списки.А вообще это костыль тот ещё - нужно в самом деле минимизировать количество операций с этим, другими словами использовать другой язык, который лучше подходит для обработки массивов данных, чем скриптованное говно без типизации. Вышеупомянутая numba хорошо работает с массивами (чуть ли не лучше чем встроенные нумповские операции), на крайний случай.
>>1661902>другими словами использовать другой язык, который лучше подходит для обработки массивов данных, чем скриптованное говно без типизацииЕсли вся твоя работа в том, чтобы переложить конкретный тип из одного массива в другой и сделать с ним какие-то стандартные операции - то да, другой язык нужен.Си для таких вещей хорош и удобен.
Чет давно не заходил со своей платиной. Ну шо вкатывальщики, как там успехи? Все еще надеетесь найти петушиную веб галеру за пределами дс? хех)
Чем пистон лучше ноджс? Какие задачи он решает лучше? Кроме простоты синтаксиса и прочей хуеты для я девочек?
>>1662177Любую задачу можно решить на любом языке, если язык доступ к системе имеет.Питон, как язык проработан лучше, лучше его базовые структуры данных, словари, списки, туплы, множества, преобразование типов. В JS нет даже словарей и вместо массивов непонятно что. Объекты лишь частичная замена словарям.Гибкая система передачи параметров в фукции, сравни это с тем, что в JS.Большая стандартная библиотека, тебе не нужно ради каждой ерунды ставить модуль из npm непонятного автора. Хорошо налаженное межпроцессное взаимодействие. Масса вещей делается в питоне просто и красиво, а в JS это превращается в страшный код с кучей затычек и уязвимостей.А в остальном, на ноде тоже можно писать, жить можно.
>>1662177Учу питон, мне нравится синтаксис всем кроме одной вещи - выделение блоков пробелами. Как по мне скобки удобнее и нагляднее.
>>1662177На питоне можно очень быстро слепить проект и он будет как-то там даже работать, чтобы показать заказчику.А потом всё равно переписать под ноду как-то так оно обычно и бываетИбо нода куда более гибкая и быстрая относительно любых пистоновских веб-фреймворков
>>1662246потому что один язык для фронта и для бэка. Я пока ещё не видел ни одного чистого бэкенд разработчика на ноде, все так или иначе пришли с фронта
>>1662324Вот и я не понимаю. Он так прекрасен и всеми любим. Но как спросишь, то все сводится к красивому синтаксису
Бля, ребят, кто с Postgres ебался, хелпанитеЕще больше месяца поставил себе PostgreSQL в качестве основной БД в одном из Джанговских проектов. Там когда в settings.py задаешь настройки, надо помимо прочего указать пароль ('PASSWORD'), что это блин вообще за пароль? Где я могу его изменить?.. Я управляю своей БД через pgAdmin, там есть мастер-пароль для входа но это не он... Где и как можно этот пароль для БД поменять?
>>1662358Ну так добавь юзера.Скорее всего, суперюзером нельзя так подключаться, только локально через консоль.
>>1662358Ты пишешь пароль юзера, которого ты указываешь так же в настройках. Если не знаешь пароль postgres то в pgAdmin или в Shell создай нового юзера с нужными правами и на этот раз не проебись с паролем.Или другой способ погугли как узнать его пароль (но так как ты задал сюда вопрос, я так понимаю, ты не понял, как это сделать) А еще советую из settings выносить такие данные в отдельный .env
>>1662371>из settings выносить такие данные в отдельный .env?У меня на данный момент так: есть json файл, из которого я достаю этот пароль а также secret_key (на пике переменная POSTGRESS_PASSWORD это значение из десериализированного json). Это норм?По теме: >>1662358 в pgAdmin нашел эту фичу (блин, что-то я больно редко консолью пользуюсь, и часто полагаюсь на сторонний софт, боюсь мне это акнется)
Пытаюсь в L-системы, не могу в ветвление. Как поместить черепаховы координаты и угол в список, а потом извлечь оттуда, когда в правилах '[' и ']' соответственно?https://ideone.com/EX1Fxz
Пытаюсь тут во всю обмазываться питоновскими штучкамиКак можно сократить этот код?Зачем? -Не хочу инициализировать пустой дикт, хочу сразу вернуть результат.Знаю, что можно просто вернуть генератор, но конкретно этот пример с енумом и диктом почему-то не получается адекватно под него переписать... И ещё мне интересны другие варианты, с функцией map, например?
а, понял, в назначении позиции не по имени черепаху назвал (и раньше надо, и ручку поднимать-опускать ещё). держу в курсе>>1662424
>>1662387Я думал у тебя все в settings лежит. Да так я думаю без разницы, где ты настройки хранишь, можно даже в .py На счет этой фичи, в любом случае надо знать пароль. Я бы на твое месте попробовал этого суперюзера удалить в админке, и создать нового такого же. Просто хз, есть ли такая возможность..
>>1662301В чем же гибкость ноды? Про скорость работы все далеко не однозначно, так как зависит от дохуя чего.
Есть инструкции по тому, как менять пароли в постгресе.Суть в том, что надо в конфиге, что называетсяpg_hba.confвыставить параметры, которые позволяют логиниться с локалхоста без пароля, после рестартануть сервис, зайти, поменять пароль и включить защиту зановопараметр для этого trust называется.Точную инструкцию не дам, но она находится в гугле за три минуты.
>>1662352Ты фронт от бэка отличаешь, вкатывальщик?>>1662301>переписать под нодуРазочарую тебя, но ноде как и питону далековато до топов. Пыха давно держит олимп первенства в бэке
>>1662326Я разрабатывал на ноде, не переходя с фронта. Нода довольно удобная штука и функциональная, хорошая платформа, просто сам JS как язык ущербен, нельзя с питоном сравнивать совсем.Нода реально удобна была для сетевых сервисов за счёт того, что вся на асинхронных коллбэках построена.
>>1662451Тогда тебе встречный вопрос: как изменить пароль для этого юзера? И как создать нового юзера?
>>1662451Не пустит так просто. Это известная проблема, сам с ней сталкивался, ничего не помогало, но вот такие решения сработали.
>>1662460Сама СУБД тебя просто не пустит в настройки базы. Но имея рут пароль, ты можешь изменить параметры доступа через файл pg_hba.conf.
>>1662358Кстати, это пароль не для конкретной БД. И не для самой PostgreSQL. Это пароль твоего юзера (в данном случае "postgres") для подключения к серваку (а их может быть много внутри твоей Postgres)
Пиздец, развели сто постов споров.Достаточно почитать мануал. Зачем вобще в постгрес лезть наобум?Юзайте рабоче-крестьянский мускл или вообще скулайт.
>>1662455Сейчас бы считать асинхронный колбэки за плюс, когда во всёх нормальных языках стараются уйти от этой хуйни)))0))> чел, ты ничего не знаешь ни о жс, ни о бэкенд разработкеНу давай, тел ми мор.
В Django надо бы иногда генерировать url-ссылки на другие страницы моего ресурса, они должны выглядеть как-то так: http://myresource/slug-field, визуально на странице они должны выглядеть именно так а также быть гиперссылками (тег <a>) и редиректить юзера при нажатииВопрос: как их адекватно создавать? Я знаю быдлоспособ: вручную прописать название ресурса myresource, но так у адекватов дела не делаются, это одна из причин почему были придуманы темплейты и джанго-тег url. Создать сами ссылки с его помощью: href="{% url %}" - не проблема. Проблема динамически прописать имя ресурса
>>1662496Как-то так. Но с зашкварным прописыванием имени ресурса вручную:<p> The possible url you are searching for is: <a href="{% url 'randomapp:redirect_view' slug_var %}">http://myresource/{{slug_var}}</a> </p>
>>1662496 def get_absolute_url(self): return reverse("tag_detail_url", kwargs={"slug": self.slug})Возможно это то, что тебе нужно, можешь как-нибудь изменить под себяP.S. Метод класса models
>>1656865 (OP)Ананасы, с клиент-серверными приложениями незнаком, необходимо запилить два приложения:1) Сервис, который будет находиться на одной машине, занимать какой-то порт и принимать REST-запросы.2) Простенькая форма на другой машине, которая будет по клику отсылать REST-запросы к вышеозначенному сервису по его адресу.Подскажите, пожалуйста, либы (кроме PyQt для формы, его знаю), которые надо курить, от чего отталкиваться, в общем.
>>1662802Ах да, первый сервис, соответственно, будет после приема отсылать какие-то данные обратно на форму, из которой производился клик.
Какая есть литература для изучения третьего пистона, с упором на практику? Лутц и Dive Into Python вышли почти 10 лет назад, хочется актуальных знаний. Или я ошибаюсь и эти книжки довольно актуальны? Лутца осилить могу, воды не боюсь
>>1662844Я читал Stepik параллельно листая книжку Седер Экспресс-курс. ( Хороша уже тем, что честно в первой главе обьясняет почему питон -говно )Если ты уже программировал, то нафига эта вода?
Делаю задания на code-basics. Зашел с другого компа, логинюсь - пишет неправильно имя\пароль. Делаю восстановить пароль - пишет такого пользователя нет. Я думаю что за хуйня. А у этих долбоебов оказывается проверка почты сделана чувствительной к регистру. Как такую хуйню могли сделать программисты, продающие курсы?
У меня тут такой вопрос, я раньше писал на шарпе, для учебки, щас учу питон для себя и не очень понимаю, когда нужно юзать геттеры и сеттеры, а когда достаточно оставить поле пабликом. Может кто-нибудь рассказать, кто чего придерживается?
>>1662879>python не является лидером по количеству библиотеккакого года это говно?Истинные проблемы пистона в другом: производительность, ебля с версионированием, отсутствие адекватной многопоточности, хрупкость архитектуры (присущая любым динамическим языкам)
>>1662921У паблика всегда приоритет, но в случаях когда атрибут действительно должен быть приватным, можно поставить сеттер; геттеры есть смысл ставить при комплексной обработке объекта (очевидно)Хуярить на каждый чих get_voltage(self) или set_voltage(self, volt) - даунизмгодный вариант обозначать геттеры/сеттеры через декоратор property
>>16629352019. Ну же это правда, библиотеки сначала пишутся на си и на яву, а уже потом на питон.для первого взгляда достаточно тех проблем, которые в книге уже перечислены.
>>1662949Я это и имел в виду>>1662940Понял, спасибоПро декораторы уже узнал, пока гуглил об этом всем инфу, в любом случае, спасибо
>>1662947> Ну же это правда, библиотеки сначала пишутся на си и на яву, а уже потом на питон.Нет, C сейчас - узкоспециализированный язык, поэтому на нём не может быть такого количества библиотек как на питоне.Для того чтобы узнать сколько библиотек существует для языка достаточно посмотреть количество репозиториев на гитхабе с количеством звезд > 2kСпойлер: python в топ 2
>>1662959А зачем ты по одному гитхабу делаешь выводы об индустрии ?Да, гитхаб - единственный достоверный инструмент, но он же не покрывает данные об остальных api. любая хренюшка, железячка или сервисочек изначально выпускает закрытые api на яве и вероятно, на Си.Тут другая культура. Ну, мне так кажется.В любом случае, это второстепенный вопрос.
>>1662949>в шарпе вообще-то геттеры и сеттеры не используютсяЯ, похожу, работаю в каком-то неправильном проекте.
>>1663031да, но обычно просто говорят "свойства", геттеры и сеттеры - специальные методы для получения значения (getValue, setValue)
>>1662983>вероятно, на СиНизкоуровневая параша для дров и МК. Говорю как чувак, когда-то писавший на нем
>>1662983Си порой используется вместе с питоном, например для того чтобы вызвать системные библиотеки из кода как будто это функции питона.
>>1663116Через локиа вообще через треды с БД никто не работает, не зависимо от языка, есть специализированные БД, которые это позволяют также есть несколько конкурентных операций как в той же postgres (особая директива CONCURRENT). Целиком на многопоточность хуй перейдешь, скорее всего что-то наебнешь
>>1663118Просто столкнулся с https://github.com/aio-libs/aiomysql/issues/150 где я так понимаю, что один из разработчиков предлагает прикрутить работу с БД через ThreadPoolExecutor. Насколько эта идея будет хороша?
>>1663134Полноценной многопоточности там все равно не будет. Не ебу что происходит в майскл, в постгресе имитируется многопоточность засчет кеша и снэпшотов: https://www.postgresql.org/docs/9.1/mvcc-intro.htmlУлучшение производительности канешн будет, но не думаю что стоит ожидать всемогущие Треды, бустящие скорость чтения/записи в n раз
Ахахаблядьhttps://wonderland.v8.1c.ru/blog/uluchsheniya-v-sintaksise-yazyka-1s-dlya-raboty-s-asinkhronnymi-funktsiyami/вы там что, ебнулись со своими асинками? что дальше ? qbasic.exe будет поддерживать асинки?
>>1663134ThreadPoolExecutor используют чтобы вызвать синхонный код из асинхронного.Если ты будешь делать запрос в постгрю без него, то твоя корутина залочится на время выполнения запроса.Если через него, то твой запрос будет обслужен в отедльном треде, при этом твоя корутина не залочится на этом месте, а просто передаст контекст управления (если здесь что-то непонятно, то тебе нужно почитать что-нибудь об асинхронности). в другую корутину
>>1663154Понятно, спасибо.>>1663165>Если через него, то твой запрос будет обслужен в отедльном треде, при этом твоя корутина не залочится на этом месте, а просто передаст контекст управления (если здесь что-то непонятно, то тебе нужно почитать что-нибудь об асинхронности). в другую корутинуЯ понимаю, но вопрос в том, насколько безопасно так делать. Т.е. асинхронные либы я так понимаю, организованы так, что если 2 пользователя одновременно кинут запрос на добавление данных - либа разрулит этот вопрос. Но что будет если такое же произойдет, когда я кину одновременно 2 запроса через треды. но с синхронной либой для работы с БД, как советуют в той проблеме на гитхабе
>>1663175успокойся, в mysql все нормально. В том числе настоящий MVCC.этот чувак хочет клиентскую асинхронность ради решения клиентских задач, а не чтобы серверу было легче.
а, прочитал этот issuie.ну он же closed, нафига ты их читаешь?Конечно, там в обсуждении не понятно был ли ОП просто криворуким пидором или есть реальная проблема в библиотеке, но закрытые issue читать не нужно.
Господа, у меня к вам вопрос по поводу рекурсивных функций и многопоточности. Сам не программист, но по админским делам пишу всякие скрипты.Суть такова: есть потрясающе кривое стороннее API, из которого надо брать информацию. Сделал для этого дела несколько однотипных функций, которые проходят запросами, вызывая себя же, если не дошли до конца. Типа пагинации - не знаю, как оно правильно называется.И все бы хорошо, но последовательно выполняются довольно долго, т.к. информации дофига.Решил попробовать потоки и запустить их параллельно. Получилось что-то типа такого:thread1 = Thread(target=self.db_jobs_update())thread2 = Thread(target=self.db_orders_update())thread3 = Thread(target=self.db_customers_update())thread1.start()thread2.start()thread3.start()thread1.join()thread2.join()thread3.join()Но работает все равно последовательно. Предполагаю, что затык именно в рекурсивности. Если я прав, то куда лучше в этом случае копать?
>>1663175Вообще есть специальные либы известные, aiopg и asyncpg, предназначенные для работы с постгрей через асинкио.Асинхронность тут нужна для того, чтобы не блокировать выполнение кода, пока база обрабатывает запрос. Ровным счётом та же история, что и сетевыми запросами. Всё безопасно, об этом заботится сама СУБД, вообще в норме там к одной СУБД много клиентов одновременно подключается. Для атомарности группы запросов и придуманы транзакции.
>>1663179Понял, спасибо, анон>>1663186Закрыли нихуя не объяснив, последним ответом сказав, что мб реализуют когда-нибудь. >>1663192Я понимаю про либы, то issue как раз для асихронной либы под MySQL было. Спасибо за разъяснение работы СУБД
>>1663187>thread1 = Thread(target=self.db_jobs_update())Я почти не умею в питоновскую асинхронность с его граблями из-за GIL. Но что у тебя здесь? Что возвращает self.do_jobs_update() -- это фабрика, что возвращает метод?Выглядит так, как будто ты сначала считаешь результат, а потом вызывает Thread с результатом. Смущает то, что target должен по определению быть callable, ты должен был бы исключения словить.
>>1663203Вот я долбоеб. Действительно, если указать таргет просто как название функции без скобок, то работает замечательно.Братишка, спасибо тебе!
>>1663197>Закрыли нихуя не объяснив, последним ответом сказав, что мб реализуют когда-нибудь. шизиков и дебилов полно. вливайся в опенсорс!
Что нужно знать миддлу? Если задрочил уже миллион бегинер курсов. Я для себя накидал:Джанга/фласк/торнадо Метапрограммирование Асинхронность/многопоточность Что добавить?
>>1663240Добавь жабу например.Никому твой питон не всрался, если ты не датасаентист или околотого.Питухон это для студентов и школьников и по быстрому скрипты накидать. Деньги за это не платят.В вебе со своей тормознутой джангой питухон на самом деле тоже не нужен. Твердо и четко, не нужен.
>>1663273>Добавь жабу например.Тем более не нужна. Уже даже давно официально прекратили поддержку Java-applet, и разработчики жабы, и браузеры.
>>1663240Торнадо выкинь, уже 2020 как никак, если, конечно, ты не хочешь работать с легаси. Обрати внимание на sanic и aiohttpФласк тоже можно выкинуть, очень малый процент компаний используют его в проде, потому что ни батареек джанговских ни производительностиМногопоточность в питоне тоже не в ходу, но знать как всё работает нужно.Добавь Docker, PostgreSQL, Redis, Celery с RabbitMQ (или другой очередью, но эта самая популярная)
Всем привет. Я ньюфаг, делаю тут задание небольшое, гляньте плз, норм написал или говно? Работает вроде, кроме случая с "кривым html" конечно. А так задание просто найти текст в теге с определенным классом, который точно один такой на странице и в тексте только слова разделенные одним или несколькими пробелами.
>>1663460re.findall(r'\S+', text) тогда, хотя это не принципиально.Но что-то слишком простая задачка. Суп точно можно использовать?
>>1663469Да, вообще всё что угодно можно, любой язык итд.Я просто увидел на hh вакансию "стажер бекэнд-разработчик" неоплачиваемое, без трудоустройства, прост так. Ну откликнулся, написал эйчару в телегу (там было написано написать ей), она мне кинула ссылку на канал, сказала ознакомтесь пока, чем мы занимаемся. А там организация какая-то обучает типа дизайнеров, копирайтеров итд и ни слова про какую-либо разработку вообще. Она мне не пишет, вакансию удалили, ну я и забил.И сегодня она мне написала, типа ну что, вы почитали? Я говорю, что что-то там ничего похожего на эту вакансию нет, и она мне отвечает, что вот мы хотим запилить "application tracking system", чтобы как-то там автоматизированно принимать резюме от этих дизайнеров и копирайтеров, ещё и через телегу. Я говорю, что это всё круто конечно, но что в этом стажер будет делать? И она отвечает: "мы ожидаем, что он решит эту задачу", лел. Я сказал, что я врядли такое сам запилю вам и она мне вот это задание выслала, сказала глянуть и завтра сказать, как я буду браться или нет.Но да, чет сомневаюсь, что их задача хоть близко к этому тесту стоит. Хотя я ничего и не теряюи не получаю.
>>1656865 (OP)Такое дело: мне надо бы перенести питон и часть либ на комп, в котором в принципе нет доступа к интернету (pip не сработает). Как мне это лучше сделать?
>>1663518Там где есть инет пишешь pip download, полученные файлы переносишь куда нужно,а там уже pip install :имя файла:
>>1663504Это не коммерческий опыт. Какой же он коммерческий, если ты ничего не зарабатываешь? И проект не коммерческий, ты не работаешь в индустрии, не взаимодействуешь с теми, кто умеет работать, не учишься у них.Тебя просто запрягают на какую-то небольшую задачку забесплатно. Такой же пет-проект.Всё-таки за такое хоть чего-то должны платить. Ну если тебе, конечно, просто не интересно что-то сделать чисто для тренировки и без отдачи. Так и формируют мировоззрение у прослойки, что зачем платить, всегда можно найти кого-нибудь, кто за бесплатно ради опыта сделает.
>>1663518В принципе достаточно, чтобы на другом компе был установлен питон той же версии, на него скопировать целиком папку с virtualenvs.Более правильный пусть, это сохранить нужные пакеты в виде файловpip download package1 package2 их перенести и там через pip поставитьРазберись с virtualenv, если ещё не разобрался, для твоих задач очень нужно.
>>1656865 (OP)ЖЫР: форк Python 2 с новым синтаксисом и бэкпортом фич из Python 3https://github.com/naftaliharris/tauthon
Начал учить питон, сам не программист. Тут в телеге по питону задачку подкинули. Попробовал решить сам - получилось. А вот какое решение на сайте канала.Сильно хуже получилось при условии что я даже про функцию max ещё не знаю? (Сам решение с канала понял не до конца)Сама задача:Наибольшее произведение четырех последовательных цифр в нижеприведенном 1000-значном числе равно 9 × 9 × 8 × 9 = 5832
>>1663670Оба решения так себе.То решение, что с max, как минимум ужасно глобальными переменными. Создают две функции, и при этом используют глобальные переменные, это зашквар. При этом перегружено.То решение, что без max, не на питоне написано. Эти while в связке с i += 1, это не питон, вот это надо чистить. Но мне оно больше нравится из этих двух.
>>1663703В данном контексте ничуть не лучше. Это очень и очень дурной стиль делать функцию зависимой от глобальных констант. И очень дурной стиль выносить то, что по сути переменные, в глобальные константы.Как, например, будет выглядеть код, если ты хочешь протестировать набор строк, а не одну? Будешь перезаписывать константы?
>>1663696> Эти while в связке с i += 1, это не питон, вот это надо чистить.Всмысле не питон? А что это? Когда-то давно только чистый С учил.Как лучше решить эту задачу на питоне?
>>1663708не питон в том смысле, что тут так не принято, предпочитают делать не i+=1 а использовать интерфейс итераторовтвое решение (слева) норм
>>1663713Я в книге укус питона увидел что так все делают (+= -= и другие).Алсо проясните вот что. Я после того как вычислил длину строки string пытался сделать всю строку как int(string). Но на моменте temp = temp * string питон слал меня нахуй. Почему из числового набора нельзя взять конкретную цифру? Ведь каждая цифра по идее отдельный символ, не?
>>1663708Ты пишешь в стиле Си на питоне. В данном случае надо явно использовать rangeКак вариант. Не знаю, можно ли сделать более читаемым условие в range, вместо этого len - n + 1Вопрос, как реагировать, если на входе строка короче 4
>>1663718В строке ты имеешь доступ к отдельным символамstringно ты должен помнить, что отдельный символ - это тоже строка, а не отдельный тип char как в Си и не число.Где-то намудрил с преобразованием типов или не преобразовал типы.
>>1663719я думаю если ставить цель охуеть по итераторам и пайтон магии то можно вот так:https://pastebin.com/garavsik
>>1663719Что значит явно использовать range?У тебя ошибка, i:i+4 не будет работать, надо i:i+n. По идее строка и число может быть любое, я забыл сделать проверку что n > string.
>>1663725О чём вы?Код, который приведён на канале, говно. Авторы сами не умеют программировать, Си-анон лучше пишет. Не нужно на этом канале учиться, надо другое место найти.Я бы посоветовал Си-анону книжку Intermediate Python, в шапке в хранилище она есть, на русском языке, меньше 100 страниц. Там как раз про конструкции питона специфичные, которых нет в других языках.
>>1663731>Код, который приведён на канале, говно. Авторы сами не умеют программировать, Си-анон лучше пишет. Не нужно на этом канале учиться, надо другое место найти.все так Анончувак с дженкинсом просто тролит
>>1663727>Что значит явно использовать range?В смысле что в этом случае скорее всего надо использовать range. Или какой-нибудь другой специфичный итератор, наверняка в itertools что-нибудь есть для этого, но заведомо не while в том виде, как у тебя.
>>1663737Читаемость ухудшается и логика кода страдает, дополнительные строки кода, которые требует внимания.Ну тебя тут сначала i=0, потом сам while, потом отдельно i+=1Фактически ты имитируешь сишный for(i=0; i<xxx; x++), в сях тоже было бы неправильно такой while вместо for делать. Три строчки кода вместо стандартной одной.Просто это дурной стиль, так работает, но, реально ты имитируешь итератор стандартный. while нужен тогда, когда у тебя i увеличивается уже как-то более хитро в теле цикла, когда стандартными средствами ты не можешь обойтись.
>>1663747ясно. выглядит охуенно, как раз то чего мне не хватало. спасибо, анон!чем удобно читать .epub на виндовом десктопе? calibre - какая-то крайне странная программа
>>1663731> Не нужно на этом канале учиться, надо другое место найти.Я чёт вспомнил как на яндексе учился практикум или что-то типа того на петон разработчика, и я написал код в меньше строк, чем правильный ответ в задании. В итоге начал искать группу ВКантакте про петон, взял рандомного чувака и спросил, что за хуйня происходит, он сказал что в яндексе сидят имбецилы.Что происходит?в питон так и не вкатился
>>1663746Понятно. А итератор - я так полагаю, это функции, которые с каким-то шагом выполняют действия? Ну тут мои полномочия все, пойду дальше книгу читать, походу я до стандартных функций питона ещё не дошел.
>>1663762>джангу с vue.jsСмотря что тебе надо - если маленький кусок, можешь просто скриптом подключить и сделать что надо. Если полноценный проект с СПА - собираешь нодой проект на Вью, указываешь путь на index.html и раздаешь сам фронт как статику. Сам вью общается с беком через запросы к нужным url'ам бека. там чуть сложнее, но это в кратце>вообще нахуя мне это нужно? Более красивый и разнообразный фронт, чем на стандартных темплейтах; универсальный бек- можешь написать любой другой фронт
>>1663767а производительность можно с такого подхода увеличить? Если джанга не всю херню будет делать, а только бек? Где можно почитать ,как сделать этот полноценный проект с спа? и что такое это спа ?
Такой тупой вопрос - а с помощью питона можно в теории сделать поиск по какому-то конкретному новостному сайту не имея к нему доступ? Ну там поиск ключевых слов по странице/названиям ссылок на странице?
>>1656865 (OP)Вот объясните нубу, как правильно выбрать архитектуру для своего проекта? Допустим, я хочу сделать что-то типа MUD с помощью бота в телеге. Нужно ли мне для этого писать сервер, api? Или достаточно простозахардкодить функции в боте?
>>1663789Подскажите какую функцию юзать, заебался тупить.Дана ебанина из символов: c512a26bb447cfe571af077d45c8adf40ef6abd945b4b1184479339dd9d23aa3a50050a13983f84bd9f3a5786662ffd93b285e047e3fc53cbf50cfa29d2638bdНадо получить разбитие по 8 символов, чтоб выводилось в столбец:c512a26bb447cfe571af077d45c8adf40ef6abd945b4b1184479339dd9d23aa3a50050a13983f84bd9f3a5786662ffd93b285e047e3fc53cbf50cfa29d2638bdКак эту ебанину сделать, у меня мозг с жтими циклами атрофировался.
>>1663817sosi = 'c512a26bb447cfe571af077d45c8adf40ef6abd945b4b1184479339dd9d23aa3a50050a13983f84bd9f3a5786662ffd93b285e047e3fc53cbf50cfa29d2638bd'for i in range(0, len(sosi), 8): print(sosi[i:i+8])>>1663770SPA - single page application, читай в гайдах и прочих уроках. С СПА - это было как пример, можешь написать используя любой другой подход.
>>1663839>single page applicationобъясни, а для чего нужен Django REST framework? Вот делаю я допустим борду, типа двача и чем, он будет полезен? прост пишу проектик свой, не борду и думаю какой стек максимально круто юбзать, чтобы потом и показать было не стыдно. Пока что сделал модели для бд, другие штрихи навел
>>1663848> для чего нужен Django REST frameworkЧтобы сделать РЕСТ без всякой лишней ебаниныкэп>чем, он будет полезенТем, что ты разделяешь свой сайт на 2 сущности. Захочешь фронт поменять - меняешь только фронт, захочешь мобильное приложение - пилишь только фронт. Именно DRF дает тебя дохуилион различных возможностей, чтобы ты не писал свой костыль для каждого пука. Хочешь регистрацию - вот тебе хуйня в 3 строки, хочешь быстро выдавать данные - вот тебе сериалайзер, вот вьюшка и т.д.
Как сделать, чтобы Python загружал свои модули не из папки например /usr/local/lib/python3.8, а из например zip-архива?
>>1663992> из зип-архиваИспользовать библиотеку для архивации, распаковать в $TEMP (лялекс) или %TEMP% (шиндовс) и импортировать либу оттуда не вариант?мимо не умею программировать
Помогите выбрать направление плез. Мне сейчас 18 лет и хочу либо в геймдев, либо что-то с вебом. Только без рофлов, по серьезному.
>>1664081А ты думаешь библиотеку в зип архиве можно прочесть, не распаковав? Как ты себе это представляешь?а как ты дом изнасилуешь...
>>1664094Можно ли не в %TEMP%, а в память процесса распаковать? Я просто хочу один экзешник чтобы в нем все было.
>>1664108> Можно ли не в %TEMP%, а в память процесса распаковать?Бля, а я и забыл, что у всех темп на жёстком, а у меня на рамдиске, сорян.> Я просто хочу один экзешник чтобы в нем все было.У вас там такая хорошая документация в петоне https://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.read мне очень нравится. Вот эта штука распаковывает в оперативу.Илм просто pip install auto-py-to-exe эта программа умеет компилировать (компилировать ли, учитывая что это питон?) весь твой код в один exe и я так пынемаю библиотеки там будут, но тебе лучше самому потестить.
>>1664122А как сделать, чтобы уже Py_Initialize() брал эти файлы из оперативы, а не с твоего рам-диска?
Что поштудировать из фронт-энда (жс), чтобы адекватно представлять себе фулл-стак разработку в вебе? Синергию бэка и фронта так сказатьГлубоко залезать смысла нет, но чтобы была возможность строить годную обвязку вокруг restful бэка? в жс-треде какие-то дегроды сидят и ничего толкового не советуют
>>1664131читай книгу чувака из джаваскрипт ру, а потом офф доку любого фрейма. тот тред js мертв, там одни собаки гнилые. А тут интеллектуалы, которые всегда помогут советом/ответом
>>1663460ебать, если такие "тестовые" дают вкатышам, то нахуя я сижу и дрочу всякие постгресы с редисами...пойду тоже украду сделаю классное резюме и начну спамить всем подряд!
>>1664167>пойду тожеИди, сделай тестовое, и тебе дадут возможность реализовать из задачу и получить ценный коммерческий опыт забесплатно
Двач, я балдаеб, уже минут 20 не могу решить, казалось бы простую задачу для нюфагов. Хелп.Программа должна считать, сколько раз в строке S встречается подстрока "12". Какой оператор надо вставить вместо многоточия? Вводите ответ без пробелов.https://ideone.com/SxBeg6
Сап. Захотелось написать Game of life, с возможностью паузы и добавления новых живых клеток мышкой. Но так как гуи я почти не делал и вообще дно в этом плане, то есть пара вопросов:1. На чём будет проще всего написать: PyGame, PyQt, Tk или вообще EasyGui какой-нибудь?2. Я вот понимаю, что для игры нужна будет сетка, какой-то двумерный массив или что-то в этом духе. В голове я понимаю как это работает, типа вот каждая клетка в сетке отдельно работает, проверяется на живую/мертвую и тд и тп. Но у меня никак не складывается в голове реализация всего этого. Как это поле показать на экране? Как сделать так, чтобы каждая клетка на этом поле отдельно реагировала? Вот реализацию вообще не могу понять, как ни стараюсь.
>>1664153>Pyinstaller, не? Дык он делает так же, как мне анон выше советовал - просто распаковывает все в темпы.
>>1664273Ситуация хранится и обрабатывается в структуре, потом отрисовывается на канвасе или там на каких-то контролах.Клики можно ловить и получать координаты.
Я тут писал про перенос пакетов Питона: >>1663518В общем, запилил виртуальную среду и перенес папку venv с одного пк на другой (оба под виндой). Только вот как мне добавить эту виртуальную среду в PyCharm?.. После меню add new environment он мне кидает какую-то ошибку SDK и заодно утверждает что это Питон 2.7 (хотя он 3.7 ...)Как подключить эту venv в качестве интерпритатора проекта?
>>1664292Ты ебанутый? Ну вот честно, папки он блядь переносит. Виртуальное окружение это не та вещь, где ты можешь просто перенести папку и думать что все будет окей. По твоему когда ты устанавливаешь пакет он просто разархивируется? Нет. Он конкретно под твою систему устанавливается, пишет всякие константы, которые зависят конкретно от твоей машины. Я тебе более того скажу, если ты venv передвинешь из одной папки в другую он сломается. Так что давай, кабанчиком скачиваешь все пакеты и локально их устанавливаешь и сюда больше не пишешь свои тупые вопросы.
>>1664292Ебать ты, я прям представил себе линуксоида который добавляет файлы в /usr/bin чем-то кроме пакетного менеджера
>>1664299>Я тебе более того скажу, если ты venv передвинешь из одной папки в другую он сломается.Открой для себя опции --relocable и, для некоторых других случаев, --alwayas-copy.--always-copy недостаточно для полной переносимости, хоть там в окружение очень много чего копируется, но если та же версия питона в системе установлена, но переноситься должно. Это неправильный путь, конечно.
Посоны, твердо решил носить Черный Пояс, но его от него меня отделяет совсем чуть чуть - я не могу установить модули от codewars!как это дерьмо задумано?Вот дока : https://github.com/Codewars/codewars.com/wiki/Codewars-Python-Test-Framework-V2захожу на страничку и вижу шаблон задания :def create_phone_number(n): #your code hereвнизу есть шаблон тестов:Test.describe("Basic tests")Test.assert_equals(create_phone_number([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]), "(123) 456-7890")Test.assert_equals(create_phone_number([1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), "(111) 111-1111")Test.assert_equals(create_phone_number([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]), "(123) 456-7890")Test.assert_equals(create_phone_number([0, 2, 3, 0, 5, 6, 0, 8, 9, 0]), "(023) 056-0890")Test.assert_equals(create_phone_number([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), "(000) 000-0000")как локально эти же строки протестировать?делаю так :import codewars_test - без ошибок Ну а как создать объект? или у них тут метод класса ?или они вообще пидоры и тестируют старым фремворком которому два года?
ебал короче маму их. скачал и слепил модуль отсюда https://stackoverflow.com/questions/40996317/codewars-python-tdd-offlineчто у них там происходит? не могут новичкам сделать документацию?
Немного не по теме вопрос. Допустим я изменил файл_1 и файл_2. Как я в комментарии к коммиту могу написать отдельно, что я сделал в файле_1, и отдельно, что я сделал в файле_2?Или придется их по-отдельности коммитить?
>>1664457разумеется, единое изменение в разных файла не следует коммитить двумя коммитами в разных файла.коммит - смысловая единица развития кода.
>>1664457Сначала создаешь отдельную ветку для изменений первого файла, называешь ветку как рефакторинг_файла_имя_файла, в нее заливаешь изменения этого файла. Так же поступаешь со вторым файлом.Потом объединяешь ветки, в коммите пишешь причину объединения как общую суть твоих изменений.В итоге мержишь изменения в мастер.Я понимаю что по началу может показаться довольно сложным, но лучше сразу привыкать так делать, чтобы на работе не бояться работы с гит.
>>1664463ты тралишь? и что потом происходит с этим ебическим набором бесполезных имен веток ? они не мешаются в дальнейшем?Почему нельзя просто ебануть коммит в dev?
Есть скрипт, проходящийся по текстовому файлу регексами, находящий нужные фразы и записывающий их вместе с их координатами (просто индекс первого символа строки) в текстовом файле внутрь массива. Есть ли питоновские библиотеки или, может быть, встроенный функционал, позволявший бы теперь взять - и заменить найденные строки на другие, мануально задаваемые? Погуглил - немного удивился, что 100% ответов на похожие вопросы предлагают какие-то несусветные костыли, хотя, казалось бы, задача должна быть распространённой. Может, кто-то работал с чем-то подобным?
>>1664564Мне не подойдёт, потому что replace() возвращает целиком изменённую строку, а у меня в среднем файлы на 100k символов и в каждом по 80-100 подстрок для замены. Тут нужно как-то напрямую в файле аппендить новую строку по индексу, удаляя старую.
В чем разница между стандартным драйвером для БД и ODBC драйвером, кроме подключения последнего через жопу?
>>1664662В смысле вот есть mysql-connector-python, а есть pyodbc, и никаких бенчмарков для последнего, никаких преимуществ не написано. Нахуя оно надо?
>>1664635Тут уже возникает вопрос, как аппендить по этой позиции.Наверное-таки, придётся делать неэффективный костыль через replace().
Анонче, я не программист, но иногда по работе пишу простейшие скрипты. Сейчас чет застрял, нужна ваша помощь. У меня есть большой csv-файл с содержимым datetime - число, типа вот такого:2020-02-14 00:00:00 252020-02-14 01:00:00 272020-02-14 02:00:00 26Таких значений у меня на несколько месяцев, и мне нужно посчитать среднее количество за час дня по этим данным, т.е. если 02-14 в 00:00:00 было 25, а 02-15 в 00:00:00 было 35, то по итогу за время 00:00:00 мне нужно иметь 30. Как это сделать?
>>1664739\t откуда-то вылезло, там пробел:2020-02-14 00:00:00 252020-02-14 01:00:00 272020-02-14 02:00:00 26
>>1664751Ну в дне 24 часа, каждому часу соответствует некое количество. В 00:00 часов - 20, в 01:00 час - 25 и т.д. У меня таких дней несколько, и мне нужно посчитать среднее значение за каждый час суток с учетом всех дней.
>>1664757using System;using System.IO;using System.Linq;namespace laba1{ class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); var data = File.ReadAllLines(@"c:\dev\data.txt").Select(x => x.Split().ToArray()).GroupBy(x => x[0]) .Select(x => Tuple.Create(x.Key, x.Average(y => long.Parse(y[2])))).ToArray(); foreach (var datum in data) { Console.WriteLine($"{datum.Item1}, {datum.Item2}"); } } }}
>>1664765Бля, кто здесь тупой, ты или я?Есть пикрелейтед таблица. Нужно получить среднее от суммы рядов 1, 25, 49, 73, 97 - это будет среднее количество в 00:00 каждого дня.Нужно получить среднее от суммы рядов 2, 26, 50, 74, 98 - это будет среднее количество в 01:00 каждого дня.Нужно получить среднее от суммы рядов 3, 27, 51, 75, 99 - это будет среднее количество в 02:00 каждого дня.
>>1664772Тогда такusing System;using System.IO;using System.Linq;namespace laba1{ class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); var data = File.ReadAllLines(@"c:\dev\data.txt").Select(x => x.Split().ToArray()).GroupBy(x => x[1]) .Select(x => Tuple.Create(x.Key, x.Average(y => double.Parse(y[2])))).ToArray(); foreach (var datum in data) { Console.WriteLine($"{datum.Item1}, {datum.Item2}"); } } }}
>>1664830Спасибо за помощь, но там нет date и time, это одна колонка datetime напрямую из БД, т.е. идет 2020-04-14 00:00 | 24.
>>1656865 (OP)Летом будет год как вкатился в backend разработчики, стек Python/Django/Postgresql, опытные анончики посоветуйте куда дальше двигаться, как быстрее стать мидлом? Пока могу по ТЗ написать сервис (Rest/Soap) или модуль какой-нибудь, есть опыт интеграции с разными сервисами. Куда двигаться дальше?
>>1664507>и что потом происходит с этим ебическим набором бесполезных имен веток ?Зачем их хранить? Удаляешь.
>>1664872>как вкатился в backend разработчики>>1664872>как быстрее стать мидломА чего не сеньером сразу после школы \ завода \ нужное подчернуть?
>>1664549Ну блин, тут безотносительно Питона как бы. У тебя есть координаты кусков в файле, которые надо заменить на что-то другое. То есть в принципе у тебя задана последовательность кусков из исходного файла оставить-заменить-оставить-заменить-оставить. Просто пробегаешь их в цикле последовательно. То, что оставить, пишешь во второй файл, вместо того, что заменить, пишешь во второй файл то, на что заменить.
>>1656865 (OP) Бот телеграма BotFatherConnectionError(err, request=request)requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, 'Удаленный хост принудительно разорвал существующее подключение', None, 10054, None))В Код писал соксы и прочее не помогало особо.TLS 1.2 Как то ещё может быть связана?
>>1664580>Тут нужно как-то напрямую в файле аппендить новую строку по индексу, удаляя старую. Невозможно, потому что если ты вставляешь какие-то данные иного размера, чем были, то тебе нужно сдвигать все данные, что записаны после. А это возможно только перезаписью, причём даже с перезаписью много нюансов.Решение тебе уже предложили, поточно читать и записывать в новый файл. Но, если у тебя файлы ВСЕГО по 100к символов, но проще всё в памяти делать. Блин, это и 20 лет назад было проще, когда у компов было в 1000 раз меньше оперативки, чем сейчас.
>>1665009Удаленному хосту что-то не понравилось и он закрыл сокет. Может версия протокола не понравилась, тут надо как-то логирование сделать и посмотреть. В реализациях TLS там же вроде настраивается, какие протоколы можно использовать.
>>1664167Да это тестовое для бесплатного задания за нихуя. Прост я сам не умею себе задачи придумывать, а так хоть мотивация небольшая будет пописать код, будто я рил погромист. Хотя она всё ещё не ответила, мб и его хуево сделал, лел.
>>1665073Лел, прямо сейчас ответила, мб в треде сдит.Написали, что вместо result = re.sub(' +', ' ', text).strip().split() можно было бы использовать просто result = text.split() и что я не догадался выводить какое-нибудь уникальное сообщение, когда в теге вообще нет текста. И что писать "Код не валиден" не красиво.Так что не заслужил бесплатного задания.
Посоветуйте чат-бота для твича. Пробовал twitchio - нихуя не получилось его запустить. Данные все верные указываю, на них не ругается, но ругается на тайм-аут соединения и что к каналу подключиться не может. Сойдут и боты с самым базовым функционалом. Алсо, что лучше использовать из виртуального окружения - virtual env или pip env? Последний не понял как настраивать в PyCharm, в консольке вроде настраивается, pip файлы создаёт.
>>1664767ебать дотнетчик порвался.обесните,что такого крутого в этом ихнем linq, что некоторые питонисты, пытаются эту поеботу переписать в питоне?есть как минимум три модуля имитирующих linq.Но как же intertools.groupby и прочие ?
На моём любимом питончике спарсил комменты с двача и сделал облако слов, пиздец двачеры дегенераты...
Программач, нужен совет.Сам не программист, но для автоматизации всяких разных процессов изучил питон и писал всякие консольные скрипты на чистой функциональщине. Потом стал добавлять гуй для удобства пользователей: сначала tkinter, потом перебрался на QT из-за необходимости поддержки драг-н-дропа в интерфейс.Собственно, пока функций было не особо много, то сильно не заморачивался, и использовал один класс, куда сваливал и работу с интерфейсом, и свои функции. Но комбайн разрастается, и стало понятно, что куча функций в одном классе/файле - это не очень удобно.Парадигма ООП мне еще не до конца понятна, и пока раздумываю, можно ли фигачить какие-то универсальные классы для своих нужд.Т.е., чисто для примера: при нажатии на кнопку происходят определенные запросы через API, затем идет обработка локальных файлов, потом обмен с sqlite, а потом вывод информации в интерфейс.Как бы это все более-менее удобно реализовать с минимумом геморроя? Делать отдельные классы для работы с АПИ и БД с набором функций в них? Функции довольно захардкоржены, т.к. не очень получается для работы с разными апи использовать универсальные методы, ибо один сервис требует получение ключа одним способом, другой - другим и т.д.Или есть смысл описания функций в отдельных файлах с последующим подключением?Немного сумбурно описал все, но, надеюсь, будет в целом вопрос понятен.
>>1665365>изучил питонгромкое заявление, на самом деле. Скажем так, поставил и немного разобрался с возможностями.*фикс
>>1665304Чем парсил?Каков объем запарсенного контента?Сколько заняло времени?Сталкивался с временным баном по IP из-за превышения числа запросов?
>>1665365Почитай про MVC и прочие деления логики. Многое уже придумали за тебя. Для работы с классами тебе нужно представлять какой-то элемент программы, как объект, вот у тебя есть интерфейс, у него могут быть только такие-то поля, свои методы и открытые методы, внутри в интерфейсе тоже что-то может быть, а вся работа программы заключается во взаимодействии между различными классами, каждый из которых предоставляет свой API. >при нажатии на кнопку происходят определенные запросы через API, затем идет обработка локальных файлов, потом обмен с sqlite, а потом вывод информации в интерфейсКнопка может быть экземпляром всех кнопок в интерфейсе, он дает запрос другому классу (можно использовать events для этого), экземпляр класса реагирует, внутри себя шаманит (приватные методы), и отдает что надо
>>1665371делал запросы через requests к api двача, миллион сто тысяч комментов со всех бордов из 5 миллионов возможных, парсил часа два, tqdm предскаызвал 20 часов. банов небыло хуярил запросы без задержок вообще, но запросы медленно и так шли, примерно 1 запрос за 2,2 сек. а мне надо было 20к запросов отослать.>>1665360Да пахую вообще, там было сколько то стоп слов но нахуй оно мне надо фильтровать контент для двачеров>>1665327могу, может быть ночью сделаю если не забью
>>1665738Можешь сгруппировать явные синонимы и убрать глаголы? Ничего не понятно об обсуждаемом из этих картинок
>>1664838освой pandas, там есть парсер дат при загрузке файла, и еще дохуя функций для работы со временем
Уважаемые, программисты, нужна ваша помощь. Есть 3 задания, которые нужно сделать на пике. Так как я в программировании вообще не шарю прошу вас, сделать это. Не за бесплатно, конечно. Есть всего 700 рублей.
>>1681648Что как?? как убрать глаголы??https://pymorphy2.readthedocs.io/en/latest/https://pymorphy2.readthedocs.io/en/latest/user/guide.html#normalizationhttps://pymorphy2.readthedocs.io/en/latest/user/grammemes.html#russian-pos