Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации https://dumpz.org/ - можно постить листинги, не требует регистрации https://pastebin.com/ - для листингов, регистрация не обязательна https://goonlinetools.com/snapshot/share/ - для листингов, без регистрации, но с капчей
— Какие книги считаются лучшими? На слуху чаще всего Лутц, но там очень много воды. Ещё на слуху Марк Саммерфильд, Эл Свейгарт "Автоматизация рутинных задач с помощью python". Эти книги рекомендуют чаще всего, но книги довольно старые, а питон развивается.
— А как учить джангу? Нахожу только книги по джанге 1.х У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать даже для версий 1.x, т.к. принципы остаются теми же. Но лучше хотя бы с версии 2.0, слишком много мелких изменений в базе.
— Какие веб-фреймворки стоит учить в начале двадцатых? Что бы не говорили, Джанго живее всех живых и умирать не собирается (и Django REST Framework), очень перспективный асинхронный FastAPI, асинхронный AioHTTP. Flask ещё где-то используется, но уже legacy. Прочие фреймворки или у нас экзотика, или это вымирающее легаси как Торнадо.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать Вот, пожалуйста, та же самая программа, но частично переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом? Ролик на американском языке про многопоточность и асинхронность, построение своего event loop с нуля, помогает понять, как устроена асинхронность внутри: https://www.youtube.com/watch?v=MCs5OvhV9S4[РАСКРЫТЬ]
— Как можно без лишней возни ускорить программу на питоне 1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь. 2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
старая версия шапки, треды 90-148 и ранее: https://dumpz.org/bASGKD8cCFDf ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
>>2616438 → >не зря у нас в универе с и с++ в приоритете Они в приоритете потому что их преподают уже лет 30, а что-то новое в программу универ очень тяжело принимает. Вообще нынешнее костное университетское образование это развод уровня ммм, преподают хуиту актуальную десятки лет назад.
>>2616799 Потому что k:v в дикт компрехене это фиксированный синтаксис. https://docs.python.org/3/reference/expressions.html#dictionary-displays Видишь там expression:expression, вот это оно, твой иф там нахуй не уперся. Короче, делаешь сет из одного из списков и потом [val for val in lst if val in set], это оптимальный способ.
>>2616810 Спасибо за инфу. Но ты кстати тоже немного ошибся, анон. Не надо там ни какие сеты делать Просто после элса надо ставить не пару ключ значение а только значение.
А что кстати быстрее компрэханшн или функция dict()?
Ошибка: синтаксическая ошибка в словарном выражении. Условие if должно находиться после ключа и двоеточия.
Изменения, которые были внесены:
переименована переменная list в lst, так как list - это зарезервированное слово в Python; добавлены кавычки вокруг фразы 'element in list', чтобы указать, что это строка; перемещено условие if после двоеточия и ключа, чтобы соответствовать синтаксису словарного выражения.
Пример измененного кода:
lst = ['foo'] names = ['foo', 'bar'] out = {k: 'element in list' if k in lst else 'not in list' for k in names}
Нет, try и if - это разные конструкции в Python, предназначенные для разных задач, и их нельзя использовать взаимозаменяемо.
Напищи такой же код заменив if на конструкцию try except x = 5 if x < 10: print("x меньше 10")
Можно заменить оператор if на конструкцию try-except, используя исключение ValueError, например, вот так: x = 5 try: assert x < 10 print("x меньше 10") except AssertionError: pass
Поймал я чатгпт на тупняке, кидает примеры из старых версий языка и так по кругу.
WebDriverWait(driver, 77).until((EC.text_to_not_be((By.ID, "LUL"), "") or (EC.text_to_not_start_with((By.ID, "LUL"), "Loading"))))
Посоветуйте на что выделенное болдом можно поменять, чтобы драйвер ждал пока LUL равен пустой строке или начинался с "Loading".
Моя вполне работающая реализация была вот такая, но понятно что это костыль, хочу правильнее: while (driver.find_element(By.XPATH, '//[@id="LUL"]').get_attribute('value') == "") or (driver.find_element(By.XPATH, '//[@id="LUL"]').get_attribute('value').startswith("Loading")): time.sleep(1)
Аноны, я правильно понимаю, что len() это статичная переменная, а не например какая-то "процедура пересчитывания", которая каждый раз при вызове гоняет список? Т.е. если мне надо часто брать длину списка, мне не нужно записывать его длину в отдельную переменную, можно спокойно каждый раз к его len() обращаться?
>>2617345 len() это именно функция. Под капотом она вызывает метод __len__() переданного ей объекта и уже сам объект решает, возвращать какую-то статичную переменную или считать свою длину каждый раз.
>>2617351 Питонически len(), так как более красиво и читаемо. плюс len() кидает TypeError если длины нет, а если вызывать __len__() у объекта, в котором он не реализован - получишь AttributeError. Разные уровни абстракции. Питонически всё же лучше максимально сократить количество вызовов Dunder методов в своём коде.
может знает кто годные курсы на степике кроме как поколение python? по либам какимнибудь или алгоритмам, только не совсем протухшее
не обязательно степик, просто формат видео совсем не перевариваю, а там зашло решение задачек, но чот я так понял на степике кроме поколения годноты нет вовсе
А вот мне стало интересно - какие концепции в питоне\вообще в программировании оказались для вас самыми сложными для понимания? делитесь, гсопода. и еще, - сможете ли вы теперь обьяснить эту сложную концепцию, уложившись в две строки, так чтобы тупой понял?
>>2617415 Концепции костылирования. Очень сложно понять, до сих пор не могу объяснить. Во вторую депрессию свалишься спустя 3 месяца настоящей работы, когда больше станешь читать чужой код, нежели писать свой.
Смысл учить эти методы, когда можно пару раз прочитать документацию и просто понять что они умеют, чтобы не писать велосипеды в следующий раз.
Документацию открыть можно всегда, но вот если ты не знаешь что метод для твоей задачи существует ты и не подумаешь о том что какой-то твой можно сократить.
Аноны кто знаком с openpyxl ? Вот мы берем значение ячейки cell = sheet.cell(row=1, column=1).value
Если ячейка пустая возвращается None, но как известно офисные тёти сраки любят оставлять в ячейках пробелы, так что Проверки "is None" недостаточно, нужно ещё стрипнуть строку strip. Но строку None стрипнуть нельзя Вот и приходится:
cell = sheet.cell(row=1, column=1).value if cell: cell = cell.strip() if cell: pass
Как эту хуйню упростить? Сделать более элегантной, питонической, я хуй знаю. Строки в никуда уходят смотреть больно.
>>2617351 Нет, у питона автоматом длина во всех объектах записывается во время его создания или изменения.
Магические методы в питонах не вызываются обычно в коде, это чисто для классов, допустим если ты захочешь как-то модифицировать подсчёт элементов в списке, что бы это было не просто число, а какое-то сообщение в добавок
Суть вот в чем, я захожу на сайт, на страницу с модалкой для авторизации, мне сервер назначает временный кук, когда я залогинился, кук меняется на новый и живет пока я не закрою окно/перезагружу страницу. Вот в чем мой вопрос, порядок действий при авторизации: 1.отправляется пост запрос на сервер 2.сервер в ответе назначает новую куку 3.меня залогинивает
Как должен выглядеть пост запрос, чтобы при запросе я забрал новую куку и она добавилась в запрос, чтобы сервер меня залогинил.
Не знаю правильно ли я описал, но затуп с request cookies / response cookies
Срочно нужна помощь анона. УЖЕ учусь на python, прошел БАЗовые курсы на степике, но так и не решил, в какого именно питониста вкатываться? Подскажите критерии для входа там во фронтед, дата сайнс или че еще есть
>>2616755 (OP) Привет, получил затык есть данные в БД необходимо, чтобы телеграм бот выводил данные из БД в ответ на команду
При выводе в терминал получаю всю таблицу Если пытаюсь скормить результат боту - бот выводит только первое значение рабочий + закоменченный Куда копать?
>>2619011 Воспринимай bot.reply_to как return. То есть один раз дёрнул - ответ ушёл, цикл закончился. Тебе надо сериализовать таблицу в одну строку например join'ами и вернуть уже её.
Сегодня часа три корячился над написанием крестиков ноликов, в которых игровое поле представлено списком из трёх списков, одна функция его печатает, вторая ставит крестик/нолик в определённой части списка и третья проверяет наличие комбинации из трёх одинаковых символов, а всё это вызывается из одной главной функции. Так и не сделал, наваял какого-то огромного франкенштейна и вышел из пайчарма когда шестерёнки в мозге уже окончательно отказывались работать. Завтра встану и опять буду пытаться. Какой же я тупой гуманитарий, это пиздец, вайтишник хуев. Вот какого хуя три иностранных языка освоил до уровня ~C1 вообще играючи, а когда стоит задача сделать что-то вот такое конкретное, то есть представить в голове алгоритм/схему, разбить на куски и реализовать мозг работает как будто я даун аутист с айсикью 50? В школе/универе всегда были проблемы с математикой, физикой, геометрией, всем короче где есть какие-то формулы и задачи. Как блять качать эту часть мозга? Понятно что наверное есть изначальная предрасположенность технарь/гуманитарий, но я не поверю что нельзя как-то прокачать свою технарьскую часть мозга даже будучи конченным говнонитарием.
>>2619217 Осваивай Numpy, не трать время не бесполезные костыли. >Как блять качать эту часть мозга? Тебе нужно прокачать способность не делать костыли. Постепенно освоишься, полтора месяца ещё не так уж и много.
Тут просто питон сам из коробки с двухмерными и более мерными массивами работать не умеет толком. Потому, что в питоне из под коробки массивов нет в принципе.
И для новичков в питоне подобные попытки писать костыли и являются главной проблемой в начале, потому что питон позволяет это делать, лол. На питоне легко такой хуйни навертеть, когда ты лишь едва-едва выучил синтаксис, что самая простенькая программка отправит твой комп в нокаут.
>>2619217 >Как блять качать эту часть мозга? Никак, есть предрасположенности. У нас был класс с айтиуклоном, один день вообще в универ на занятия ездили. Так вот уже из ауе быдла были селектированы более склонные и желающие заниматься айти и там я и пара человек тащили, остальным похуй было. Когда я попал в универ там все где-то на моём уровне были и только пара человек реально лучше соображали. И вот к нам попал тип который вообще всё играючи решал то на что у других десятки минут уходили. Это тупо талант, да и к тому же нахуй не нужный, лучше простое человеческое счастье. Да а дрочи код особенно в обучении с чатомджипити, эта штукенция обучение точно перевернет, учителя скуфы сразу нахуй.
r = requests.get(url, stream=True) with open(filename, "wb") as file: ...for block in r.iter_content(chunk_size = 1024): ......if block: .........file.write(block)
Аноны, у меня логика сломалась поясните за вот эту хуйню. Что будет, если последний chunk меньше 1024. Он что не сохранится? Я именно так вижу. Но на практике всё сохраняется. Чому? ЯНХНП
>>2619217 >когда стоит задача сделать что-то вот такое конкретное, то есть представить в голове алгоритм/схему, разбить на куски и реализовать мозг работает как будто я даун аутист с айсикью 50 С чего это ты решил, что автоматически, что называется из коробки должен уметь решать такие задачи? Может ты еще и высшую математику знаешь с рождения? Выставляешь себя типа умным, а сам дурак, не понимаешь элементарного, что ты дилетант в алгоритмах/программировании. Это нормально, все дилетанты пока не научатся. Догнал? Надо учиться.
>три иностранных языка освоил до уровня ~C1 Толсто
>вообще играючи Жир. И как бэ, это не имеет ничего общего с программированием/алгоритмами. Если ты пытаешься применять подход для обучения естественным языкам в обучении программированию/алгоритмам, то у тебя ничего не выйдет. Такой подход не годится.
Обучение программированию/алгоритмам это не заучивание слов и их значений на незнакомом языке. Это как минимум мышление абстракциями, как в алгебре, оперируя кодом и данными абстрактно, представляя их как xyz. Это способность вести рассуждения, находить закономерности, делать логические выводы. Это и чисто алгоритмическое мышление, которое отличается от алгебраического. Для обобщения придумали термин "вычислительное мышление" (computational thinking). Короче, немного сбился с мысли, если есть желание порассуждать, то пиши, только учти, что на неадекватную херню адекватных ответов от меня не дождешься.
>>2619583 Ебать тебя не должно, если ты не разработчик cumпиляторов или не низкоуровневик, но для большего понимания хорошо разбираться в том, в какой области памяти у тебя что лежит и какие структуры для этого используются.
>>2619584 >Ебать тебя не должно, если ты не разработчик cumпиляторов или не низкоуровневик, но для большего понимания хорошо разбираться в том, в какой области памяти у тебя что лежит и какие структуры для этого используются. Чиво? Какие еще области памяти? Стек это структура данных, как и хеш-таблица.
>>2619839 Нет это был не я. Просто мое абстрактное мышление под "индексом" нечто другое представляет. Нечто упорядоченное, а под хэшем я представлял некую извилистую, но точную карту до объекта, которая у каждого уникальная как адрес в памяти. Ну индекс и индекс, хорошо. Рад новым знаниям.
>>2619911 >У хеш-функций случаются коллизии. Когда один и тот же хеш указывает на разные данные. Верится с трудом, чел. Это бы означало, что на такую систему нельзя полагаться и в ней нет смысла.
>>2620098 >Чел, любая хэш функция Почему это? Есть конкретные уязвимости у конкретных реализаций. Про siphash написано что он не имеет тех уязвимостей которые были у MD и SHA, например.
>>2620095 Ну и что ты притащил? Какой-то пост 14 летней давности с общей инфой про хэшмапы.
>>2620107 >Почему это? По принципу Дирихле. Если например у тебя множество ключей - это строки длиной десять строчных символов английского алфавита, то всего таких ключей будет 26^10. Чтобы гарантированно избежать коллизий, нужно выделить столько же индексов в хэш-таблице.
>>2619918 Иди на хер, дура. Анон спрашивал про стек как структуру данных, которую он будет использовать в алгоритмах. Ты пишешь про не нужную ему хуйню, внутреннее устройство языка программирования, которое к алгоритмам и структурам данным не относится. Засунь себе в жопу это всё.
>>2619922 >Верится с трудом Бля, тут что тебе угадай мелодию что ли? Верю - не верю. Да мне пох, веришь ты или нет. Иди изучай тему.
>>2620138 Да не рвись ты так, шизоблядина. Он конкретно спросил "что такое стек, хэш-функция и зачем это нужно", никакого контекста про структуру данных не было, это ты уже за него додумал. Обтекай.
>>2620159 >никакого контекста про структуру данных не было Долбоеб, стек - структура данных, хеш-таблица - структура данных, какой еще нужен контекст? Это ты начал не по теме писать.
>>2620179 Ебанат, прочитай ещё раз ответ >>2619584 >в какой области памяти у тебя что лежит и какие структуры для этого используются. Ты так малясь проигнорил это, зато доебался до "памяти", когда как "стек" является и структурой данных и как отдельная реализация памяти и как организация работы программы. Ещё раз. Где в его вопросе фигурируют "структуры данных" и "алгоритм"? Нигде, это ты за него додумал. Но раз ему не хватило мозгов погуглить, ему дали общий ответ на его общий вопрос.
>>2619584 Я тебя не понял, что ты написал. Я вкатун, мне советовали изучить структуры данных и алгоритмы, поэтому и спросил про стек и хеш-таблицу, потому что это первые попавшиеся непонятные мне слова. >>2619714 Понял. Спасибо. А есть какие-то конкретные задачи, гдп на примерах поясняется чем использование стека/хеш-таблицы лучше? Второе используется в БД или я нихуя не понял опять? Ну типа у нас есть какая-то ключ (например, ID) и мы по нему можем вытащить всю информацию? Это принцип работы хеш-таблицы? Сорри за нубские вопросы. Из алгоритмов я вообще пока понял только сортировку пузырьком. Или >>2619584 прав был и джуну это не нужно знать?
>>2620199 >Я тебя не понял, что ты написал. В чем проблема это загуглить?
>А есть какие-то конкретные задачи, гдп на примерах поясняется чем использование стека/хеш-таблицы лучше Почитай их описание и сам прикинь, в чем они могут быть полезны. Словари и множества в питоне реализованы на основе хэш-таблиц, а вызов вложенных функций реализован на основе стека.
>Или >>2619584 прав был и джуну это не нужно знать? Джуну надо знать про эти слова и что они могут значить, но на практике ты редко эти структуры сам реализуешь, всё это сделано за тебя.
>>2620199 Ты прямо совсем платиновые вопросы задаешь, на которые отвечают в любом курсе по питону. Типичная задача на стек: проверка скобочной последовательности на правильность, на хэш-таблицу - проверка наличия дубликата в списке.
>>2620196 Баран, стек - АТД, структура данных, и ничего более. То что эта структура данных используется в механизме вызова функций и для хранения некоторых данных в рантайме языков программирования, - ничего не значит. Если бы стек вызовов называли массивом, ты бы орал, что массив это стек вызовов?
>>2620196 >Где в его вопросе фигурируют "структуры данных" и "алгоритм"? Нигде, это ты за него додумал. Баран, стек - АТД. Всё. Он спросил что такое стек и хеш-таблица, что подразумевает, что имеются ввиду структуры данных. И то и другое АТД. И вообще, если с помощью стека реализовано много разных фич, не означает, что под стеком понимают их. Только долбоебы так думают. Стек - АДТ. Всё.
>>2620199 Ты так ничего и не поймешь. То есть поймешь, но не сразу. Чтобы понять одно, нужно знать другое. И так по цепочке. Если есть куча времени, желания и сил, то можешь пытаться охватить как можно больше одновременно. Я так делал. Это долгий путь. Тебе не хватает наглядности. Посмотри "тренировки по алгоритмам" от Яндекса на ютубе. Еще есть "тренировки по алгоритмам 2.0" и недавно запустили 3.0. И старайся что изучаешь переводить в код, запускать, изменять. Так ты намного быстрее будешь усваивать знания.
Какой язык предпочел? Еще советую налегать на задачи. Попытайся использовать не только подход, когда ты не знаешь что-то из терминов программирования и пытаешься это понять, но также подход, когда ты берешь задачу и пытаешься ее решить, попутно тебе придется изучать то что не знаешь в программировании, что требуется для решения задачи.
Полюби решение задач. Обучение через решение задач прокачивает быстрее, чем просто изучение незнакомого. Твой фокус сместится с необходимости изучить бесконечное число знаний, на решение одной задачи в один момент времени. Так ты не будешь перегружать мозг. Ты будешь всегда знать что тебе нужно делать прямо сейчас, потому что держать в голове одну задачу очень легко, а держать в голове, что нужно изучить бесконечно много терминов очень сложно. Ты будешь путаться, забывать, перегружать мозг.
Сайтов с задачами великое множество. Используй что хочешь. Можешь попробовать проект Эйлер. Не бойся смотреть готовые решения. Не пытайся все решить сам с первого раза. Все равно, даже подсмотрев у кого то, ты не сможешь с первого раза повторить реализацию на память. Кроме того, будут попадаться похожие задачи, но под которые нужно что то менять, это тоже будет способствовать самостоятельному составлению решения, пусть и на основе базового предыдущего. Изучай разные методы решения, грубые, изящные, всякие. Главное именно все реализовывать в коде.
>>2620211 >вызов вложенных функций реализован на основе стека Не на основе, а с использованием стека в качестве АТД хранящей данные вызовов. Не вводи в заблуждение. И лучше сам по глубже изучи, чтобы не плавать.
>на практике ты редко эти структуры сам реализуешь Зачем хуйне учишь? Умничаешь, иди сам поучись лучше. Когда попросят реализовать простейшую структуру как стек и он не сможет, это будет фейл.
Пиздец какой-то бариста-вкатун задал мммаксимально тупой вопрос уровня "ыыыы а що такое погромировать" и сцепились два УЧИТЕЛЯ, спорят кто лучше ему жопу подтер. А надо было просто его в гугл послать, потому что сам вкатун ни одной единственной извилиной не пошевелил для своего "обучения".
>>2620217 Да не гори ты так, а то геморрой на весь тред вылез. Орёшь пока только ты, как и продолжаешь игнорировать полный ответ, доёбываясь до конкретных слов как удобно тебе. Как и обосрался бы с ответом, если бы тебя спросили "что такое куча и стек", будь ты таким же упёртым АТДшником.
>>2620233 >хранящей данные вызовов. Но он хранит не только их.
>лучше сам по глубже изучи, чтобы не плавать. Учу, и хорошо, что не по треду в /pr/.
>Когда попросят реализовать простейшую структуру как стек и он не сможет Для этого достаточно прочитать википедию, вспомнить про список и реализовать класс с 2 методами, а работодатель просить тебя будет не типы данных реализовывать, а таски закрывать с сроком вчера.
Аноны, какой самый питонический путь чтобы убрать\удалить\отключить метод у наследуемого класса? На стаковерфлоу советуют 1) изначально пересмотреть наследование чтобы не пришлось ничего удалять 2) перезаписать метод заглушками
Без этих двух вариантов неужели нет общепринятой практики на этот счет? В Си например для этого есть приватность - которой в питоне нет. А как?
>>2618903 У цябе памалковыя уяўленьні. Кука вызначаецца сэрверам, а не тваім запытам. Кука, калі, ты, кліент яе маеш, будзе заўсёды дасылацца на адпаведны сэрвэр.
1. POST запыт змяшчае імя карыстальніка й пароль, таксама адрас server.com/login ці загад command=auth, гэтыя словы ты сам выдумляеш.
2. сэрвэр, калі бачыць request.path=login ці request.command=auth, правярае username & password. Калі знайшліся, то да адказу сэрвера ў response.header дадаецца кука session=ik48h48u7fhwsdreig2... ВАЖНА, дадаць гэтую куку да адказу патрэбна перад пачаткам вываду старонкі, каб яна была ў хэдары. Cэрвэр мае сгенерыць і захаваць гэты session.
Усё. Табе патрэбна напісац код другога пункту для сэрвэра.
А можно в вижиал студио всякими колорамами расскрасить текст именно в окошке аутпут? В терминале он и так раскрашен. Ставил всякие Output Colorizer толку ноль.
>>2620641 Тебе интерпретатор намекает на 14 и 22 строки. Твоя задекорированная функция что-то возвращает? Да. Значение внутри декоратора, которое должно возвращаться функцией, возвращается? Нет. Внутри декоратора wrapper должен возвращать результат работы func(n).
>>2620665 кого выносить в отдельную переменную О_о? Проблема в декораторе или в функции g? Можешь начинающему написать здесь правильный код с 11 до 22 строки, пожалуйста.
>>2620688 Ну и? Код работает, а что тебе конкретно надо от твоего кода, ты так и не объяснил, а додумывать и искать контекст, как тут любят, я не буду.
>>2620700 Для начала ещё раз прочитай, что такое рекурсия. Потом можешь поэтапно посмотреть, не на примере n = 10, а n = 3 или 4, как у тебя отрабатывает декоратор. Если тебе нужен только финальный результат, то закомментируй @decorator над g и вместо print(g(10)) напиши decorator(g)(10).
obj = MyClass(data) obj.add_to_dict() Аноны, вот я захуярил класс который сам себя добавляет в некоторый словарь, после необходимых калькуляций над data. Но что-то я перестарался походу. Вопрос такой, какой синтаксис можно применить чтобы вызывать метод без экземпляра (хочу поэкономить строки)
Как то так: MyClass(data).add_to_dict() но так не работает, т.к. экземпляр класса не создан... наверное.
Если я добавлю self.add_to_dict в конструктор класса, то так сработает, обьект сразу улетит в словарь, но мне бы хотелось перед этим и другие методы например поприменять, вроде такого: MyClass(data).do_shit().add_to_dict() Можно ли как-то так сделать, есть синтаксис такой? Или обязательно надо явный обьект спавнить в переменную?
Аноны, чому нельзя удалять ключи словаря во время его итерации? Понятно как это обойти - итерировать список ключей, но вдруг на это есть весомые причины и лучше вообще так не делать, а записать ключи на удаление и потом отдельно их удалить в отдельном цикле?
Случайно передал в функцию модуль вместо класса и сидел минут 10 тупил какого хера компилятор ругается, что в каком-то там модуле нет атрибута append. Хорошо, что я не в Си это написал. Надо чаю пойти заварить...
>>2619217 Я уже 3 года на работе создаю на питоне веб-сервисы, работаю с базами данных от редиса до кликхауса, автоматизирую кучу разной хуйни, применяю асинхронку, но даже я сходу не смог бы придумать, как написать крестики-нолики, виселицу, шахматы и прочую поебень, которой учат во всех учебниках после второго урока. У меня эта часть мозга, как ты выразился, вообще не работает. Так что завязывай с этой хуйней и приступай к проектам, которые делают что-то практическое. Напиши парсер вакансий с ХХ, сделай свой виджет для получения прогноза погоды, хуй знает.
Как скачать все webm+mp4 файлы из трена на дваче? Хочу скачать весь музыкальный тред Если такой возможности нет, можно ли написать скрипт на пайтоне который это сделает?
>>2621108 Если только начинаешь и не умеешь работать с апи, то сделай топорно, просто чтобы оно работало. Скачай страницу (хтмл), прочти его тупо как строку и выдерни оттуда все ссылки с окончанием mp4 или webm при помощи регулярных выражений.
Короче, после многолетних сычеваний и дрочения теории и просто лени, я дошел до того, чтобы записаться на курс в практикуме. Не хотел до последнего, но выбора нет.
>>2621150 > опенсв Это просто макака у нас тут на дваче глупенькая. А можно было бы сделать так. 1 Прикручиваем капчу как на форчонге с ползунком в которую можно внедрить сколько угодно процедурных шумов и типы шрифта менять хоть каждый день в автоматическом режиме 2 Из за того что там ползунок двигать надо в сервис разгадывания не отправишь, чтобы обучить нейронку нужно самому неделю эти капчи разгадывать
Вот и всё ёпта. Пока ты неделю дрочишь капчи в ручную чтобы базу обучения собрать и потом ещё сутки у тебя нейронка учится (т.к. капча сама по себе сложная) ты меняешь шрифт и шумы в самой капче.
Анимач целый год какой-то школьник засирал вайпом что его даже закрыли на хуй на пол года и до сих пор там вайпает ингда. За это время у макаки не нашлось желания и небольшой горсти бабла чтобы нанять рандомного челика из этого ИТТ треда чтобы он всё сделал за сутки.
>>2616755 (OP) Синьёры архитекторы, объясните джуну, когда нужно юзать асинхронщину? Я спрашиваю именно про этап проектирования. Все вычислительные операции параллелятся на подах, тредами можно всю и/о инфу так же получить/записать через пулекзекьютор. Нахрена тогда все эти асинки, в душе не ебу, у нас на проекте их нет. Я знаю, что такое ивент луп и коррутины, и что это в плане синтаксиса проще написать евейт и не париться, но хотелось бы услышать от профессионалов, когда лучше архитектуру проекта делать полностью завязанной на асинк, а когда лучше просто всё по ивентам раскидать, а для и/о взаимодействий использовать треды?
>>2621137 >я дошел до того, чтобы записаться на курс в практикуме И что по твоему он должен тебе дать? Я лет 10 назад вкатывал в ойти своего родственника и я после пары дней тренинга сразу предложил идти на работу дал своё портфолио и рассказал о каком опыте работы напиздеть. Короч естественно первый месяц был пиздос, а потом всё раздуплился.
Самый лучший способ. А вот этот дроч на курсах часто особенно раньше с реальной работой ничего общего не имел, я в универе дрочил языки которые мы проходили еще через пару лет и ничего что изучил сам потом в программе нового не открыл.
Единственное что тебе надо, это когда затуп найти выход из него и это должна быть реальная ситуация а не выдуманные примеры. А ни на каких обучениях этому не научат, а только если коллектив больменее нормальный попадется.
Учу JS уже лет 6 наверное, 5-7 раз начинал и бросал через неделю-месяц, уже почти наизусть знаю основы, замыкания и прочую лабуду "по верхам", но практики маловато, в реакте том же и т.д, хоть и верстал разное с небольшими скриптиками. А практика это БааааааааЗаааааааааа, учишь - делаешь сразу проект/задачки что бы закрепить знания, вот так и сижу недо-джуном 5+ лет хыыыыы
>>2621137 >я дошел до того, чтобы записаться на курс в практикуме И что изменится? Проблема не в плохих курсах, а в тебе. Сколько ты решил задач за всё время? Должно быть сотни, тысячи. Сколько ты написал приложений? Должно быть десятки. Если ты этого еще не сделал, то тебе не помогут никакие курсы. Ты спросишь как же решать задачи и писать приложения если не умею. Просто берешь и делаешь. Тут работает метод "просто ввязаться в драку, а там видно будет". Придумай проект. Декомпозируй на мельчайшие задачи. Выполняй пошагово. Будь терпеливым, не бросай, не пытайся делать идеально, главное чтобы проект был закончен и он работал.
>>2621195 Появится план, дедлайны и цели. Новички не могут придумать себе задачу, они даже не понимают что вообще реально можно делать. Курсы в этом плане могут дать значительный бурст. мимо мидол, был в такой же ситуации когда учил англюсик
>>2621197 Не, на самом деле придумать проект легко, просто людям лень, можно просто брать чужие идеи и делать копию, есть всякие паблик API и т.д, вся суть в гребаной лени
>>2621222 Это ты с точки зрения своего опыта говоришь, а новички прост не знают, что такое вообще можно, они очень часто не понимают, чем вообще занимаются программисты.
>>2621412 Да об этом я думал, но хотелось бы на уровне теории и концепций почитать-посмотреть, что бы уже после и в других приложениях лучше понимать зачем они всё так распихивают. Хотя я тут, как обычно, могу всё усложнять в своей голове в довесок
Прошёл курс по созданию бота. Вроде создал по курсу, вроде работает. Сел за своего с нуля и понял, что нихуя не знаю, лол.
Пошёл просто по документации, проверяя всё, что в ней написано на деле и дело сразу же пошло. Так уж и прихожу к выводу, что нафиг все эти курсы, сразу же надо идти в документацию. А потом можно и видео для примеров посмотреть или просто другие примеры с какого-нить гитхаба скачать
Вот так работает: if count: if name not in users: users[name] = {w+'_count': 0 for w in search_words} users[name]['comments'] = [] users[name][word+'_count'] += count users[name]['comments'].append(comment)
А вот так ругается на синтаксис второй строки, подскажите как её правильно написать: if count: users.setdefault(name, {w+'_count': 0 for w in search_words, 'comments': []}) users[name][word+'_count'] += count users[name]['comments'].append(comment)
>>2622284 if count: users.setdefault(name, {w+'_count': 0 for w in search_words}) users[name]['comments'] = [] users[name][word+'_count'] += count users[name]['comments'].append(comment
>>2622300 >users.setdefault(name, {w+'_count': 0 for w in search_words}) >users[name]['comments'] = [] Ну это то же что и в первом примере, а объединить эти строки можно?
>>2622519 >для анализа данных на Python? Дефолтный ответ - Jupyter поверх Anaconda. Всевозможные отклонения от него будешь изучать когда с этим разберёшься.
Jupyter это уникальная среда разработки, идеально подходящая для постепенного пердолинга с чем угодно
Anaconda это гигантский дистрибутив питона с настроенной кучей говна доп. модулей в том числе вместе с Anaconda устанавливается настроенный на работу Jupyter
> PyCharm, VS Code если дефолтный веб-редактор тебя не устраивает, можешь настроить vs code в качестве редактора пайчарм тоже можно настроить, но только платную версию, поэтому нахуй
>>2622551 > что лучше - Anaconda или PyCharm Anaconda - это средство установки и управления пакетами, при помощи Anaconda можно поставить jupyter и numpy. PyCharm - это IDE, редактор кода, он не управляет пакетами.
> надо установить Anaconda и там уже будет Jupyter Да.
>>2622551 А если сравнивать PyCharm и Jupyter, то гипотетически PyCharm в руках паверюзеров должен уметь больше. Но 99% материалов для вкатывальщиков будет написано для Jupyter, потому я бы по началу не тратил свои ресурсы на PyCharm.
>>2622615 Бля, спасибо за инфу чел. Тогда другой вопрос: Если json, например, нет в документе, то такой код будет выводить ошибку. Т.е. такие аннотации надо в кавычках писать? "json"
Сап питонач. Взываю к адептам джанги. Пик 1 представление возвращает страницу с переменной pook = None, но если метод POST, то отрендерит pook = srionk. При обновлении страницы pook опять равен None. Как реализовать тоже самое с CreateView? Пробовал обновлять extra_context (пик 2), но в этом случае pook фиксируется значением srionk навсегда, а надо None при обновлении страницы. Возможным решением вижу оверрайд метода get_context_data() (пик 3), но не понимаю как бы ему передать новое значение pook.
>>2623214 Разобрался. Думаю ты понимаешь, что в реальности всё сложнее. Добавил возврат объекта в методе post, но столкнулся с проблемой задать id этого объекта в качестве инициального значения одного из полей обновлённой формы. На пике принт в консоль ожидаемый, а страницу рендерит без инициального значения и с ошибками необходимых полей. Ебанутое ооп. В виде функции уже давно бы всё сделал.
>>2623447 Телебот это модуль, тебе из него нужно достать нужный класс. Наверняка он называется телебот, попробуй поменять импорт на фром телебот импорт телебот.
Аноны, как взять ключ из словаря и если его нет None? Get возвращает значение, а мне нужен сам ключ. If else слишком много места занимают, даже в одну строку.
>>2623447 telebot.telebot(token) наверное. точно не скажу, ибо пишу не на нём бота. Но учитывая, какой ты импорт сделал должно быть как-то так. Тут импортируй from telebot import (нужное)
>>2623553 хотя лучше просто проверять возвращает ли что словарь с этим ключём, если да, то возвращать ключ, если нет, то None, а не делать перебор через keys()
>>2623581 Странно, я вот иногда смотрю всякие популярные библиотеки вроде requests и там всю дорогу сверху до низу всё на тернарных выражениях. Кто как не такие сверхпопулярные модули задают моду и формируют стиль для всего комьюнити. Так может это ты рак?
Питоны, подскажите название нейросети, если такая есть, которая может по образцу голос скопировать. Гуглил долго и нашел только одну такую нейросеть от российских (вроде бы) разработчиков, но они в целях безопасности убрали из открытого доступа возможность тренить. Оставили только какого-то обглоданного телеграм бота, который несколько голосов из популярных видеоигр копирует.
Ну так вот кто в курсе последних течений, может появились какие модели в открытом доступе?
Я если что не мошенник какой, у меня просто есть давнишняя мечта сделать озвучку одной моей любимой актрисы озвучания. Короче мне сугубо для себя нужно и для общего развития.
>>2623447 >>2623452 >>2623549 нужно было, оказывается, вызвать конструктор класса а не модуль bot=telebot.TeleBot НОООО ТЕПЕРЬ ПРОБЛЕМА В ДРУГОМ когда я через python main.py запускаю программу, то терминал отказывается работать чо это вообще такое???!!!! как быть, Аноны?
Аноны, это нормально запихивать простую функцию внутрь конструктора класса? Просто мне эта функция вообще больше нигде не нужна кроме этого места и более того я не хочу чтобы она была в наследниках.
>>2623694 ну и я посмотрел, никакой особой документации по телеботу хорошей реально нет, видимо какая-то мелкая примитивная библиотека. на гитхабе последнее обновление было в 2021, если я ничего не путаю, лол.
Выкидывай этого телебота в помойку, это дохлая библиотека и смотри другие. Тебе по ней даже подсказать никто ничего не сможет, никто не пишет.
>>2623714 Пиздец. Телебот буквально двухкопочный модуль. Даже мая бабуля разобралась бы, а она 20 лет как на том свете. Там синтаксис буквально в одно предлоджение умещается лепи декораторы а всё остальное - обычная приложуха на питоне.
>>2623720 Анон, я только сегодня для себя это открыл, отсюда и такие вопросы. Ща буду пытаться вникнуть в это с помощью ютубчика и чего-то простого для начала
>>2623725 Так и есть, строго говоря, другой человек не будет со своим языком лезть на форум, где на нем не общаются. Мы же не заваливаемся в технотематику форчонга и не начинаем отвечать там на русском.
просто конвенция такая в pep8. в питоне нет понятия private бай дизайн
переменная или метод с подчеркивания сигнализирует что это что-то "приватное", внутреннее, и трогать это не надо. всякие интеллисенсы в иде их скрывают или отображают внизу списка
для твоего случая есть даже две конвенции: 1) внешняя функция начинающаяся с подчеркивания > _single_leading_underscore: weak “internal use” indicator. E.g. from M import * does not import objects whose names start with an underscore.
2) манглинг имён, префикснутых двумя подчеркиваниями > If your class is intended to be subclassed, and you have attributes that you do not want subclasses to use, consider naming them with double leading underscores and no trailing underscores. This invokes Python’s name mangling algorithm, where the name of the class is mangled into the attribute name. This helps avoid attribute name collisions should subclasses inadvertently contain attributes with the same name.
Как лучше и надежнее всего выковырнуть имя файла из ответа в реквестс headers. Ключ 'content-disposition', есть "filename=" но часто бывает разножопица, то пробел лишний подставят то точку с запятой. Без регулярок может есть решение в модуле os например или в самом реквесте?
Анон, такое дело. Пишу тестовое на сборщика серверов, и там в том числе такой вопрос. > Поясните в двух словах конструкцию на Python (и что она выведет в интерпретаторе): > map(lambda m: m*m, filter(lambda m: m < 4, [1,4,5,10])) Хер знает зачем мне это пригодится знать, но судя по вопросам - они их дернули просто из интернета и присылают всем. Что на это можно ответить? Может ли кто-нибудь расписать?
>>2623903 Я не программист, но похоже вся часть. Погуглил чуть и предположу следующее - берем из массива все числа меньше 4 (в нашем случае это только 1), и возводим в квадрат (m*m) Map похоже ничего не выдает, если работать через print(list()), то мое предположение как будто сходится, если увеличиваю 4 до 11, то вывод - все эти числа, возведенные в квадрат.
>>2623914 Пиши так. Эта конструкция возвращает генератор, который последовательно просматривает элементы списка (1,4,5,10) и если элемент меньше четырех - возвращает его квадрат.
>>2623916 >>2623920 Спасибо за оперативный ответ! На удаленном сервере у меня питон2, он выдает квадраты в изначальном виде. На вин машине дома питон3, он выдает про map object. Распишу подробнее обе ситуации им. >>2623916 Что такое генератор в моем случае, можешь в паре слов расписать? >>2623923 >>2623920 Как обернуть в лист? Подскажите не программисту, и так все мозги сломал об эту конструкцию, не хотел показаться итт тупорылым, который даже не смог в гугл.
>>2623927 >Что такое генератор в моем случае Это такой объект, который выдает значения по запросу итератора. тебя же просили в двух словах, а ты уже углубляешься в итераторы.
>>2623800 Круто, а что на счет переменных. Вот я сейчас называю особо важные переменные, те которые используются в более чем одном обьекте с нижнего подчеркивания, чтобы с первого символа себе сигнализировать - это важная переменная, следи за ней ничтожество, а константы я называю _ВОТТАК что это вообще трогать нельзя. Всё правильно делаю?
>>2623968 Ещё можно в конце предложения добавлять "Ещё вопросы остались?" как бы ментально передавая сообщение типа "ты - тупой чтоли, чего не понятно?"
>>2623972 >а константы я называю _ВОТТАК что это вообще трогать нельзя
это просигнализирует о том, что это внутренние константы. их не будет импортировать их через импорт звездочкой с семантики "важных" переменных проиграл. назови уж very_important_number_of_apples, хуле
>>2623976 Константы в пепе большими буквами рекомендуют писать, а то что нижнее подчеркивание это weak internal use indicator это вообще бимба и как-то нелогично. Во первых нижнее подчеркивание сразу бросается в глаза, во вторых оно редкое и по этой причине выделяется. МАГИЧЕСКИЕ методы начинаются с подчеркиваний, что как бы демонстрирует их важность. Для меня совершенно логично что нижнее подчеркивание в начале переменной это сигнал о важности.
>>2623984 непопепер это кто именно? у кого не по пепу или кто другим говорит, что у них не по пепу?
просто при всех "безобидных" отклонениях от пепа, андерскоры таки влияют на поведение интерпретатора и линтеров в иде. важная переменная является НЕВИДИМОЙ переменной в пичарме, то есть имеет прямо противоположное значение
Изучаю джангу , и наткнулся на пикрил. Подумав немного пришел к выводу что метод наследуется из models.Model . Но тут вопрос , почему именно choice_set? Так совпало или models создает classname_set метод для каждого класса внутри себя?
Такое ощущение что чат гпт пересадили сейчас на ограниченные ресурсы или старую версию, пошел тупняк в сравнении с тем как он решал еще вчера-позавчера.
Аноны как питонически всего проверять есть ли переменная. Рабочая среда ЮПИТЕР, там если не перезагружать всё (что разумеется никто не делает) переменные могут с прошлой недели лежать в ячейках. Возникла необходимость написать разные скриптны именно для организации рабочего пространства и нужно проверять есть ли переменные. 1 if 'name' in locals как то не очень красиво. 2 try: вообще плохо, потому что в except приходится писать pass а это режет глаз.
Аноны, подскажите в какую сторону двигаться. Проект по крипте, нужно анализировать лимитные заявки в стакане на разной глубине. Каждые 15 мин в бд добавляються новые данные и это нужно проанализировать и найти всплески заявок по обьему за сутки.
Я думаю это в сторону ml, но может кто-то имел дело с похожим кейсом и посоветует либы / что почитать
>>2624652 >>2624670 Спасибо, сейчас посмотрю. Мне нужно что бы кумулятивно данные накапливались в течении суток и новые данные сравнивались с предыдущими. На сколько большие там отклонения
>>2625009 https://ideone.com/MARkye Для остальных задач точно такой же код, только разное условие в 8 строке Для 4 - num % 3 == 0 and num % 10 == 1 Для 6 - not num & (num - 1)
Привет, питонач. Есть список словарей a = [{'key1': 'value1'}, {'key2': 'value2'}] Есть код с функцией, которая должна возвращать значения словарей.
Реализовано с помощью класса, в котором определены три функции. Первая - инит со списком словарей, вторая пробегает по списку, находит соответствия и вызывает третью функцию (геттер), на которую навешен декоратор, преборазовывающий строку в формат utf-8. Хочу создать библиотеку смайлов с едой для бота.
В принципе всё работает, но мне очень не нравится то, что в декораторе геттера аргументы *args раскладываются на кортеж (self, arg) и соответственно декоратором я указываю срез аргументов, который мне надо вернуть. Посмотрите код и по возможности ткните, чтобы избавиться от костыля. http://tpcg.io/_QXAMHE Спасибо.
>>2616755 (OP) Я учусь писать телеграм бота, использую библиотеку aiogram 3 и столкнулся с такой ошибкой. Гуглить не получается, в документации вроде так же написано как и у меня. Прошу помочь анонов, что я сделал не так? Как сделать чтобы работало?
>>2625859 listed_emoji ты сам заполняешь? Если да, то говно сделал. Делаешь обычный словарь со значениями и мозг не ебёшь. Если нет, то все равно говно сделал. Слей свои массивы словарей в один и делай то же самое
Если ты практикуешься писать классы, то убери декоратор и прямо в своей функции сделай decode. Ты вызов одного метода декоратором обернул зачем-то
Если ты практикуешься писать декораторы, то принимай первым аргументом в декораторе self, а вторым остальные аргументы. Но пример такой себе для обучения
>>2626132 >>2625897 >сам заполняешь Нет, буду использовать какой-нибудь сиквел и парсить сайт с эмоджи, заполняя поля бд "ключ", "значение". Также хочу прикрутить какое-нибудь йоба-обучение, чтобы, при написании "клубничка" предлагалось что-нибудь навроде "клубника = клубничка?", ответ запоминался и соответственно вызывался смайлик по условию. >ты практикуешься писать классы Да. >ты практикуешься писать декораторы Да.
Про код: переделал. Заполнил список тремя элементами: двумя рабочими и одним, который явно вызывает эксепшн. Определил ошибку. Переработал также сам декоратор, но загвоздка, аноны вот в чём. В списке словарей listed_emoji словарь должен иметь тип значения именно байты(строки 25, 27), иначе эксепшн. Я понимаю, что можно это было сделать декоратора, наверное, но при любой попытке даже None не возвращается. >def get_emoji(self, utf_code: str): >----return bytes(utf_code, 'utf-8').decode('utf-8') Поэтому я был вынужден сделать костыль-декоратор. Какие советы? С удовольствием послушаю. http://tpcg.io/_BGPPBL
В чём смысл мультисловарей? {'name': 'Abu', 'order': 'primates', 'species': 'macaca radiata'} Как по ним итерировать, если допустим таких json много и они записаны в список? Допустим, если значения одинаковы для всех словарей внутри списка, то несложно пройтись маппингом a = [{'name': 'Abu', 'order': 'primates', 'species': 'macaca radiata'}] names = list(map(lambda x: x['name'], a] и тд А, если каждый словарь содержит разные ключи? Изучать их перед итерацией?
Анон, пытаюсь написать телеграм бота по докам. Столкнулся с пикрил ошибкой, интернет и гугл истыкал - не понимаю в чем дело. Алсо почему импорт телеграм серым?
>>2626589 Декоратор - это сахар. Все, что можно сделать там, реализуемо и в обычной функции
> В списке словарей listed_emoji словарь должен иметь тип значения именно байты(строки 25, 27), иначе эксепшн. Я понимаю, что можно это было сделать декоратора, наверное, но при любой попытке даже None не возвращается. В функции сначала проверяешь свой ключ как тебе хочется, и в случае ошибки возвращаешь None. Только потом делаешь декодирование
Почему не работают таймауты как думаете? Не асинхронная версия проксичекера работает, а асинхронная проскакивает по списку вообще не ожидая ответа, хотя должна эту 21 секунду ждать.
Сап джангисты. Имеется строка БД, содержащая некоторое дерьмо и дату сохранения. Имеется UpdateView без защиты от условий гонки. Хочу сделать сравнение даты сохранения в БД на момент загрузки страницы (дата1) с этой же датой на момент отправки данных (дата2). Если даты различаются, сохранения не происходит, а юзер получает хуй свежее дерьмо из БД. При совпадении, заливание говна. Обе даты извлечь в get и post запросах получается, но только по отдельности.
Внимание, вопросы: Куда бы сохранить дата1 в UpdateView? Атрибуты класса затираются при новом открытии страницы, как и extra_context (вообще не предназначенный для таких вещей). Как ещё можно избежать условий гонки, если я какой-то хуёвый способ выбрал?
>>2627732 Не понял тебя. Как двумя полями избежать гонки? >auto_now_add Это только про создание объекта. В моём случае работа с уже существующими. >auto_now Это уже есть, дата сохранения. Проблема в том, что Юзер1 загрузил страничку, пошёл кофе хлебать. Юзер2 тоже открыл, обновил данные. Юзер1 вернулся, не увидел изменений, затёр своим дерьмом испражнения Юзера2.
>>2627768 Сокет не доступен по техническим ограничениям. Не вкурил логику реализации этого на уровне модели. Возможно, я не правильно понимаю поведение методов auto_now и auto_now_add.
>>2627790 Ну можешь отправлять запрос, в котором помимо введённых данных будут лежать ещё и изначальные данные, полученные при загрузке страницы, сверять данные в бд с отправленными изначальными и на основе этого уже писать свою логику.
>>2627796 И ведь правда, можно добавить транзитное поле формы, получающее дату на момент загрузки страницы и передающее её для сравнения в метод post. Спасибо анончик.
Одно время я пользовался шеллом Питона как калькулятором. Но меня очень заёбывал его нестандартный подход к делению и округлению.. Напомните, плиз, чем он отличается от общепринятой арифметики
Там что-то вроде маняокруглений в духе 4.35 - это 4.3, или в духе непонятных округлений при делении из-за особенности обработки float...
Я просто давно не пользовался питоном, и позабыл совсем.
Аноны, задача блин. Джва словаря в обоих ключи - строка. Как соединить эти словаря и в один, не меняя два предыдущих и при этом в ключи одного из них добавить пару символов. И всё это надо сделать в одну строку!11
У меня только в две строки получается и та довольно длинная.
>>2628215 просто идёшь по списку и суммируешь всё и проверяя больше ли новое значение максимального имеющегося или нет, если да, то заменяешь max_sum новым значением. Если упало меньш 0, то просто обнуляешь новую сумму.
Наипростейшее задание для пятой каты с которым сюда постоянно приходят
>>2628233 Граница пока число не падет меньше нуля. С этого момента типа отсекаешь этот участок, ставишь значение снова на ноль, будь там -1 или -100 и снова начинаешь подсчёт.
Купил курс Python-разработчик, отвалил 200к, теперь жду, что из меня сделают востребованного специалиста и я на изичах залечу на рынок. Всё правильно сделал?
>>2628783 Но зачем мне юдеми? Юдеми это просто видеокурсы, а тут обратная связь, кураторы, менторинг, тестовые собесы, практика на реальном проекте, социализация в конце концов.
>>2628833 Степик уже прошел, этот курс предполагает, что базу питона ты уже знаешь, начинаешь сразу с джанго. Три недели буду читать Лутца, Доусона и Мэтиза.
>>2628834 Хуйня, видеокурсы априори говно. Поколение Python (начинающий + продвинутый) топ. Единственный минус - вообще нет ООП.
>>2618871 >У Джанго отличная документация Ну-у... Сколько ни читал, один вопрос так и не получил ответа. В джанге создаётся проект, а внутри проекта - приложения, но зачем так сделано и как разделять приложения внутри проекта - хуй проссышь. Я лично считаю, что единственный смысл разделять приложения это чтобы они запускались в отдельных контейнерах как микросервисы, но и проекты тогда будут разные. В документации дохуя всего, оно подробное и т.п. Но ни там, ни в примерах в интернетах я так и не нашёл разъяснений.
>>2618972 В то, что интересно. Разработка (как и большая часть IT) это такая хуйня, в которой тебе должно быть интересно, это 30% успеха. Ещё 50% это постоянное, ПОСТОЯННОЕ, БЛДЖАД, саморазвитие. Оставшиеся 20% - предрасположенность. Ну и есть одно отдельное требование, оно, так сказать, булево - либо 1, либо 0 и на этот параметр нужно умножать те проценты. Умение доводить начатое до конца даже если заебало.
Это я всё к чему... Если тебе ничего не интересно, то, возможно, программирование это не твоё. Нужен огонёк в глазах, нужно, чтобы тебе хотелось что-то реализовать.
>>2629196 >Нужен огонёк в глазах, нужно, чтобы тебе хотелось что-то реализовать. Работает только для джунов, потом приходит понимание понимание зачем ты все это делаешь
>>2629190 как делать приложения на фреймворках это только опыт + попутное изучение других проектов. пока изучаешь, то нифига непонятно, как начинаешь свой проект делать, то начинаешь доходить
Сап двач , как сделать виртуальную среду venv в папке ? Хочу сделать простого бота в тг . Я захожу в папку для бота (На рабочем столе) открываю powershell данной папки и пишу python -m venv my-venv , но нихуя
Джва года кодил для себя, учился. Кодил всё свободное время, скрипты программы прилажухи для повседневных нужд и хобби, тут сайт спарсить, тут собрать все данные с дисков и отправить на бэкап на хостинг, братишка попросил бота сделать, для 3д графики, таблиц всякие штуки, и т.д. и .т.п. И вот я джва года этой хуйней страдал и угорал, а теперь оказалось что всё это время я занимался ФУНКЦИОНАЛЬНЫМ программированием, потому что считал классы говном без задач. Пол года назад дай думаю как все стану, посмотрю что это за ООП ваше хваленое. Теперь без классов и структуры данных не могу ничего кодить, хочется ещё и всё старое переделать по-новому. Всё таки хоть ООП это изначально концепция для бизнеса, но таки человеческий разум мыслит абстрактно-объектно. Гораздо проще продумывать логику таким образом.
Из минусов - код в ООП разсирается в джва раза, то что я раньше бы написал на 200 строк теперь занимает 500. ну и эти сраные self и cls везде жудко бесят. Только места занимают и код от них пестрит, можно же было их хотя бы в одну букву сделать.
>>2629676 Значит ты в пейчарме запустил интерпретатор не через это виртуально окружение. Тоже такие проблемы было. Создай ещё файл питона обычный и когда открываешь проект через питон смотри внимательнее что он делает, а то он снова создаёт вирт. окружение или использует глобальный интерпретатор
Тогда дальше объясняйте. Вот по ссылочке нарисовано O(k), k это как раз подмножество n т.е. k << n . Всё как и написано челами по этой ссылочке >>2629883 Если бы срез пересобирал список было бы написано O(n + k)
>>2629918 Лист это массив со списком ссылок на объекты питоновские. При взятии слайса эти самые ссылки копируются в новый создаваемый массив, потому они и одинаковые. Что не ясно?
>>2629901 Когда ты слайсишь то точно известно количество элементов в слайсе и место где лежат элементы слайса в оригинальном листе. Выделяется сразу нужное количество памяти и копируются только нужные элементы.
>>2629902 >Опять школьники с энурезом считают что они умнее дидов и что в 2023 что-то там такое должно быть, что они видели в другом языке.
О да, квалификацию дидов-основателей хорошо видно по наличию GIL в языке и по наличию двух несовместимых версий языка. Пиздец авторитеты. Еще бы мнение дидов было подкреплено статистикой о том насколько часто слайс лист используется только для чтения и умирает сразу по выходу из цикла, как у анона задавшего оригинальный вопрос. Дидам было банально сложно написать нормальные контейнеры.
>>2629918 >Ссылки на объекты одинаковые Конечно одинаковые. В питоне нет велью типов.
>никакой новой памяти и копирования не делается. В списке лежат ссылки на объекты, они и копируются в новую память.
>>2629934 Не рвись, школьник. После дюжины попыток переизобрести мир, вернёшься и будешь спокойно писать на питоне дальше. И на GIL будет поебать, и на допотопную двойку и луддитов которые на ней до сих пор пишут, и на копирование слайса. Дидам ничего не сложно написать, сложно решить как будет лучше для всех, в этом конкретном языке.
>>2629956 >школьник Это твой единственный аргумент? Мне кажется рвёшься именно ты, если переход на личности случился в первом же ответе.
>После дюжины попыток переизобрести мир, вернёшься и будешь спокойно писать на питоне дальше. Зачем мне переизобретать что-то в пистоне? Это не моя работа. Буду спокойно писать на нём единственное для чего годен пистон - скрипты автоматизации на один экран кода максимум.
Как будто gil пиздец проблема языка. Есть форк питона без gil, бенчмарки в среднем показывают -10% и +10% с оптимизациями к производительности. Больше пользы от переписывания pvm или изменения модели работы с потоками, например через акторы. В последних пепах это обсуждали и в будущих версиях всё это может быть добавлено. На обоссывателей и любителей покормить говном похуй. Инструменты для ускорения есть, если не нравится - пиши на с/с++/расте/жаве/жиесе. И на последующий вопрос "а нахуя тогда пистон нужен" такой же ответ - тебя никто не заставляет на нём писать, пиши на чём хочешь. И вообще надо выбирать язык под задачи, а не наоборот. Пока есть задачи, которые можно решить на питоне, и за решение неплохо платят, питон будет нужен и вряд ли в ближайшие 5 лет что-то поменяется.
>>2630001 ЧСВ поубавь, и всё нормально будет. Диды очень много годноты сделали, саму процедуру с PEP много кто перенял.
> единственное для чего годен пистон - скрипты автоматизации
Примерно с таким намерением питон и создавался, максимально лёгкий для человека язык. Оптимизации это здорово, но пока никто ещё не преодолел дихотомию быстро для программиста/быстро для машины. Кое-как там новая волна компилируемых языков двигается, уже можно в расте писать .map .filter без потерь производительности, но пока ещё кардинальных изменений нет.
Наткнулся в учебнике по информатике. Оно убирает количество точек после запятой, оставляя 2. Что вот это >"{:10.2f} это за дичь, и где найти документацию?
Хочу отредактировать Gtk программу на пихтоне. Но возникла проблема, что подсказки и автодополнения для библиотеки pygobject не работают. Установил pygobject-stubs. Думал проблема c nvim пробовал pyright, jedi-language-server, python-lsp-server, sourcery, потом установил vs code и pycharm - та же хуйня. Как заставить автодополнение pygobject работать?
>>2630693 Надо чтобы .pyi стабы поддерживались лангсервером. И проверь заодно что они установились в site-packages/gi/repository. Или поищи через find где они там установились.
>>2630815 Эта хуйня установилсь в site-packages/gi-stubs/repository. Переименовал в site-packages/gi/repository, в pycharm заработало. Осталось зарбраться почему в nvim не работает.
>>2630835 Ну вот это меня и смутило, что там обычный пакадж в gi, с --init--.py, не namespaced package, которые задизайнены так, чтобы несколько пакетов могли насрать в одно пространство имён. Думал там через установщик это как-то решается, но видимо нет. Возможно некоторые IDE ищут соседний пакадж %-stubs. Я вообще живу без lang server, заебался их настраивать по каждому поводу.
Нахуя пишут микроприложения в ООП-стиле, где на каждый класс приходится по одному-два метода? По-моему это совершенно ненужное наслаивание абстракций. Проще и удобнее запилить это в функциональном стиле.
>>2631319 single responsibility principle >>2631364 я когда ООП попробовал, всё начал писать в ООП хуй знает, оказалось это супер удобно и экономит время у будущего тебя и поддерживать просто, аноны не спездели
>>2631884 Да да. Афтору было влом фиксить функциональный говнокод, а вот если бы менюшка была бы на принципах SOLID сделана, нужно было бы в одно месте повиксить, и все бы заработало аки часы!
>>2631807 >single responsibility principle У меня от тебя циклический импорт. S - это методология хорошего написания ООП кода, а не обоснование использование ООП-подхода.
>>2631887 >Нахуя пишут микроприложения в ООП-стиле >где на каждый класс приходится по одному-два метода? >single responsibility principle не пиши, подумой
Есть ли в питоне/жюпитере готовый способ сделать то что на пике, то есть либо считать данные из файла, либо посчитать и записать в файл? То есть типа кеш с дампом на диск, но не для функций, а для переменных. Надоело в каждом ноутбуке это писать.
>>2632064 Это не поведение питона, это поведение конкретного шелла. При том для управляющего символа под названием "разрыв страницы" поведение неадекватное. Не пользуйся таким.
>>2631890 Еще раз. S - это прием из ООП. Ты оправдываешь использование ООП тем, что тебе надо применить прием из ООП. "Библия истинна, потому что так написано в Библии". На что я могу парировать, что в ФП также есть принцип четкой сигнатуры у функции, что сродни S из солида.
>>2632091 Если у тебя уже на этом этапе начинается какая-то хуерга, я бы тебе посоветовал тупо поставить прыщи и кодить под ними. Я сейчас не троллю, в линуксе реально гораздо удобнее кодить по одной простой причине - ты там тупо не встретишь никакую подобную дичь. Там все легче, начиная от настройки IDE и заканчивая докеризацией приложения.
>>2632103 Двачую, когда пересаживался на линупс, сразу отпали вопросы типа: а это что делает, а это нахуя вообще нужно и т. д. И сразу вся неразбериха в системе закончилась.
>>2632091 > Что за среда\шелл у тебя? Самый дефолтный bash в терминале гнома. > как пофиксить Не надо это фиксить. Это недокументированная легаси фича с непредсказуемым поведением. Не надо решать проблемы опираясь на неё. Решай по другому.
>>2632104 Тупорылые задачи на освоение операторов вывода и ввода в школьном учебнике помогаю одному челу. Решил что \n\t НИКРАСИВА.
>>2632103 Да я знаю, но тут буквально на год программа пикрил, чо тут докеризировать-то? Из странного хочу разобраться с jupiter, т.к. суки не дают пользоваться ideone без VPN
>>2632114 > Не надо это фиксить. Это недокументированная легаси фича с непредсказуемым поведением. Не надо решать проблемы опираясь на неё. Решай по другому. Ыде оно легаси? Это в доках пистона 3
>>2632115 >тут буквально на год программа пикрил, чо тут докеризировать-то? Тут варианта два - либо ты ходишь додрочиться до уровня скрипт кидди, и тогда вопросов нет. Либо ты просто не поставил себе цели дальше и не осознаешь, что ждет тебя впереди.
>>2632120 > Ыде оно легаси? Не сам символ, а его поведение с переносом. Документированное поведение этого символа - разрыв страницы. >>2632115 >\n\t НИКРАСИВА Действительно некрасиво, используй f-string/format.
А какая в сущности разница между списком и туплом при возврате значений из функции? Допустим, у меня есть функция, которая возвращает три значения. У меня есть варик либо вернуть их туплом: return res1, res2, res3
либо вернуть список: return [res1, res2, res3]
А при вызове функции я просто распаковываю ее результат что в случае тупла, что в случае списка: res1, res2, res3 = function()
>>2632142 >>2632147 Я бы не парился и возвращал туплом, но я шизик и всегда пользую тайпхинтинг. Коробит, что для листа я могу написать просто list[str], а для тупла приходится писать tuple[str, str, str]. Что странно, ведь в списке тоже могут быть разные типы данных.
>>2632157 >для листа я могу написать просто list[str], а для тупла приходится писать tuple[str, str, str] Потому что в теории набор элементов в списке является гомогенным, т.е. одного типа, а для кортежа разного.
>>2632162 >набор элементов в списке является гомогенным, т.е. одного типа Так это вроде массив, который из теории программирования. А список именно что может содержать разные типы данных.
>>2632166 https://docs.python.org/3/library/stdtypes.html >Lists are mutable sequences, typically used to store collections of homogeneous items (where the precise degree of similarity will vary by application). >Tuples are immutable sequences, typically used to store collections of heterogeneous data (such as the 2-tuples produced by the enumerate() built-in). Tuples are also used for cases where an immutable sequence of homogeneous data is needed (such as allowing storage in a set or dict instance). Ну так список это не массив, я лишь цитирую оф. доку.
>>2632157 >Коробит, что для листа я могу написать просто list[str], а для тупла приходится писать tuple[str, str, str].
тупли чаще всего используются как анонимные типы с известной структурой данных, а не как массивы поэтому у туплей особый синтаксис специально для описания структур. а для массивов есть костыль tuple[str, ...]
> Что странно, ведь в списке тоже могут быть разные типы данных. тогда это не аннотируется как list[str] это аннотируется как: list[str | int | Pook | None]
Есть какие-то либы или совета для адекватной реализации консольного псевдоинтерфейса? Я на коленке сделал через полное обновление вывода + clear, но во первых это неудобно, во вторых мерцает как тварь. Питон не знаю, пердолю по докам.
>>2632354 Навошта перапісваць? multiprocessing.Pool мусіць працаваць у вакенцах таксама як у лінуксе. Аднак, у галоўным файле мае быць іспыт, бо вакенцы выконваюць усю праграму спачатку для кожнай плыні:
>>2629465 >Работает только для джунов, потом приходит понимание понимание зачем ты все это делаешь По себе знаю, что огонёк может гореть десятилетиями. IT это потрясающе, это интересно, это феноменально. Главное не стоять на месте, а погружаться глубже и расти выше. Проблемы начинаются, если закисаешь в одном болоте, но тогда нужно срочно выбираться.
Поясните про асинхронность. Известно, что ивент луп содержит слабые ссылки на таски, и поэтому их надо сохранять отдельно, иначе их сборщик мусора соберёт до завершения. Вопрос: а что в этом случае произойдёт/может произойти? Всё упадёт, всё зависнет, всё тихо будет проигнорировано и выдаст хуиту вместо результата?
Почему сука скрипт не работает? Мне надо чтобы он отсылал новые появляющиеся файлы из определенной папки мне в телегу, какого хуя он просто ниче не отсылает https://pastebin.com/trFT2e4Y
>>2631086 Ну, заебись когда ты знаешь все библиотеки, методы и параметры. Я же себя слепым щенком ощущаю, еще и документация на сайте Gtk говно полное. А нет никаких плагинов для nvim которые сами эти stubs генерируют по библиотекмам, что ты импортировал?
>>2633649 Зачем? Ну то есть тебе так и так получать и проверять все значения. При этом если сравнение идёт через логическое "И", то по нахождению первого False оно сразу вернёт False.
Питонисты, есть какой-то адекватный способ не трогая affinity вручную из кода заставить питон не использовать Е-ядра на интеле? У меня скорость обучения нейросеток падает из-за этого. Питон в фоне и нагрузка очень неравномерная - как итог его всегда кидает на Е-ядра.
>>2633476 Не, я не знаю, прост хорошо освоил поиск по проекту, остальное смотрю в доках. Что-то с этим нужно сделать чтобы делать всё быстрее, но мне лень. Gtk сложный, да, там только через туторы и эксперименты всё получается.
Сап, анонасы, я не погромист, когда то ставил питон 2.7, уже не помню зачем, недавно для нейросетки ставил 3.1, и она заработала, сейчас захотел поставить скрипт один с питоном 3.7, питоан поставил, А Git использует 3.1. Тобеш: py -0 -3.10-64 -3.7-64 -2.7-32
py --version Python 3.10.6
Шо надо Git написать, чтоб он на 3.7-64 переключился?
>>2643845 >Шо надо Git написать, чтоб он на 3.7-64 переключился? GIT сам пользуется питоном? Вот уж вряд ли. Вообще, какая версия отработает как правило определяется симлинками как на пике. То есть тебе надо симлинк python3 -> python3.1 удалить и создать python3 -> python3.7. В редких случаях это, правда, может выйти боком.