Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации https://dumpz.org/ - можно постить листинги, не требует регистрации https://pastebin.com/ - для листингов, регистрация не обязательна https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
Вопросы-ответы: — А стоит ли читать Лутца, том номер N? Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
— Стоит ли читать %книга_нейм%, если там питон версии 2.х? Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
— А что ещё можно читать? Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом? Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
— А как учить джангу? Нахожу только книги по джанге 1.х У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Как можно без лишней возни ускорить программу на питоне 1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь. 2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником. Исходник: https://dumpz.org/bASGKD8cCFDf
Базовая часть там общая, больших принципиальных изменений нет, джанго-3 даёт какие-то дополнительные возможности по асинхронной поддержке, но немного замудрённые. Тажеловесно и требуется понимание того, что ты делаешь. Ими можно и не пользоваться и писать полностью в старом стиле.
С асинхронным программированием лучше разобраться сначала отдельно, вне джанго.
Кто-нибудь бы пункт для шапки про джангу проапгрейдил.
Сейчас начал изучать питон, в 2017 учил в универе с++, но на отвали, особо не вникал и все задачи либо у кого-то брал, либо делал на подобие, поэтому самые минимальные знания в программировании есть.
Но сейчас конкретно в питоне понял, что у меня очень просела математика, решаю задачи и часто больше думаю не над кодом, а над математическими действиями. И это на элементарных задачках, сейчас вот дошел до циклов if.
Короче вопрос в чем, работает ли тут тема с прорешиванием огромного числа задач и соответствующим повышении скилла, или если не прет, лучше вообще не соваться?
Кто может рассказать про работу в компании с githubом? Это получается есть общий аккаунт и у каждого работника есть логин пароль для входа, чтобы отправлять коммиты, так?
Формально ищу работу более полугода, иногда захожу на хх, скажите, мне кажется или вакансий на самом деле не так много? Вот ввел я все свои навыки и достижения и хх мне показывает 800 вакансий, где-то половина это будет не питон, а другой язык, четверть это смежные профессии, типа мл, фронт, hr и пр., от оставшейся четверти 75% это вакансии с опытом работы от 3 лет, знания сложных стеков, какой-нибудь gprc и пр для хайлоада и оставшийся процент это как раз то что надо, но в ней hrы совсем голову потеряли от ждунов и просто каким-то непотребством занимаются, хуй попадешь, даже с опытом требуют тестовые задания, которые делать день и это до созвона. Вопрос, неужели полностью вкатится в работу так сложно, я прям депрессию ловлю с хх
Кто-нибудь читал/просматривал обе книги? Это два 1500-страничных томика по практическому использованию Пайтона для intermediate юзеров. Вот не знаю, на какой стул сесть.
>>1978582 Рекомендовал бы официальной документацией и гуглом ограничиться, параллельно работая над каким-то проектом, а то уйму времени на воду потеряешь. А уже когда надобность в инструментах по-сложнее возникнет, вроде асинхронности, тогда к книгам обратиться - строго по теме, чтобы было.
>>1978625 Да мне не к спеху. Я вообще сейчас открываю книжку по Пайтону, открываю IPython и под фортепианный эмбиент перепечатываю примеры, представляя, что играю на фоно. А еще в уголке экрана включаю видео с кабины поезда, катящимся по заснеженной Норвегии. Кайф. >параллельно работая над каким-то проектом В этом-то и проблема: то, что я хочу запилить - достаточно сложно, тут надо хотя бы какую-то книгу по микропроектам пройти. Знаешь годные книги по проектам?
Привет, жвач. Пишу бесплатный софт для школьников в качестве первого серьёзного проекта. Подскажите, пожалуйста, как можно оптимизировать код и прикрутить ко всему этому нормальный GUI? А также, какие будут дополнительные рекоммендации по тому, что можно добавить сюда ещё. Пока программа умеет только вычислять площадь треугольника и цилиндра, но надо что-то ещё, мб какую-нибудь вшитую справку для егэ и т.д.
>>1978632 Automating boring stuff. Остальное по хотелкам. Хочешь написать скрапер рутрекера на докачку серий текущих сериалов с выводом в телегу? Я никак не могу спокойно потратить на это время, завис с заказчиком на хуйне полной мимо
>>1978661 >А что насчёт PyQT5? Для твоей задачи перебор. Вообще, писать интерфейсы в одиночку лучше всего на электроне. Но если интерфейс совсем простой, пофиг на дизайн, и прямо обязательно нужен питон, то юзай tkinter.
Возможно ли сохранить код jupyter notebook вместе с переменными? То есть задал я A=25, закрыл файл, потом открыл, ввел A, а мне выдало 25 вместо A not defined.
>>1978633 С GUI надо разбираться отдельно, сначала научиться работать с GUI, потом уже прикручивать. GUI требует изменения структуры программы, это не тоже самое, что input из консоли добавить.
Если никогда не делал gui под что-либо, то нужно немного времени, чтобы разобраться с логикой, там немного непривычно будет со всеми этими сообщениями от окон, циклом обработки сообщений и т.п.
В продвинутом случае понадобятся треды, но в твоём случае скорее всего они не нужны.
Пожалуй присоединяюсь к тому, чтобы сначала с tkinter что-нибудь поделать.
>>1978890 Понял, тогда постараюсь сначала ткинтер покурить, потом уже что-то посерьёзнее сделаю. Просто есть идея, чтобы когда ищешь площадь цилиндра, например, по заданным параметрам 3д-моделька показывалась сбоку. Или чертёж 2д-фигуры со всеми указанными параметрами на этом же чертеже
>>1978890 >GUI требует изменения структуры программы, это не тоже самое, что input из консоли добавить. Надо стремиться к тому, чтобы было как input из консоли добавить, делать все модульным, чтоб вот была основная программа, у нее был известный интерфейс для общения с другими модулями, нужен консольный интерфейс, сделал модуль для консольного интерфейса, нужен десктоп - сделал для десктопа, веб - сделал для веба, и подключаешь эти модули по необходимости, а центральный код самой основной программы вообще никак не трогать.
Двач, прошу, последняя надежда на тебя, я уже с ума схожу, суть: Пользуюсь джанго орм в асинхронном скрипте, вызываю функцию через sync_to_async в которую передаю ключ модели, меняю 2 поля модели, сохраняю, но она не сохраняется, код: https://pastebin.com/1WY6gr6z Да, там больше логов, я просмотрел все, наверное, что мог, все должно работать, все логи печатаются, и 2 поля до присвоения и после через саму модель и правильно отображается ее ключ, но в базу значения не попадают, я просто уже даже не предстовляю в чем может быть проблема, натолкните меня
Около полугода пишу на питоне. Автоматизация отчетности, работа с бд (скл и носкл), парсинг и гугл.шытс. Сейчас появился вариант с новой работой, но там надо знать джангу и веб. Реально ли изучить джангу, mvc, rest и т.п. за месяц ?
двач, есть список пар (int, str), нужно отсортировать в порядке убывания чисел, где пары с одинаковым значением отсортированы в обратном лексикографическом порядке строк можно, конечно, сделать sorted(array, key=lambda x: (x[1], x[0])) и дойти до последнего элемента с максимальным числовым значением, но мне не очень нравится это решение
Эти задачи с кодварса имеют хоть какое-то отношение к реальному погромированию? Почти все задачи походят на забивание гвоздей микроскопом и изобретение велосипедов. И какая-то у них пизданутая сложность, начиная с 5 kyu
двач, помоги , в питон только вкатился , имеется path = "/opt/backup/" command = "du -sh --time " + path + "" args = shlex.split(command) p = subprocess.Popen(args) print(p) в выводе ловлю du: cannot access '/opt/backup/': No such file or directory хочу получить вес каждой директории и файла /opt/backup/ db 123123 log 123123
>>1978975 Попробую угадать - операция в БД происходит в отдельном потоке, какая-то часть конфигурации сделана в другом потоке, и некоторая часть стека (Django ORM или коннектор к БД) не готова к такому положению дел. Документация (https://docs.djangoproject.com/en/3.1/topics/async/#asgiref.sync.sync_to_async) постоянно указывает на то, насколько это нестабильная конструкция.
Думаю, это можно обойти, поддерживая отдельный поток (процесс) для записи в базу, в котором явно будут создаваться объекты для работы ORM (соединения и т. д.). Общение - через какую-нибудь очередь.
В целом запрос выглядит просто, и даже если эта БД создавалась через Django, ей все равно можно манипулировать через другие, асихнронные по умолчаию, библиотеки.
>>1977853 (OP) Нахуячил решение для задачки https://leetcode.com/problems/jump-game-ii/ особо не думаю и внезапно оно прошло, но я че-то сам не въехал как. Тут надо найти наименьшее число переходов, но в коде это никак не учитывается - просто обычная рекурсия
>>1979261 Задумался что значит вообще знать джангу? Одно дело уметь рендерить темплейты через функциональные вью, другое писать на drf, третье писать свои бекенды для авторизации, паролей, пермишшоны, мидлевери и прочее, ну а предположим все это умеешь, что дальше будет знать джангу?
>>1979300 Учитывая что другалек в треде "изучает рест", в его случае идет речь о понимании устройства хеловорлда на джанге и какой нибудь hello-world app, а у тебя вопрос философский, на уровне с какого момента можно говорить что я знаю пытон?
>>1979254 Оказалось все гараздо тупее и тривиальнее, хотя отчасти и правильно, я наговнокодил так что многие названия очень похожи, хотя и значат разное и просто загружал объект заранее из бд, без доп полей, потом я про это забыл и в эту функцию передавал ключ модели и сохранял поля, а потом оказывается есть последняя строчка про которую я забыл, которая меняет поле той модели, которую я загрузил в начале, той модели, в которой нет доп полей и потом он ее сохраняет, т.е я сначала сохраняю с полями, а потом без, а ощущение словно поля просто не созранялись, час-два точно убил на этот баг
>>1979304 Ну под "знать джангу" я скорей бекенд подразумеваю. Судя по задачам заказчика, надо будет парсить хмл разной структуры, делать запросы к разным бд, и результат отображать в браузере + реализовать правку этих сущностей в сурсцах.
>>1979304 >на уровне с какого момента можно говорить что я знаю пытон? Ну если какой-либо синглтон можешь запилить без подсмотров, то можно сказать что знаешь. Остальное дочитаешь.
>>1979328 ETL а чистом виде, на фреймворки не смотри. Большинство проектов такие, ну стэк только меняется. Может только задачи другие. Типо M2M (ещё кто-то помнит о таком?) безучастия в процессе человека.
>>1979434 Ну джанго это желание заказчика. Пока не вижу, где он там должен применяться, я вообще подумал, что под решение его задачи нужен какой-нить апач айрфлоу и редис, но с обоими не работалю
>>1979446 Хороший вопрос как у тебя весь этот обмен данными будет устроен. В первую очередь как и откуда ты будешь брать xml, как они к тебе будут попадать в движок.
Джанго это CRUD классический. Для сервисов он не удобен.
Джанго хорош, когда тебе надо работать со сложной SQL базой, делать массу связанных страниц, иметь админку по управлению контентом.
Когда надо, например, слушать какой-то сокет-вебсокет и брать оттуда данные, сопутствующую активность по приходу проявлять, то вот совсем на это не рассчитан.
>>1979476 Ну вот я так недавно после мини-отпуска, на эмоциях и из-за сжатых сроков повесил боевую базу.
>>1979494 Пока сам не понимаю, но расти хочется, поэтому наверно попробую вкотиться в это. Если обосрусь за испытательный срок, так обосрусь, зато опыт. Тем более если заказчик что-то нашёл в моём опыте, значит он готов идти на такие риски.
Задача: выводить минимальный лог (время + ключ) в админ панель.
Как я хочу сделать: есть модель User с полем secret_key ключик используется в заголовке http для доступа к АПИ. Я хочу создать модель Call с полями: - key = ForeignKeyField("User", on_field=secret_key) - date = datetimefield(auto_now_add=True)
Такая, грубо говоря, сводная таблица. И ее с сортировкой по времени в админку выводить.
Но даже в моей голове это выглядит как велосипед. Что посоветуете?
>>1979498 > Тем более если заказчик что-то нашёл в моём опыте, значит он готов идти на такие риски. На самом деле самый вопрос в том, насколько заказчик адекватен. Там в команду берут, где ты не один прогер, или ближе к фриланс работе, где ты единственный исполнитель.
Если в команду, то норм.
Если ты единственный исполнитель, то проблема может быть в том, что заказчик вот не компетентен совсем. Он что-то слышал, что-то представляет, ему кто-то что-то сказал, вот он и предлагает. Но не понимает, что сложно а что просто, откуда какие проблемы, и т.п.С такими довольно тяжело бывает, но тоже работа и в первую очередь опыт какой-то.
>>1979520 Там уже есть команда (архитекторы, девопсы и т.п.), меня берут на позицию разраба бэка, с уклоном в бд. Сам я дата аналист/дата недоинженер, ментора там не будет, вся работа через лида/прожект менеджера, который меня и собесил.
Дублирую вопрос. Минут 25 сидел и думал над уравнением 4 класса, не дошло. Посмотрел решение, не дошло. Пошел смотреть на ютубе объяснение решение задачи, и только потом стало все понятно. Правда нужно отметить, что из школьной математики я помню только формулу дискриминанта, формулы сокращенного умножения, многочлены, таблицу умножения и теорему Пигора.
Короче после этого словил фрустрацию и долго не мог прийти в себя, но все-таки убеждаю себя в том, что если подтяну элементарную математику и надрочу руку в таких задачах, то проблем в обычной работе в будущем возникнуть не должно.
>>1979576>>1978016 Если не вникать в унылые бесполезные доказательства, а просто общую концепцию разбирать (геометрический смысл, который просто первым пунктом должен идти в любой теме - так как память человека визуальная, и думают мозги изображениями и визуальными образами, а не (текстовыми) символами или теоремами) и потом решать задачи разных типов - тогда первые два курса матана можно освоить за 4-6 месяцев на неплохом уровне.
Ищи всякие штуки вроде desmos.com/calculator - это может помочь, чтобы ты все эти переменные, графики и производные представлял в виде цельного визуального образа. Тогда любая задача с этим связанная станет тривиальной - так как тебе буквально очевидно что написано и в каком уравнении, и это один цельный образ - а не какой-то набор разрозненных математических символов. Разница как между тем, чтобы по буквам читать (и терять смысл предложений) - или по словам и словосочетаниям.
>>1977853 (OP) Сап анончики, вот есть пик1, вроде все выглядит логично, вводишь себе массив A, потом вводишь количество элементов N и все должно работать, но после ввода массива А, возникает пик2 Если не сложно объясните пожалуйста что я делаю не так ?
>>1979770 https://ideone.com/BI9qLf Можешь не считывать N (удалить потом из списка первый элемент), в питоне это не особо требуется, так как в списке всё-равно массив указателей. Осторожно, такая фигня числа через точку считывает как два отдельных.
Прохожу курс Python на Stepik. Задача: " Однажды, посетив магазин канцелярских товаров, Вася купил X карандашей, Y ручек и Z фломастеров. Известно, что цена ручки на 2 рубля больше цены карандаша и на 7 рублей меньше цены фломастера. Также известно, что стоимость карандаша составляет 3 рубля. Требуется определить общую стоимость покупки."
Пример: на входе: 1 1 1; на выходе: 20.
Запускаю у себя - все работает и с разными значениями. Пытаюсь отправить на Степике - пишет, что неверно и иди нахуй. Скажите пожалуйста, в чем проблема?
Анчоусы, через пару недель собес на стажировку в сбер. Питонистом. Как подготовиться максимально? Что смотреть что читать? Пока планирую дрочить литкод, сделать петпроджет лайтовый круд по стэку который у них и просто дрочить солиды кисы dry и прочую лабуду с restful. Всё правильно или что-то изменить?
>>1980319 Типа так невзначай похвастался, что у тебя макбук и ты успешен?
>С классами тоже так можно Можно, но всё-таки это неправильно и грязно. И не всегда работает. У тебя может не быть __dict__ у объекта, если ты создавал его с __slots__ Соответственно при попытке присвоить какой-то существующей переменной значение у тебя будет исключение Корректно присваивать через setattr setattr(obj, var_name, var_value) В случае __slots__ ты, конечно, так сможешь только определённые в __slots__ значения переопределить, не совсем что автору надо.
Пишу скрипт для автозаполнения сайта через Selenium, есть проблемы мешающие или замедляющие работу. Так как таблица формируется динамически, то элементы появляются только после прокрутки и поиск например строки 20 если она не отображается не получится, по классам поиск не работает только по селектору. Если например найти элемент: <div class="slick-cell l1 r1 undefined">49</div> то могу выделить и заполнить ячейку однако текст 49 не могу получить никак, есть ли способ получить значение? Что-то вроде найти селектор и использовать функцию .text выдают пустой результат. Почему работает: ActionChains(driver).send_keys(Keys.TAB).perform(); но не работает никакие комбинации Keys.LEFT/Keys.ARROW_LEFT которые мне нужны?
>>1980477 Наверное я проебался с геттекст() , это вроде из явы. В селениуме есть же встроенные функции получения значений классов. get_attribute() и get_property()
>>1979892 Крч я не совсем понял что ты написал ввиду своего начального изучения питона , но данная проблема помогла разобраться мне как работает типичный "for k in range N" и что вообще происходит , а еще то что там чтобы вводить массив и все нормально работает надо вводить "A=[int(b) for b in input().split()] вводил с телефона по памяти вроде не проебся, но спасибо за ответ.
>>1980486 <div class="slick-cell l1 r1 undefined">49</div> Да getText это не из питона, get_attribute() работает, но как вытащить из получаемого объекта "49"?
>>1980500 Всё разобрался, спасибо всем. В общем попробовал подняться этажом выше и взять не ячейку а целую строку и вывести .text, сначала выдала всё кроме нужного и я понял т.к. у меня на нужной ячейке был .click() её содержимое получить было нельзя.
>>1977853 (OP) Есть множество sql query на обновление данных в таблице (через sql alchemy) Можно ли при помощи threading выполнить эти запросы конкурентно? И что если таких запросов несколько тысяч штук? Создавать по треду на каждый запрос - уебанство
>>1981036 А что за запросы такие и откуда пришли, что прям несколько тысяч надо сразу запихнуть? Ты не дудось базу запросами, а собери в один лучше и проверь скорость работы. В любом случае можешь обвешать таблицу локами.
Предлагают df.groupby(pd.Grouper(key="date", freq="D")).sum() Но мне нужно не сумму считать, а все 'val' соединить в список. Для примера это будет так date val 2018-12-01 [65, 63, 8] 2018-12-02 [12, 0, 74] 2018-12-03 [86, 27, 57] Если важно у меня все списки будут разной длинны.
>>1981034 >Нормально Часть пакетов не может быть установлена/собрана. Uvloop'a нет, uvicorn дропнул поддержку IOCP, hypercorne все ещё нестабилен. Куча нюансов, если просто книжки дрочить, то норм. Все равно же в контейнере все разворачивают, в шиндоус докер поддерживается, WLS есть, можно же и там все делать.
>>1977853 (OP) Как работать с сайтами, на пиотне? В смысле не скрэплинг йобаный, а получение информации с сайта и отправление другой например, в сообщение и т.д. Просто когда я пытаюсь найти в интернете инфу, мне выдают ебучий скрэплинг, а я блять не хочу делать сайты.
Вот читаю я Лутца и там следующее: Допустим у нас проект, в котором модуль main.py импортирует модуль A.py. Модуль A импортирует B, а B импортирует C. В такой ситуации, если нам понадобится перезагрузить все модули, то просто reload A не сработает, ведь его внутренние импорты не будут перезагружены. Как решение Лутц предлагает огромную рекурсивную поеботу, которая обходит все модули на произвольную глубину и всё перегружает. Это всё прикольно, но почему бы для решения этой задачи не импортировать модули сразу с перезагрузкой? То есть в модуле A мы импортируем B следующим образом: import B reload B Тогда при reload A у нас B сразу же перезагрузится, ведь выполнится reload B. Менее изящное, но более простое решение. Тем более мы не перегружаем вообще всё, а явно указываем какие модули мы собираемся перегружать. Я ещё плохо разбираюсь в программировании и питоне, в чём я не прав?
>>1981114 Я это понимаю. Но если у меня только два модуля требуют перезагрузки, а Лутцевская функция перегружает вообще все модули из пространства имён (а она так и делает), то проигрывает Лутц.
>>1981155 ну тк, я зеленый хуище. хотя я и сам почитал ошибку. Сначала скачал файл и тупо запустил как еблан. А потом только допёр что до него путь нужно хуйнуть в driver = webdriver.Chrome(executable_path=r"C:\Users\User\Desktop\chromedriver.exe")
>>1978488 Я другой анон, годик назад пробовал джангу, наковырял франкенштейна, но т.к. питон я не изучил нормально и появилось 100500 важных дел забил, сейчас сделал комбэк, дрочу питона уже месяц по 4+ часа в день, хочу через пару недель окунуться в джангу и начать ебашить на ней. Если вы скооперировались можно к вам?
Может знает кто, как в пайчарме нормально с sqlite работать? Вроде сделал всё как надо, а подсветки и прочего нет. Что не так? Если создать не много по другому, то будет ворой пик или так всё и должно быть? В гайдах на ютубе по другому всё.
Аноны подскажите плиз в чего щас лучше вкатываться, в какой язык программирования?сам в этом ноль,хотел бы найти учителя который будет вести,буду ему % от зп платить и в дальнейшим тоже
Можете верить, можете нет, но сейчас я удалил path в urlpatterns, но он продолжает меня вести на этот адрес. Как такое возможно? Перезапускал и проект и пайчарм. На стековерфлов есть такой вопрос и там никто ничего не знает.
>>1981715 >А хтмл верстку в джеэсе он у тебя тоже подсвечивать будет? В жс файлах будет. В питоновских нет, по крайней мере по умолчанию. >Это строка, с точки зрения питона С точки зрения подсветки синтаксиса это не имеет никакого значения. Только в случае с sqlite надо сначала подсоединить базу данных, чтобы пайчарм знал, какие в ней таблицы.
>>1981663 Рекомендую самому искать и изучать инфу, сейчас вкатывайся во что хочешь, это зависит от того что ты хочешь делать(веб,десктоп и прочее). Могу только свой список кинуть который сам насобирал, по нему изучаю все, пока что неплохо идет
>>1981823 лел, дохуя хочешь. а если серьезно амбиции это хорошо, ты можешь в принципе любой язык который пригоден под веб выучить, т.к. ты в питон треде, то можешь в принципе посмотреть в сторону джанго как основного фреймворка, он хороший и мощный, на нем работает сайт варгейминга, гугл некоторые сервисы и прочее, для его освоения нужно знать сам синтаксис, ооп в питоне, БД , регулярные выражения.
>>1981845 Ты про фронт говоришь, бэкендер это другое, или ты думаешь что выучишь фреймворк и будешь бесконечно пилить магазины? Толковый разраб везде нужен, в том числе и фронтендер
>>1981865 Ну бля, питон, подрочишь задачи и ооп 1-1.5 месяца интенсивно. Почитаешь о сетях и устройстве интернета, изучишь гит-несколько дней. Фреймворк и базы хз сколько, но на базовом уровне за неделю. В принципе после этого можешь делать ебы. Потом нужно знать современные инструменты, паттерны, rest... и тд., список большой, но без него нахуй не нужен быдешь у пиндосов
>>1981878 После того как это освою,мне для начала годик в рф поработать или сразу стараться в компании сша рваться?там же надо ещё учить на инглише или это не обязательно?
>>1981883 я не знаю, я просто собрал кучу инфы что требуется от разработчика сейчас и как сейчас пишут код, какие технологии используют, по рф я бы мог еще сказать, по бугру нет, но там в основном по технологиям тоже самое, по работе кури ютуб.
>>1981710 У меня пидорский питон иногда не видит изменения в файле и приходится пересоздавать. Даже если удаляю файл все равно его запускает. Даже если терминал перезапускаю.
Что почитать ++ программисту, чтоб пистон ваш за месяц осилить? По работе оче надо код портировать. Там в шапке часть материалов начинается с хуеты типа "информатика это...", "введём понятие переменной и цикла...". Что полистать кроме документации?
>>1981865 >там даже сранные сантехники 5-6к $ получают В твоих маняфантазиях? Это хорошая зарплата для специалиста с вышкой. Рабочие специальности получают в полтора-два раза меньше. Говночисты - в три.
Если хочешь работать на штаты, то я бы ориентировался на 3-4к в месяц. За большие деньги ты не нужен, поскольку проще нанять местного раба в офис.
Объясните мне Я НЕ ПОНИМАЮ! Импортирую переменную через from: from modul import a В пространстве имён появляется имя a. Меняю в файле modul значение a. del (a) #объект а удаляется from modul import a print (a) #выводится изночальное значение, а не изменённое.
Вопрос: почему так нахуй? Где питон берёт значение, если объекта модуля modul нет? Я знаю как перегрузить правильно, я хочу понять почему ТАК не работает.
>>1982159 Может быть может быть. Вот думаю это недостаток или плюс. С одной стороны разрабы должны быть не дураками. С другой стороны столько языков разных включая brainfuck что даже не знаю. Меня одолевают смутные сомнения.
>>1982162 То есть в памяти где-то всё равно сидит объект модуля из которого импортировали переменную? >Если хочешь перезагрузки, то юзай reload. Да я же говорю - я знаю как.
>>1982176 ИМХО укус питона это рекламная брошюра питона, а не учебник никакой. Я после прочтения книжку понял, а про питон не понял нихуя. Что и как делать то? Но после него проще читать уже что-то более серьёзное. Я после него Лутца читаю, но он не для всех - слишком подробно.
Хочется попасть в яндекс на стажировку, вроде в питоне немного разбираюсь, но вот меня смущают сильно пункты про классические структуры и алгоритмы, когда можно понять что ты хорош в алгоритмах? Ну знаю я различие между кучей и очередью и стеком, знаю алгоритмы сортировки и алгоритм быстрой сортировки, немного знаю синтаксис си и си++ с указателями и т.д, а что еще важно? Кроме литкода что-то еще важно дрочить?
>>1982352 Дурачок, лок стоит для того, чтоб целостность обеспечить. Он же не знает, собираешься ты обновлять одно поле 10 раз или что ты делать будешь. Я тебе уже написал, собираешь запрос в один update и обновляешь.
>>1982384 Ну вот смотри. Через модбас терминал я посылаю реквест в шестнадцатиричной системе и получаю ответ в ней же. А в паймодбасе есть функция, через которую запрос делается. И там только три аргумента - адрес, количество регистров и юнит ID. В итоге я получаю сообщение что не получено никакого ответа. А в терминале я посылал реквест из 4 параметров - адрес, функциональный код, адрес регистра и количество регистров. чяднт?
Помогите с датафреймами. Есть несколько датафреймов с котировками и датами. Мне их нужно совместить. Но прикол в том, что даты не совсем совпадают. Если что даты идут как индексы. Мне нужно чтобы в финальном фрейме были все даты, а если котировки на заданную дату нет, то она заменяется на предыдущую. Пример исходных данных и результата в пастебине. https://pastebin.com/5HiEb47C
>>1982409 Я так понимаю, ты создал правильный инстанс клиента, с правильными параметрами, вызвал метод .connect() и он вернул True, все так? Если нет ответа, то скорее всего адрес слейва неправильно указал. >там только три аргумента - адрес, количество регистров и юнит ID Все правильно, функциональный код pymodbus за тебя подставляет. Адрес - это адрес регистра, unit - это адрес слейва. >чяднт? Не показываешь код. Без кода трудно угадать, что не так.
>>1982387 Собрать запросы INSERT в один - хуйня вопрос. Дефолтный пример это 1й пикрил А как собрать запросы UPDATE в один? Хрень со второго пикрила - ерунда, он обновляет любые строки где проходит condition
>>1982485 >UNION ALL Лучше не стоит, равносильно в цикле запускать обновление >>1982460 update from, первая ссылка в гугле Например update table_name as t set column_a = c.column_a from (values ('123', 1), ('345', 2) ) as c(column_b, column_a) where c.column_b = t.column_b;
Есть список в котором дохулиард np.array. Нужно с каждым произвести следующую манипуляцию - откинуть ведущие нули и дописать такое же количество нулей в конец. То есть Было [ [0 0 0 1 5 0] [0 4 6 7 8 2] ... ] Стало [ [1 5 0 0 0 0] [4 6 7 8 2 0] ... ] Решение в лоб (в цикле ищем первый не нулевой элемент и аппендим срез от этого элемента до конца и np.zeros с количеством недостающих нулей) работает очень медленно (np.roll и np.trim_zeroes тоже медленные). Можно ли как-то то ускорить такую операцию?
>>1982594 Это выглядит как очень подходящая для распараллеливания задача. Порезать исходные данные на N кусков, запустить N дочерних процессов, каждый процесс обработает свой кусок, а потом склеить результаты. Можно самому, с помощью модуля concurrent.futures из стандартной библиотеки, можно поискать какие-то свои подходы для numpy, может библиотеку какую поискать
>>1982723 селффикс >>1982701 df_split = array_split(df, N) with multiprocessing.Pool(8) as pool: ____df = pd.concat(pool.imap_unordered(process_func, df_split)) Если не важен порядок
Объясните дауну, куда смотреть во вкладке Network в инструментах браузера, чтобы спарсить динамическую страницу (подгрузка фото). Пробовал гуглить, но везде одно "смотри network". Где можно подробней про это почитать?
>>1982701 >Это выглядит как очень подходящая для распараллеливания задача. Нет. Это не вычислительная задача, а прогон по памяти. Тебе дороже будет рассылать по процессам, чем делать всё в одном процессе.
>>1982773 А если там правда 100500 тысяч мильенов массивов в списке? Неужели при больших объемах парализация не поможет ускориться на многоядерных процессорах?
>>1982779 Чтобы запустить что-то параллельно, надо раздать распределить по процессам задания. Это сложно и дорого.
То есть ты больше потратишь времени на пересылку данных, инициализацию и т.п., чем выиграешь от параллельной работы.
Это скорее многопоточная задача. Кстати надо тестировать, может она адекватно работает под тредами, поскольку работа должна быть внутри np, которая не задевает GIL.
>>1982783 Когда данные реально большие, эти расходы не важны, иначе бы параллельных вычислений просто не было бы > которая не задевает GIL. Когда используешь процессы, а не треды, на GIL похую
>>1982807 У каждого процесса своя память. Тебе надо расклонировать твой список по другим процессам, потом собрать результат с других процессов. Это очень дорогие операции, они дороже вызова np.roll() будут.
Раскидывание по процессам работает в других случаях, когда задание небольшое по объёму, но требует больших вычислительных ресурсов. Здесь другая история.
Впрочем треды в данном случае не помогут, я ради интереса протестировал быстренько, только хуже работает.
Может быть надо смотреть в сторону numba, это очень сильная штука, я слёту не смог, но я не работаю с numpy/numba.
Скорее всего в numpy есть какие-то возможности для того, чтобы именно внутри numpy всё обрабатывать.
Здесь проблема в том, что используется дорогой вызов np функций с передачей туда np.array объектов.
Как мне форсированно сохранить данные которые я записал в файл (при помощи open('filename', 'w') ) ? Если где-то в процессе выполнения скрипта случится исключение или просто прога вылетит, то уже записанные данные не исчезнут?
>>1982830 Для надёжности надо метод flush() использовать, это принудительный сброс данных.
Гарантий наверное нет, тут ещё от шалостей ОС может зависеть, что произойдёт, если прибьётся процесс с незакрытым файлом.
Возможно тебе стоит чуть архитектуру изменить, вынести открытие-запись в файл в отдельные функции, перехватывать исключения, которые у тебя возникают, и в обработчике исключений делать закрытие файла.
Анонче, пилю юнит тесты на пайтест. Есть вопрос как делать: Есть один продукт, который будет интегрироваться с другими. Задача: писать тесты собственно для продукта И для интегрируемых продуктов. Вопрос: Стоит ли для каждого продукта, включая собственный пилить отдельный репо? После успешной интеграции с продуктом, тесты будут переделаны вместе а продуктом. Спасибо. Продукт Тим сказали мне делать ресерч как лучше хуже.
>>1982773 >Тебе дороже будет рассылать по процессам, чем делать всё в одном процессе. >>1982723 >multiprocessing.imap_unordered Если основное количество вычислений будет делаться нампаем, то можно использовать потоки - они будут работать как надо.
Ох Иисусе Христе блять... Ебаный Пуйчарм... Вот че он мне блять понавыделял? А главное - нахуя? Весь экран вдруг засрало зеленым цветом, хуй пойми зачем и почему, как убирать нахуй? Пидарасы из жетбрейнс здесь сидят? Рот я ебал вашего говноконвеера, нахуй на VSCode съебываю
>>1982855 Смотри на задачу, там надо делать np.roll(np.array, shift).
Вот сам вызов долго работает, а сам ролл отрабатывает очень быстро, вне зависимости от размера массива.
Короче тут нужны спецы по numpy, чтобы придумать, как уменьшить количество связок python-numpy.
Анон бы ещё озвучил величины примерные. Сколько в списке массивов, какого размера примерно и какого типа элементы. И сколько по времени это работает, и сколько надо.
Я почему-то думаю, что тут можно какие-то более глубокие оптимизации делать. Не просто же так у него вот эти мелкие np.array присутствуют, что-то с ними он ещё делает.
Первая картинка. Снизу время выполнения. По какой причине способ через s+= быстрее, чем через ф-строки и генераторы?
Я конечно понимаю, что оно видит, что строка только на запись и потому там прокает оптимизация для s+=, так что реально оно не создавало на каждом шаге новую строку - но с этой оптимизацией результат вроде как всё-равно не должен превосходить однострочник.
>>1982927 Вторая картинка? Ну либо если тупл один, то просто [0] допиши за списком, чтобы оно этот один тупл извлекало?
>>1981315 У тебя main нет вo view, есть text. Я тyт тoже джангy стал изyчать, если xoчешь мoжнo скooпеpиpoваться типo peer-to-peer leaning (Автор этого поста был забанен. Помянем.)
>>1983055 Может это даст какие-то зацепки? Слева лог работающей программы. Справа, когда я заменил путь в файле конфигурации. (после выделенной строки начинается ошибка) Если вернуть значения в файле конфигурации обратно, то программа всё равно не запускается
>>1983113 >async Когда вы блять уже усвоите что асинхронка в принципе не способна сделать быстрее ни одну числодробилку? Ни в пистоне, ни в жс, ни где-то еще
>>1983139 > здесь другая история Здесь у тебя асинхронность в принципе не используется, никак. Только одна задача, не преключения задач, ничего.
Ты можешь просто удалить всю эту асинхронную обвязку и всё будет работать как без неё.
Алсо, для более сложных задач, с несколькими потоками исполнения. У тебя всё будет работать не так, как ты зассчитываешь. Не смотря на слова async/await вызов функции main, весь цикл и вызовы swap_zero будут полностью синхронными, а не так, как ты ждёшь, наверное.
>>1983055 сука 3 часа в итоге оказалось, что config.read(ini_path, encoding="utf-8") можно записать без энкодинга, и всё равно будет работать config.read(ini_path)
Аноны, я вот только начал. Прохожу курс на юдасити. У меня такой вопрос. До этого ничего не учил именно на инглише, я очень свободно понимаю и терпимо говорю, никогда не тестил свой уровень. Но я читаю на русском с умопомрачительной скоростью. Если сравнивать - книга на русском у меня упирается в 200-300 страниц до "уставания", на английском около 70-80 страниц, это конечно касается худ.литры. Вот и вопросы такие: 1)Cтоит ли мне миксовать курсы и гайды на инглише с базовыми книгами на русском? 2)Вообще эти базовые книги на русском актуальны, хорошо написаны и их следует читать? 3)В случае если стоит ради бОльшего количества информации и большей ее доступности читать литературу на русском - не возникнет ли у меня проблем с мешаниной в голове между, например, integer и целое число и прочие понятия, даже базовые арифметические операции лучше наверное запоминать на одном из двух языков? 4)Если таки стоит читать на русском - какую книгу в бумаге я мог бы купить? Мне так очень удобно, с закладками, выделением. У меня есть ридер, и телефон офк, но это немного не то. Сорян за нуботу, хочу организовать как-то свой "курс" заранее
>>1983031 >Код с цифрами скинуть не могу np.array те что внутри 100 элементов, всего их в списке порядка 107, ведущих нулей от 0 до 100. Смотри вот какая история. Я только предупреждаю, что сам на numpy реально ничего не делал.
Суть np в том, что это внешняя система, которая как-то у себя хранит данные, вызовами функций ты эти данные преобразовываешь. Всё внутри работает быстро, а вот связка питон-нумпи работает медленно.
Я глянул быстро, но не мучал, своя работа висит. Вот, я бы в эту сторону смотрел: 1) создаёшь двумерный numpy массив. Не большой питон-список из небольших np.array, а двумерный np.array размерности 10М х 100 2) создаёшь векторизующую функцию через np.vectorize там первым параметром ты указываешь питон-функцию, которая будет применена к элементам массива my_rotate = np.verctorize(rotate) в rotate описываешь логику преобразования элемента после чего делаешь my_rotate(np_2dimension_array)
В общем это примерная идея, смотри сам в этом направлении. Может какие-то более эффективные подходы могут быть. Но это должно работать быстро, быстрее всех других решений.
Правда при условии, что у тебя двумерный массив, если у тебя np.array всегда длины ровно 100, это не проблема. Иначе сложнее, но скорее всего и для этих ситуацию решения есть. Может другие аноны подскажут.
>>1983231 Убеждаюсь в том, что без целевой вышки нельзя допускать до программирования вообще. Максимум простенький фронт делать.
А может быть и можно. Должен же кто-то создавать спрос на 128-ми ядерные процы и 1тб память для запуска простейших задач, которые деды на 386 процах реализовывали.
>>1983247 У нас такое качество вышки что это вообще не показатель, все зависит от мозгов индивида, это не компьютер сайенз в гарварде где дрочат. У нас старый пердежный дед набирает часы и рисует хуету на доске, а сдается все беготней, молитвами, пиздежом и покупкой готовых работ, т.к. делать их тебя не то что не научили, а почикали программу так что забыли даже попытаться научить.
>>1983247 >А может быть и можно. Должен же кто-то создавать спрос на 128-ми ядерные процы и 1тб память для запуска простейших задач, которые деды на 386 процах реализовывали. Вот ты и выдал свою необразованность, плебей.
>>1983200 Современных адекватных русских материалов очень мало. Культура перевода вымерла. Старые книги были очень хорошими, и авторские русские книги, и качественные переводы. Сейчас почти нет, только когда документация от разработчиков, вроде nginx или postgres.
Ты когда читаешь материал, тебе надо вникать и осмысливать. С такой скоростью, как художественную литературу, читать невозможно, бестолку. Больше 10-20 страниц в день ты реально не освоишь. Если язык более-менее норм, то уже не важно, на каком языке читать, на русском или английском, всё время на осмысление материала уходит.
>>1983200 Крепкие оригинально русские книги по айти это вообще редкость, а переводные это неизбежные косяки перевода и лаг по сравнению с оригиналом. Я вообще хуею с тех, что боятся английской тех. литературы. Это не художественная, где дохуя собственно художественности и всяких изъебов литературных. Да и какая скорость чтения для учебника, надо вникать и практиковаться, подгугливать и смотреть документацию параллельно.
>>1983286 >>1983259 Спасибо, я просто наивно полагал что наша школа перевода и тут творит чудеса, но видимо нет. Ну тогда не особо важный, но все равно вопрос - если я все таки захочу бумажный учебник(желательно мягкий), то какой выбрать и можно ли его заказать, не знаю, с амазона, типа он вообще дойдет, кек?
>>1983289 С амазона можно заказывать через форвардера, там будет какая-то пятерка-десятка сверху максимум. Конкретные тайтлы хз, надо знать твой уровень.
>>1983198 ага, короче аноны. СУКА 6 часов спустя я просто удалил файл конфигурации, создал текстовый домент, переименовал его в .ini и всё заработало. Винда что-то делала с файлом конфигурации, что он переставал работать
Я наверное какое-то кощунство спрошу, потому что поиск по треду вообще ничего не показал, но стоит ли проплатить какой-нибудь уже скомпилированный курс типа удеми или кодеакадеми. Я не ради какого-то всратого сертификата спрашиваю, а потому что у меня фантазии нет чтобы свои проекты придумывать, а там все включено. Или я не прав и с таким мышлением не преуспею?
>>1983031 >внутри 100 элементов, всего их в списке порядка 107 >>1982594 >работает очень медленно Ты точно правильные числа написал? 1000 строк по 200 элементов через слайсы работают за 30 мс. https://ideone.com/KJCLr8
Я потестил всякое разное - питон говно ебаное и не один из вариантов не догоняет jit-вариант. Обрати внимание на np_musor - собственный код циклов на питоне настолько медленный, что проще вызвать нагромождение функций из numpy чтобы получить массив (sm) со смещениями и потом через roll и bool-массивы прокрутить массивы. На больших числах всего в 6 раз отстаёт от jit-варианта.
Там двумерный np.array вместо списка - преобразование списка в np.array всё-равно 0 мс требует, а вот jit-вариант просаживается до 9 мс с ним.
>>1983528 >1000 строк по 200 элементов через слайсы работают за 30 мс. а у него 10 миллионов строк по 100 элементов. Получается несколько минут при такой скорости.
>>1983566 А, это он 10^7 107 хотел написать... Тогда хули он думает, написать программу на си на 20 строк, и передавать в неё массив - или нубму заюзать. Питон же не для таких задач, очевидно.
Вариант с мусором из нумпи не проходит из-за того что у меня оперативка заканчивается, а так за 4 секунды выполняется самым тупым кодом с нумбой.
>>1983247 >Убеждаюсь в том, что без целевой вышки нельзя допускать до программирования вообще. Вышка в лучшем случае дает базу, при помощи которой будет легче учиться дальше. В худшем - ничего. А все потому, что ни один нормальный программист не пойдет преподавать. >Максимум простенький фронт делать. Фронт уже давно сложнее бека.
Подскажите плиз. Первый раз делаю питон проект с базой данных. веб страничка где ты получаешь инфу из базы и выводишь ее. и кнопка где ты заносишь инфу в базу. Разве верно получать данные из бд напрямую при каждой загрузке страницы? Как правильно это сделать?
Салам двач. Требуется пояснение за потоки и структуру программы. Для опыта пишу говнопрогу - генератор карты сайта. В идеале: у главного класса proc_manager было три сына - классы старший page_walker, средний test_url и младший, совсем дурак и кроме писания в файлы нихуя не умеет - file_writer. Каждый реализован отдельным процессом средствами модуля meltipricessing для создания процессов и общения процессов между собой. В классе page_walker хочу запустить многопоточное чтение очереди Queue, наполняющуюся годными урлками из процесса test_url, чтобы минимизировать ожидание ответа от сервера. Самый простой способ, что нашёл - модуль concurrent.futures и класс ThreadPoolExecutor
Это ситуация в идеале, на данном этапе есть говнокод и я знаю, что это говнокод. По этому говнокод есть вопросы. Фоты прикладываю (извините что фоты, а не скрины, уже убегать надо было).
1. Многопоточная обработка не робит, почему? Что закоментить ThreadPoolExecutor, что self.walk() - разницы никакой. Почему? 2. Сама структура программы, которую я описал в идеале - насколько она приемлема? Так программируют или есть шаблоны проектирования попроще и поудобнее? 3. Есть ли способы огюрганизовать многопоточное чтение из очереди и доступ по урлкам проще, чем описанный? Буду рад любым советам
>>1983918 Чтобы было легко и не жалко его насиловать же. Я просто вчера часов 8 учил стартовый синтаксис по юдасити, мне как преподу не нравится их структура, да простые, но когда говорят о дата-структурах лучше бы мне сначала озвучили их всех, а потом толкали про каждый телегу, в итоге я вчера остановился на сетах, которые судя по юдасити как бы нахуй не нужны, ну т.е. объяснить их преимущества и особенности перед листом они как бы не могут, потому что он идет 3м в списке, и кажется после листов и туплов просто ненужной хуйней. Я понимаю что скорее всего сет будет наиболее часто встречаться далее, приходится читать извне, и книга позволяющая быстро освежить знания без гугла мне была бы в помощь.
Можно ли открыть в канвасе изображение и сделать из него например трапецию? Хочу сделать изображение гранью вращающегося куба. И не пойму как это можно сделать.
>>1983946 >в итоге я вчера остановился на сетах, которые судя по юдасити как бы нахуй не нужны, ну т.е. объяснить их преимущества и особенности перед листом они как бы не могут, потому что он идет 3м в списке, и кажется после листов и туплов просто ненужной хуйней. Это потому что ты пока не мыслишь категориями "сложность вычислений", "производительность" и т.п. Поиск по сетам работает быстро, по спискам медленно. Вот это главное.
Ну и иногда плюшки вроде возможности удобного объединения, вычисления разности и т.п., но это реже на практике встречается.
>>1984082 Я пока пытаюсь с этим очень ограниченным набором знаний придумать себе промежуточную задачу, которая меня удовлетворит. Я придумал, но для нее нужны роллы процентов, случайные значения, я пока до этого не дошел, но уверен что это все есть в любом языке. В сетах я уже использовал юнионы и сделал задачку про ашотов на рынке, которая выдает ответы в духе - какой фрукт не продают оба ашота, какой фрукт продают оба. По идее сейчас с дикшинари я смогу забить и цены и их придуманные локации, чтобы сделать поисковик самых дешевых помидоров на рынке ближе всего к тебе. Сорян за нуботу, я тут 90% треда даже не понимаю, только вот начал и мне пока все нравится.
>>1983946 С перечислением структур данных есть проблема - их слишком много (даже в стандартной библиотеке). Частота их использования падает экспоненциально при удалении от str/list, а если говорить про те, которые используются 90% времени - то ты их уже изучил.
set, кстати, используется достаточно редко. Свойство отсутствия повторений в set не такое сильное, как кажется на первый взгляд, и чаще всего вообще нежелательно, как и отсутствие заданного порядка итерации. А в тех местах, где множества нужны, их зачастую нельзя использовать, потому что set мутабелен и не хешируется, например, {{1}} в питоне написать нельзя. В таких случаях используется frozenset.
Я не знаю, какую книгу тебе посоветовать, но проверь - может документация для тебя будет работать как справочник? Во-первых, есть сайт. Страница, которая тебя интересует, https://docs.python.org/3/library/stdtypes.html, написана фундаментально, в ней все имеет смысл, но может быть трудно выловить суть. Во-вторых, функция help выводит справку на объект: help(list), help(dict.items), help('foobar') и т. д.
>>1984286 >А в тех местах, где множества нужны, их зачастую нельзя использовать, потому что set мутабелен и не хешируется, например, {{1}} в питоне написать нельзя. В таких случаях используется frozenset. Очевидные множественные проверки на наличие элемента без set ты никак не сделаешь мимо делал лочки
>>1984174 >return "Vector(" + str(t) + ")" Предыдущие ответы все правильные, просто добавлю, что такой return вернет строку, а не объект класса Vector. То, что тебе "вылезает", когда ты работаешь со своим классом, определяется в этом же классе методами repr или str - выше это уже написали. "Вылезти" всегда может только строка. Даже если кажется, что "вылазит" не строка, этап превращения в строку происходит всегда.
Кракозябра "Vector object at 0x7f1b11a7c048" - это работа той реализации метода repr, которая досталась тебе от класса object - (неявного) предка всех классов, которые ты определяешь.
>>1984303 Я уже немного бьюсь головой об стол. От кракозябры я избавился своим способом, но вот сверить длину и нормально выбросить исключение не выходит. Это уже на завтра.
Смотрите, у меня есть приложение, которое в просто потребляет 80мб, если загрузить, например 200к объектов, то в памяти должно быть минимум по одному сложному объекту + корутина + еще что-то, но я разделил прибавившуюся память на кол-во объектов и получил что на 1 объект требуется 6-9 байт, я может чего-то не понимаю, но разве на 1 переменную минимум 64 бита не выделяется в системе? А тут еще питон и более сложные объекты, почему так мало памяти потребляется?(объекты в программе по сути словари с переменными и парой методов, переменных штук 10 и у каждого объекта почти все разные(разные строки, разные числа))
>>1984365 Списки (и вероятно словари и прочие коллекции) не создаются с нулевой длинной - они создаются с такой длиной, которая статистически минимизирует необходимость перевыделения памяти под коллекцию. При необходимости расширить коллекцию она увеличивается в два раза - это хорошая (лучшая?) стратегия по минимизации количества перевыделений памяти.
ОС, в свою очередь, тоже может зарезервировать больше памяти для процесса, чем тот просит - по схожим причинам.
Скорее всего, при загрузке новых объектов, для них уже было выделено место.
>>1984384 Но вопрос остается, если есть объект в котором хранится 10 полей, например, строк, которые иммутабельны, это разве не значит что на объект минимум 30 байт понадобится? А то я может чего не понимаю важного
>>1984400 Смотри функцию sys.getsizeof() она тебе показывает, сколько объект занимает. При этом надо учитывать, что есть у тебя список, например, то это будет размер самого списка и указателей на объекты, а без размеров объектов.
То есть условно список из 1000 объектов это 8кб + память на объекты, это на уровне ещё 30 кб минимум.
>>1984365 Скорее всего у тебя некорректные замеры.
Память выделяется под кучу, огромным блоком под много переменных. Она уже выделена на тот момент, как ты загружаешь эти 200к объектов. Поэтому ты можешь большой разницы не увидеть.
>>1984400 Конечно, память понадобится, но если ты видишь, что процесс забрал себе меньше памяти, чем ожидалось - значит, у процесса заранее была свободная неиспользуемая память. Все-таки, в процессе работает интерпретатор, который наверняка не хочет на каждое новое поле в конструкторе просить у ОС память. Это не вопрос конкретно к питону, это вопрос ко всему стеку.
Ты можешь узнать размеры объектов при помощи модуля sys, но это тоже непросто.
>>1984418 Задачи - решать, а не учить. Что касается языка, то ты уже все выучил, применяй знания теперь. Решил, чем хочешь заниматься, или не получается?
Есть один скрипт, который последовательно делает всякое. Я хочу чтоб он весь работал как функция. То есть я буду вводить значения исходных данных, а мне выдастся результат. При этом я не хочу весь скрипт переписывать в виде функции def xxx(a,b):.... Я думал это решается тем что я сделаю исходный скрипт модулем, но оказалось, что при импортировании скрипт исполняется. Естественно это невозможно без исходных данных. Так вот есть вариант не переписывать скрипт как функцию, но чтоб в него передавать иходные данные и он с ними исполнялся? Надеюсь понятно описал. Прост скрипт длинный и у меня теряется форматирование при простом копировании строчек. Да и вообще лень под def всё загонять.
>>1984424 Комментарий к тому, что на скринах, другой анон На первых двух память расходуется в классе, а не в экземплярах (инстансах) класса Чтобы узнать размер класса, надо сделать sys.getsizeof(C), но это очень большая величина будет, потому как там очень много системных переменных на каждый класс.
На третьем скрине память расходуется в словаре d, а не в экземпляре класса. В экземпляре хранится только ссылка на словарь.
Тут очень много тонкостей, конечно, надо помнить, что все объекты в питоне хранятся как ссылки, поэтому узнать реально занимаемый объём довольно сложно.
>>1984444 > Нет, не понятно ты написал. Приведу пример. В исходном скрипте №1 есть Date_range = pd.date_range(start=start_date, end=end_date, freq='D') Date_range.to_csv(f'{name}.csv') Я из скрипта №2 задаю start_date=1/1/2020, end_date=1/1/2021, name=test И у меня появится test.csv с датами. Естественно там намного больше операций, но смысл такой.
jupyter notebook у меня некоторые отступы при копировании съедает, поэтому муторно.
>>1984452 Самое интересное для меня - многопоточность и асинхронность. Прикладных задач такого рода на питоне относительно мало. Самое востребованное - бекенд.
Раз уж ты что-то знаешь, то нужно себя попробовать в чем-нибудь.
Порешай алгоритмические задачки (codewars, hackerrank, leetcode), поанализируй данные (kaggle), сделай рогалик в терминале, чтобы генерировать коридоры и ходить по ним, напиши простой сайт на чем-нибудь маленьком (flask?) по гайду, напиши чат или посканируй порты в локальной сети, попарси сайт.
Лично я делал алгоритмические задачи и писал рогалик (получилось, кстати, ужасно). Потом сайт.
ООП нужно. Не прям нужно-нужно, но видеть его ты будешь постоянно.
Если нужно прописать для класса статический метод, нужно обязательно декорировать его как "@staticmethod"? Или эта фича просто для читаемости? Работает же, вроде, и без декоратора.
Чет не могу придумать как из нескольких датафреймов или списков вытаскивать отсутствующие в целевом фрейме/списке даты и добавлять их по по порядку. Чтоб понятней было вот пример https://pastebin.com/upNwa5US
>>1984597 Ну значит это не для вас молодой человек написано. Мне кажется кооперация, это именно что позволило человеку слезть с пальмы. На приведенные аргументы ,я отвечу аналогией: Есть допустим сессионная игра, где можно играть либо со случайными людьми, либо взять уже знакомого напарника и осуществлять поиск игры уже с ним, в обоих случаях ты играешь в команде, но даже напарник будет играть чуть хуже чем случайные тимейты, эффективность игры с напарником будет выше. Тим - команда, плей - играть, группа всегда действует эффективней одиночек. Можно сказать что главное различие в степени отвлечённости.
>>1984604 То есть ты хочешь кооперироваться с таким же ебаклаком как ты и потом будете сравнивать ваши писаки с лучшими решениями, а если че потом бежать на двач и спрашивать че не так, все правильно понял?
Есть допустим класс Zalupa, в нем расписаны свойства объекта. Но для операций создаётся новый класс Action в котором методы будут воздействовать на Zlupa. Зачем разносить объект и действия в разные классы? Не проще ли создать один класс, в нём определить обьект и действия над ним?
>>1984691 Как раз занимаюсь сейчас тем, что хочу разбить класс-монолит на несколько. Не на питоне правда.
Нужно для того, чтобы логически разделить данные и их обработку.
Так удобнее поддерживать, структура данных постоянна, надо задокументировать и хранить в отдельном модуле. Обработчики данных активно меняются и перепиливаются, их может несколько версий разных быть, можно наследовать от класса с данными и мешать друг другу не будут.
>>1984604 Идея красивая, не новая, но сложно реализуемая. Особенно когда удалённо всё общение, да ещё через месседжеры.
Надо чтобы больше живого общения было.
Этим кстати универы как раз очень хороши. Там все одного возраста, статуса, вместе осваивают что-то, общаются на эти темы и тем самым быстро растут в уровне, даже если в программе про айти мало.
Помогите начинающему, я сделал так, потому что логично использовать рейндж(ну в моей голове логично), по идее я этого еще не должен уметь и он выдает такое говно, при этом для любых чисел работает все. Что ему не нравится?
>>1984691 Если классы небольшие то канешн разносить не надо. Если они крупные то создавать один God-class херовая затея Был на проекте где было 2 таких крупных класса с ебалионом методов в каждом (штук 40 наверно), через какое-то время была абсолютно нихера не ясно что куда идет
>>1984691 >Не проще ли создать один класс Проще, и чаще всего именно так и нужно поступать. Идея класса как раз и заключается в том, чтобы определить и тип данных, и операции над ними.
Какие могут быть поводы разделить операции и данные? Например, снижение связанности компонентов в событийной архитектуре. Вместо того, чтобы иметь прямой доступ к мутации состояния, компоненты получают возможность отправлять события (действия) в абстрактное "наверх". Как сказано в >>1984757, это дает дополнительную свободу при внесении изменений.
Стоит заметить, что изначальная предпосылка "класс - это данные и операции" здесь не нарушается. Меняется понятие данных - вызовы методов превращаются в объекты - и над ними тоже можно определять операции. Например, какой-нибудь класс ColorChangeAction может иметь метод convert to style change action или clone. Или, может даже apply change, который примет объект состояния и что-нибудь с ним сделает. В redux, например, это не так, и функция типа apply change определяется один раз рядом с хранилищем состояния. Но где-нибудь это может сделано и так.
Иногда сам тип данных не располагает к добавлению методов. Например, класс Point2D скорее всего не должен иметь метод "set to current active element", потому что методы такого рода привязывают класс ко всему подряд в приложении и постепенно превращают простейший контейнер для двух чисел в god object.
В этом случае, кстати, вполне можно говорить об объекте действия "set to current active element" с методом applychange(self, point2d). Или же просто о каком-то контроллере с методом "set to current...". В общем, твоя конкретная ситуация - это главная подсказка, как поступать.
>>1984813 Там в задании четко указано что число чисто int от 1 до 200. Я видимо просрал понимание инклюзивности/эксклюзивности операторов сравнения, поэтому в башку автоматом пришла идея нагуглить есть ли range как явление и применить его.
>>1984817 Ты же понимаешь что итератор in range должен целиком поштучно пройтись по каждому значению в нем пока не найдет совпадение? Насколько это хуевее простого знака сравнения догадываешься?
>>1984817 >понимание инклюзивности/эксклюзивности операторов сравнения Вероятно. В коде с range нет обработки отрезка [50; 150], а также числа 180.
a in range(a, b) == True b in range(a, b) == False
>>1984819 >итератор in range должен целиком поштучно пройтись Не должен, в range эта операция переопределена и оптимизирована до нескольких простых сравнений.
>>1984778 У тебя пропущен диапазон от 50 до 150 range (1, 50) работает в диапазоне от 1 до 49, то есть если у тебя range(1, 50), range(51, 100) то число 50 не обработается
Исключение из-за того, что ты некорректно строки сшиваешь. Использую "txt {} txt".format(num) Вариант использовать f-string или старые %d Как ты делаешь работает в JS, в питоне нужно явное преобразование к строке
Кто-то сверху написал что Универы хорошо тем, что освавиваете программирование вместе с другими людьми.
У меня в группе из 23 человек программирует только 3-4 человека, на втором потоке так-же, остальные всегда пишут в личку типо 1 - А почему a = 2 + 2 всегда 4, после такого и жопа сгореть может ( Ему надо было суммировать все это )
И люди вроде не тупые, к примеру, я школу окончил на одни двойки, а отличников в группе довольно много, но никто из них ничего не понимает в программирование, может потому-что не хотят и поступили сюда по другой причине.
За пол семестра первого курса я уже приступил к освоению фреймворка(Django), но до этого немного в bs4 и requests покапался, а они до сих пор не знают как работает цикл, стыд.
Да у меня есть небольшие, или даже большие(хз) проблемы в понимание OOP, да и я до сих пор не знаю где мне нужно использовать замыкание или деструктор, может потом как нибудь пойму.
>>1984856 Ну представь, ты хочешь выучить английский язык, тебе говорят что с мотивацией у тебя этой займет от полугода(в среде) до 2х лет очень ленивого учения если ты еще и тупой. В школе+универе ты учил английский лет 8 или около, по 2-3 часа в неделю. Если бы у тебя была мотивация, ты бы успел выучить за ~1200 часов 3 иностранных языка до флюент разговора, но ты прекрасно видел как твои одногруппники сдавали инглишь на 4-5, зная только матершину и мемасики. Тут так же, мотивация и желание изучать что-то дает миллионный пинок под жопу любому окружению, инструментам(образовательная программа, группы, контроль успеваемости, конспектирование) если человеку не надо.
>>1984856 >У меня в группе программирует 3-4 человека Вот у тебя в группе программирует 3-4 человека, у вас есть общие интересы, обмен знаниями, взаимная поддержка, конкуренция и мотивация. Вы постоянно друг у друга на виду.
А анон пытается хоть одного найти, чтобы как-то через чат общаться.
Огромная разница. Вот представь, что в твоём окружении нет ни одного, кто бы понимал хоть немного в технологиях и кому это было бы интересно. Ты бы свихнулся и не смог развиваться.
Последний вопрос, анончики. Я не понимаю почему это вообще работает. Типа питон понимает плурал форм в английском или я загоняюсь, типа до этого одиночная форма city или dildo не всплывала нигде, вместо воплей ЗАДЕФАЙНЬ city он спокойно делает свое дело. Я не понимаю почему
>>1984895 Ну т.е. мне хотелось убедится, что он просто понимает единственное и множественное число английского, если я неправильно назову единственное или множественное число, то выдает ошибку что name is not defined. Мне это показалось странным
>>1984882 Конструкция "for x in y" неявно определяет новую переменную x вне зависимости от того, как конкретно она называется. Вот, например, обход списка в цикле while с явным определением переменной x - конструкция for x in y гораздо чище.
>>1977853 (OP) В каком формате держать мини-кеш при использовании скрипта?
Условно, у меня луп, где каждые 10 секунд совершается запрос и прилетает id и еще некоторая инфа. Я хочу сохранить id и пару других полей в кеш, и, если при следующем запросе, мне пришли опять те же данные, не делать последующие действия.
На ум сейчас просто log \ txt \ json файл с перезаписыванием приходит. Есть что то другое, или жсона будет достаточно ?
Естественно ты можешь сделать аналог, возможно более функциональный. Или использовать какое-нибудь внешний сервис для этого memcached/redis, если тебе надо долго хранить, вне приложения.
>>1984975 А если ты не хочешь поднимать redis, то может стоит глянуть в сторону sqlite, но это зависит от того, какие данные у тебя как ключ используются, какие тебе надо хранить.
Общий паттерн в этом случае такой, что ты по ключевым данным гененируешь хеш, например sha-hash от сортированного json, и хранишь в базе или файлах данные для этого хеша.
Соответственно если тебе надо получить данные, ты аналогично строишь хеш, если для него у тебя есть сохранённые данные, берёшь из кеша, если нет, вычисляешь-скачиваешь.
Так можно хранить очень большие данные, создавать каталоги с именем-хешем, большие файлы и др.
Как по-православному хранить регексы, если в коде их много и на них плотно завязан функционал? Выносить в отдельный модуль как строки и потом вставлять эти строки в re.re_method? Какой-нибудь класс с регексами создавать? Алсо, стоит ли их отдельно компилировать на последних версиях пайтона?
У меня встал вопрос. Вот учу я пит%ух%он, и хочу попробовать какой-нибудь уеб-фреймворк, например Flask. Но я так понимаю я немогу просто написать pip install flask, и сделать збс. К нему же ещё нужно доставлять какой-нибудь апач да?
Анон, а подскажи как отправлять смс с компа самым простым способом? Симка и брелок от любого оператора не проблема. Само собой не бесплатно. Главное возможность автоматизировать отправку большого количества разных сообщений разным абонентам
Допустим у меня есть класс который должен работать со словарями. Соответственно базовый объект класса словарь. Тогда правильно ли будет наследовать класс от dict и в ините прописать загрузку существующего словаря, либо создание нового если не существует, а потом уже полноценно вызывать методы для объекта?
А то я видел некоторые просто создают экземпляр класса,но работает не с экземпляром, а только с внутренними переменными класса.
Какой подход верный? Или оба имеют право на существование?
>>1985319 То и значит, max() с пустыми последовательностями не работает, max([]) кидает ошибку. По какой-то причине список a у тебя не сформировался, наверно, на вход подали x длинной 1 или вообще пустой, и твой цикл просто не запустился, и список a остался пустым. С этим можно бороться, используя значение по умолчанию, например, max([], default=0) не упадет с ошибкой, а вернет 0, но не всегда возможно найти приемлемое значение по умолчанию, тогда нужно следить, чтобы пустой список в b]max()[/b] просто не попадал, как-то по особому обрабатывать этот случай, ну или ловить и обрабатывать такое исключение
>>1985923 Это значит, взять все элементы, начиная с первого, не забываем, что индексы у нас начинаются с нуля. Так, если word = "qwerty", то word[1:] будет "werty"
Работал кто с модулем statsmodels.tsa.vector_ar? Тут https://www.statsmodels.org/dev/vector_ar.html#model-fitting после слов In [15]: results.summary() выводится огромная таблица, но у нее нет никакого индексирования. Сам объект results является <statsmodels.tsa.vector_ar.var_model.VARResultsWrapper at 0x7fb285d67b70>. Так вот возможно ли как-то обратиться к этому result или result.summary(), чтобы вытягивать и в список или датафрейм? Вот придумали люди программу,которая считает всё что нужно, но результаты выдает только неиндексируемым текстом или вообще графиками.
>>1986243 А, всё наверное отмена. Покопался в методе summary, нашел пару методов. А потом оказалось, что функция dir(results) дает все методы, которые выводят искомые значения в нормальном формате. Но чую эта библиотека мне еще подкинет сюрпризов.
Есть обычный синхронный код (эвентлуп) он шлет всякие запросы по апи на бинанс. Я хочу написать асинхронную функцию, которая будет говорить мне (писать лог) каждую минуту, сколько я потратил лимита по запросам.
Как я понимаю, это должна быть асинхронная функция, чтобы она не вмешивалась в ход основного кода?
Можно ли запускать одним скриптом синхронный код, и асинхронный? Если нет, то подскажите что можно прочитать и как мне реализовать задуманное.
Где питона дрочите? Прошел два курсе на степике, прошел их тренажёр с задачами, дальше чем заниматься? Литкод? Может знаете ещё какие-нибудь бесплатные курсы, но уже не для совсем начинающих питонщиков, можно с упором в одну какую-нибудь тему.
>>1986801 В асинхронном программировании ключевая сущность это "задача", примерно как тред в многопоточном.
async-await и планировщик это механизмы для переключения задач.
У тебя одна задача может заниматься тем, что считать лимиты по запросам и раз в минуту выводить статистику. Не очень понятна твоя задача правда.
А вторая задача при каждом запросе запрашивает ресурс у первой, и ей же отправляет статистику использования ресурсов. Взаимодействие, например, через очереди.
>Можно ли запускать одним скриптом синхронный код, и асинхронный? Синхронный код это такой, который работает от начала и до конца, пока не кончится. Асинхронный такой, в котором предусмотрены механизмы для переключения на другую задачу в определённых await-местах, а в остальном это те же синхронные задачи.
Если тебе надо, чтобы код работал одновременно, то или надо сделать твой синхронный код асинхронным, либо выносить его в отдельный тред и возиться с синхронизацией для обмена информацией с основным потоком. Базовые примитивы asyncio не thread-safe.
>>1986908 >Если тебе надо, чтобы код работал одновременно, то или надо сделать твой синхронный код асинхронным
Так и подозревал. Почему-то считал что асинхронный код как-бы работает в фоне но потом запустил пикрелейтед и понял что это не так принт не выполнился.
Раз уж ты шаришь, то спрошу вот что. Получается что await, это как бы места выхода из функций?
Вот смотри мой нынешний код, это бесконечная функция-эвентлуп с вызовом самописных функций, условиями, переключателями, и прочими запросами. Идея в том, чтобы знать сколько я трачу лимита на запросы. Получается, что я не могу тупо дописать async-await в функцию эвент лупа? Точнее могу, но тогда прийдется писать await в каждой строчке чтобы поймать нужный момент для выхода из функции и передачи управления в функцию счетчик? Ссорян что тебе приходится писать мой бред, у меня проблема с выражением своих мыслей
>>1986957 >Получается что await, это как бы места выхода из функций? Да, только на await можно прервать исполнение функции. Тут начинаются подводные камни, что на самом деле не на каждом. Но, у тебя 100% гарантия, что без await переключения не будет.
>но тогда прийдется писать await в каждой строчке чтобы поймать нужный момент для выхода из функции и передачи управления в функцию счетчик А зачем тебе в каждой строчке возможность перехода? Используй тогда треды. Это как раз неудобно, что в каждый момент можно перейти.
Тебе надо дать возможность перехода тогда, когда у тебя программа блокируется, ждёт ресурс какой-то. Либо когда тяжёлая операция, раз в сколько-то итераций цикла ты даёшь возможность перейти, вот чтобы функция не могла работать больше чем 10мс-1000мс без переключения . Либо каждый раз, когда ты используешь какой-то ограниченный ресурс, который надо контролировать.
>>1986963 Я чет перечитал посты и понял, что возможно объебался. Как я понял, у тебя есть некоторый код, который шлет запросы на апи и есть проверка количества запросов через ту же апишку, которую ты хочешь вынести в одну функцию, причем весь код синхронный? Может тебе асинхронность не нужна вовсе? Сделал бы функцию в отдельном процессе, которая бы ходила бы с проверкой раз в минуту и выдавала значения в stdout/файл.
Нужно проверить массив строк (в среднем ~1000-1500 по длине) на наличие в ней определённого символа. Что теоретически работало бы быстрее: конвертирование её в сет и проверка через symbol in set или re.findall()?
>>1987165 Поясните, разве что-то может быть быстрее, чем пройти по каждому элементу и сравнить? Какие вообще альтернативы могут быть? (для неупорядоченных данных)
>>1987200 >Поясните, разве что-то может быть быстрее, чем пройти по каждому элементу и сравнить? В данной задаче как раз тупая проверка именно в массивах строку будет самая быстрая.
Ох бля, это ж Python. Ну х.з. но в любом случае лишняя конверсия скушает время.
>>1986997 Вижу что шаришь. Есть ли смысл делать асинхронность с api запросами (request)?! Скажем их 5 штук, они идут друг за другом. Но некоторые работают медленно и задерживают другие.
>>1987387 Смысл есть. Но тебе придётся освоить сетевые функции asyncio, которые довольно сильно отличаются от синхронных. Но это полезно.
asyncio в первую очередь нужен для сетевых задач, в сетях надо смотреть именно сюда. В других случаях может быть разумнее смотреть на многопоточные и многопроцессные подходы.
>>1987022 > Как я понял, у тебя есть некоторый код, который шлет запросы на апи и есть проверка количества запросов через ту же апишку Не. Там у них лимит 1200 веса на запросы. Разные запросы жрут по разному этот вес. Его нельзя превышать, иначе забанят. И остаток этого веса нужно считать самому, они эту инфу не представляют.
А у меня обычный бесконечный код с разными запросами к апи. И я хочу раз в минуту выводить лог с информацией по потраченного весу. В синхронном варианте это делать как-то по не круто я считаю.
Подскажите в sqlalchemy какие-то свои приколы с SUM ?
я пытаюсь разобраться в одном опенсорсе, но не понимаю где они налажали. Тут sum по int из mysql превращается в pandas dtype = object а если я колонку переделаю на float, то нормально. Пытаюсь зайти с другой стороны - от возможных типовых ошибок в sqlalchemy. Исходник для меня сложненький (
>>1987623 >Тут sum по int из mysql превращается в pandas >dtype = object >а если я колонку переделаю на float, то нормально. Прочитай это предложение и попробуй его понять. Что ты написал? Что нормально? Что ненормально?
>>1987623 ну если ты не знаешь pandas и sqlalchemy, то тебе и будет непонятно.
Короче, есть попроще формулировка:
как sqlalchemy имитировать select sum(field) ? Мне не нужно чистый sql, с ним все работает. Мне нужно это уебищный orm-синтаксис заюзать чтобы понять какой из опенсорсов налажал
sum по полю int должен быть, очевидно, числовым типом где бы он ни был представлен. Хоть в pandas, хоть промежуточных местах в sqlalchemy. И это я называю нормальным.
Я пытаюсь накопать в каком месте в процессе трансформации из sql в pandas dataframe эта колонка превращается в object - и это ненормально.
В качестве этапа этого расследования мне нужно понять как обычно работают в sqlalchemy с sum, но при этом не создавать полноценные маппинги объектов. В этом проекте нет ORM в в виде объектов. Только запросы и базы данных все абстракционированы через sqlalchemy
Аноны, ай нид хэлп. Суть такова, есть фукнция: def coldhot(user_number): if user_number == hidden_number: return 0 elif user_number > hidden_number in range(1,10) or user_number < hidden_number in range(1,10): return 1 elif user_number > hidden_number in range(10, 20) or user_number < hidden_number in range(20): return 2 elif user_number > hidden_number in range(50) or user_number < hidden_number in range(50): return 3 else: return 4
И она не работает правильно. Мне нужно чтобы чтобы она возвращала результат если одно число больше другого в указанном диапазоне. Вот именно с этим диапазоном и затык. Я нуб, если чо. Учу язык ровно неделю.
>>1979040 Стандартный алгоритм сортировки в Питоне стабилен. Поэтому можно сделать два последовательных прохода с разными ключами (secondary key идёт первым, primary key - вторым).
>>1987836 sql учат ко всему, это базовый скилл. И такой хуйни куча, даже если она не оговаривается. Не получится выучить пару конкретных кейвордов и на что-то претендовать.
>>1987690 Спасибо что ответил. Сейчас прочту и попробую понять что там у тебя, и как это к себе применить.
Пока только до такой схемы додумался пикрелейтед. По сути функция my() должна ебашить без остановки, но эвентлуп ее тормозит. Пришлось в синхронный код добавить async-await
Пилю авторизацию на джанго. Что лучше использовать, встроенный механизм авторизации или чето типа allauth? С одной стороны, мне кажется лучше использоваться меньше всякого стороннего говна. И если мне будет чего-то не хватать в стандартной авторизации, я ведь всегда смогу это допилить? Типа там дополнительные поля или авторизации через другие соц.сети. С другой стороны хз.
>>1988302 >По сути функция my() должна ебашить без остановки, но эвентлуп ее тормозит. Получается, что функция my() доходит до await, передает эстафетную палочку исполнения второй таске и ждёт пока эта вторая таска вернет жезл власти над эвентлупом обратно. Выходит, надо смотреть что там у тебя боте целую секунду выполняется. Ты там случайно time.sleep() вместо asyncio.sleep() нигде не вписал, или у тебя запрос к апи синхронный? >Пришлось в синхронный код добавить async-await Все правильно сделал, главное чтобы заработало, а потом уже, если будет критично, вынесешь в отдельный тред. А вообще, я думал, все биржи давно перешли на вебсокеты, и ты просто подписываешься на стримы событий и ждешь сообщений. Какой смысл апи долбить постоянно - непонятно.
>>1977853 (OP) Привет, анон. Ситуация в том, что по незнанию раньше ставил пакеты через Пип без виртуального окружения, теперь же, при попытке поставить что-либо получаю миллион неясных ошибок, нужно как-то вернуть все в первоначальное состояние. Как это сделать?
Ну и классика, те пакеты, что я поставил через виртуальное окружение не видны в пайчарме, какие-то блять костыли. Как решить проблему?
Коллеги приветствую. Где брать практику для пистона? Вот прочитал я укус питона, подучил основы. Вот как теперь их применить на практике? Пробовал на codewars, но как по мне там задачки сложноваты для новичка.
>>1988991 Удалить из виртуального окружения или вообще глобально? Глобально можно как-то вернуть дефолтные настройки? Так же у меня похоже проблема с $PATH, может с этим что-то связано?
Всем привет, я тот анон, который смог выбить в начале марта проект на 800 долларов и наконец его завершил, теперь точно уверен что фриланс жив, не знаю почему меня некоторые отговаривали, получилось просто супер, попробовал и многопоточность и асинхронность серьезную и drf хорошо выучил, в общем все, надеюсь с таким опытом у меня будет небольшой шанс получить работу...
>>1988725 >Ты там случайно time.sleep() вместо asyncio.sleep() нигде не вписал, или у тебя запрос к апи синхронный? Да, запрос самый примитивный, синхронный. По пол секунды ждет ответа.
>>1982128 Типизация в питоне сильная, например, строку с числом сложить не получиться, "2"+1 не вернет ни 3, ни "21", такое выражение выкинет ошибку, но она динамическая, это значит, что переменная связывается с типом в момент присваивания значения, а не в момент объявления переменной, то есть, например, в джаве если напишешь int x = 1, а потом x = "qwerty", то компилятор на хуй тебя пошлет, а в питоне пожалуйста, интерпретатор все съест, только надо понимать, что если написать x = 1, то в x будет лежать int, и сделать с ним можно будет только то, что можно делать с int, а если потом написать x = "qwerty", то там уже будет лежать строка, и с x можно будет делать только то, что можно делать со строкой
Привет тред. Подскажите в какую сторону копать, чтобы сделать сайт для игры в какую-нибудь "висилицу", например. То есть оба игрока играют, ходят по очереди. Как это вообще реализуется, понимаю когда просто клиент делает запрос к серверу и тот возвращает простую страницу, а в случае с примером выше как это делается? Где почитать и как вкатиться в подобные приложения?
Время нубовопросов. Хочу сделать для практики дашбоард и тянуть на нее график битка. Нашел апи бинанса и документацию по их эндпоинтам.. Куда двигаться дальше и что/где посмотреть по работе с апи и эндпоинтами?
>>1989482 >понимаю когда просто клиент делает запрос к серверу и тот возвращает простую страницу Создаешь пять простых страниц: 1. Создание партии игры 2. Подключение к существующей партии игры 3. Страница ожидания хода 4. Страница выполнения хода 5. Страница результата партии Клиент периодически делает запрос и получает одну из страниц, в зависимости от состояния партии. Состояние изменяется от действия пользователя или сервера, допустим, истекло время хода игрока. Можно не отдавать всю страницу, а только изменения состояния, с помощью аякс-запросов или вебсокетов. Всё, ты готов. Берешь какой-нибудь фласк, или даже боттл, и пилишь игру. Удачи. >>1989585 Делаешь http-запрос на эндпоинт согласно документации. Примеры можешь посмотреть на гитхабе по запроса "binance api" там сотни клиентов разного уровня паршивости.
>>1981878 Сумасшедший, что ты блять несёшь. Какие полтора месяца? Если кто-то с нуля и без вышки за два года вкатиться, то это уже победа. Подставь вместо программиста врача, инженера, архитектора, экономиста и напиши про "изи вкатиться за полтора месяца". Тебя обоссут в любой тематической доске. И только погромисты несут хуйню про "пять неделю и уже сеньор 300к наносек"
Изучаю основы питона, не могу понять такую конструкцию, в других ЯП с таким не сталкивался. def toJadenCase(string): return " ".join(w.capitalize() for w in string.split()) С .join все понятно, соединяет cтроку из списка строк используя разделись, к которому применена. Интересуют параметры, которые принимает join - принимает он массив или список какой-то. В данном случае он принимает в качестве параметров выражение "w.capitalize() for w in string.split()", которое судя по всему создает список. Но почему я не могу написать "a = w.capitalize() for w in string.split()" в таком случае, чтобы у меня этот массив записался в а? Это какая-то особенность оператора join, что он может принимать какие-то выражения, или такие выражения можно писать только в качестве параметров функций?
>>1989733 вроде можешь так написать, если использовать лямбда функцию. Хотя я сам нуб в питоне но насколько я понимаю вместо отдельной функции ты можешь заюзать безымянную функцию. так делают при функциональном программировании. пусть меня поправят питонщики, если я не прав
>>1989733 >Интересуют параметры, которые принимает join - принимает он массив или список какой-то.
str.join принимает в качестве аргумента итерируемый объект (iterable). В частности, список (list) - iterable, но можно и генератор какой-нибудь.
>В данном случае он принимает в качестве параметров выражение "w.capitalize() for w in string.split()", которое судя по всему создает список.
Создается не список, а генератор.
>Но почему я не могу написать "a = w.capitalize() for w in string.split()" в таком случае, чтобы у меня этот массив записался в а
Можешь, только надо делать так: a = (w.capitalize() for w in string.split()), если нужет генератор, или так a = [w.capitalize() for w in string.split()], если нужен настоящий список.
Вообще, разумные вопросы задаешь, но тебе, кажется, надо почитать немножко основы про базовые модели данных в Питоне.
>>1989733 >выражение "w.capitalize() for w in string.split()", которое судя по всему создает список Оно ничего не создаёт, потому что ты его не обернул в [] (генератор списка) или в () (генераторное выражение) >почему я не могу написать "a = w.capitalize() for w in string.split()" в таком случае Потому что выше
>>1989728 Ну если ты до вката вообще не представляешь что такое программирование и базовые вещи то это на долго да, Я говорил про 1.5 месяца на синтаксис,задачи и ооп, всякое быстроизучаемое типо гита потыкать,остальное это уже да долгое изучение и практика. Ну и на твои перечисленные профессии надо учиться чтобы куда-то взяли, в разработке закинул резюме, прошел интервью
>>1990002 >Ну и на твои перечисленные профессии надо учиться чтобы куда-то взяли, в разработке закинул резюме, прошел интервью Интересно, если в резюме написать, что работал менеджером по продажам, по закупкам, организации туров и т.п., два месяца назад начал изучать программирование. Позовут на интервью?
Ты, конечно, скорее всего просто жирный тролль.
По факту, с нуля за год стать разработчиком невозможно. Вот невозможно, и всё.
>>1990048 Пиздец, ты чем читаешь? Где блять написанно что нужно пиздовать после двух месяцев работать? За 5-6 месяцев реально стать, у меня есть живые примеры. В итоге после дрочки 5 месячной ты знаешь язык+вебфреймворк+базу+хтмл/ксс+инструменты для разработки и у тебя уже есть проект простенький который просто покажет что ты не хуй какой-то.
>>1990065 >>1990002 > Ну если ты до вката вообще не представляешь что такое программирование и базовые вещи то это на долго да, На два года, да > Я говорил про 1.5 месяца на синтаксис,задачи и ооп А, ты имел ввиду свитчеров из другого языка? Ну я вот по работе сейчас частично свитчуюсь с питона на пхп, чтобы дописать кусок кода в сервисе. Думаю, как раз за месяц-полтора управлюсь. > всякое быстроизучаемое типо гита потыкать,остальное это уже да долгое изучение и практика. А то есть все-таки не про свитчеров с языка на язык? Тогда ты прос о нереальную хуйню несешь. С таким же успехом можно сказать, что в квантовой физике теоремы учишь за полтора месяца, а там дальше просто практика и все. Ну лет на 6 практики, ага. > Ну и на твои перечисленные профессии надо учиться чтобы куда-то взяли, в разработке закинул резюме, прошел интервью Как отличить вкатыша от человека, который работает. Вкатыш думает, что после прохождения собеседования работать не придется. Ну или придется, но это вообще не важно и всем похуй. Нет, тебя просто выкинут с испытательного и все. Напиздеть в резюме и без мыла пролезть реально и возможно. На неделю-две примерно. Стоит ли 10-15 тысяч за эти две недели того или нет – думаю, вопрос риторический
>>1990065 За 5 месяцев "выдрочить все фреймворки" нельзя. 5 месяцев на базовый синтаксис без ООП потратить — норм результат. То, что ты говоришь это лютая хуйня
Как вообще для вката jetbrains academy + leetcode + свой аналог двощей на джанге? Плюс ещё Кормена наебнуть и что-нибудь по проектированию рестухи. Из опыта в ит стажировочка по системной АНАЛитике и 3 курс вузика по прикладной информатике. Плюс пара хаков выигранных. Хватит такого чтобы каким-нибудь джуном пойти или ещё чего-то наебнуть?
>>1990658 Ты троллишь или что? Свитчеры с другого языка вообще только синтаксис смотрят и фишки языка, если ты пишешь на чем-то одном вкат в другой язык быстр и легок. Далее они просто фреймворк дрочат нужный. >Как отличить вкатыша от человека, который работает. Где я писал что дальше учиться не придется, я описал сколько времени для вката надо, сижу в конфе с 20 бэкендерами/фронтами(спб), у всех начало карьеры в основном 19-20 год, кого не спроси вкат 5-12 месяцев. Да и сам я дрочу по своему плану программу, по моим прикидкам там на 6 месяцев макс до работы >>1990659 пиздец, 5 месяцев на базовый синтаксис это необучамым дебилом надо быть, дети для егэ учат питон за неделю. Выдрочить нельзя, так я и не писал про это, но довести знания до состояния что возьмут на работу можно(читай ответ выше).
>>1990761 Бля эти фантазии вкатышей, мое почтение. Почаще повторяй это. Ну и про свитч с одного языка на другой за пару дней это пиздец ор. Надеюсь, ты заплатил за новый курс скиллбокса?
>>1991004 Сомневаюсь что ты вообще где-то работаешь,какие нахуй пару дней, где я такое написал? Если ты разраб и блять 1.5 месяца учишь синтаксис языка, то это умственная отсталость явная. Я уже прошел это, потратил столько сколько я писал, уже после месяца дроча по 4 часа в день я свободно использовал классы и у меня не вызывало трудностей использование декораторов, хоть пруф того что где-то работаешь, посмотрю хоть на разработчика который 5 месяцев изучает базовый синтаксис питона.
>>1991025 Какой базовый синтаксис, мудило? Где я об этом писал? Пиздос, сам чета придумал, сам в это поверил, сам теперь с этим спорить начал. За месяц, говоришь, уже ООП изучил с базовым синтаксисом? Ну сможешь в два ифа отсортировать три числа по возрастанию? А что такое self знаешь?
>>1991748 >Какой базовый синтаксис, мудило? Ты собрался синтаксис чтобы свичнуться 1.5 месяца учить лел, придумал также как ты придумываешь сроки "пара дней", "пару месяцев". Не могу сказать что ООП в полной мере овладел(мало практики в реальном проекте еще), но то что такое self это базовое знание.
>>1991920 > Ты собрался синтаксис чтобы свичнуться 1.5 месяца учить лел И где я такое говорил? Ты это буквально сам придумал. > Не могу сказать что ООП в полной мере овладел(мало практики в реальном проекте еще) Так ты и условиями не овладел, лол. > но то что такое self это базовое знание. Да? И что это? Пиздец, твое решение это просто ебаный позор. Еще и из гугла нагло спизженное. Я так могу и вообще без условий обойтись
>>1992556 >И где я такое говорил? Ты это буквально сам придумал. >>1990658>>1991004 >Так ты и условиями не овладел, лол. ога >Пиздец, твое решение это просто ебаный позор. Ты бы границы сначала поставил(очевидно что я знаю и о min/max, и о map), потом бы возникал, ты написал в 2 ифа, из 3 чисел, я написал как ты запросил, написал бы без ифов, решил бы без ифов. Решение не пиздил все задачи решаю сам.
Так что спок анальник, сначала изъясняйся понятнее, есть четкое условие, тем более если погуглить твое решение тоже есть, если бы гуглил спококойно бы взял его.
>>1992567 > >И где я такое говорил? Ты это буквально сам придумал. Ну так и где я там это написал? > Ты бы границы сначала поставил Если для тебя такие вещи не понятны, то соболезную. > очевидно что я знаю и о min/max, и о map И именно поэтому максимальное число ищешь не встроенной функцией? Расскажешь, ага > потом бы возникал, ты написал в 2 ифа, из 3 чисел, я написал как ты запросил, написал бы без ифов, решил бы без ифов. Решение не пиздил все задачи решаю сам. Конечно сам, твердо и четко. Так же, как ты про max знаешь. Только почему-то не используешь)))) > Так что спок анальник, сначала изъясняйся понятнее, есть четкое условие, тем более если погуглить твое решение тоже есть, если бы гуглил спококойно бы взял его. "Мое решение" это рофл по поводу "написал с двумя ифами". Ладно, чет твои попытки сманяврировать меня уже утомили
>>1992584 >Ну так и где я там это написал? например >А, ты имел ввиду свитчеров из другого языка? Ну я вот по работе сейчас частично свитчуюсь с питона на пхп, чтобы дописать кусок кода в сервисе. Думаю, как раз за месяц-полтора управлюсь.
>Если для тебя такие вещи не понятны, то соболезную. Понятны, но когда задача такого плана я привык к четкому условию, за месяц 10 дней я прорешал овер 200 задач взятых отовсюду, так что привычка осталась.
>Конечно сам, твердо и четко. Так же, как ты про max знаешь. Только почему-то не используешь)))) Не бывает людей которые пишут на питоне хотя бы день и не знают о ней, ты сам прекрасно это знаешь. Если ты только и можешь копировать чужой код, а простая математика для тебя обязательно спизженное решение, то мне тебя жаль, скорее всего ты сам то от вкатыша далеко не ушел. >Ладно, чет твои попытки сманяврировать меня уже утомили Утверждаешь что я не знаю встроенные функции потому что я их не использую, а маняврирую я?