Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: 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://ideone.com/lujiX5
>>1647702 (OP) Заценил нумбу на каком-то говне. Если передавать список в аргументы функции - выполняется за 2.9 секунды. Если список+нумба - 23 секунды. Если преобразовать список в numpy-массив - 10.9 секунды. Лол, вообще не понял как это работает и почему массив работает хуже списка. Если массив+нумба - 1.8 секунды. (А если ещё указать float64(int32[:,:],float64[:], int64) - то 0.75 секунды, видимо первая компиляция кушает)
На другом говне с крупными numpy-массивами (больше математики, меньше вложенных списков в аргументах функций и другого говна). Ванилька: 9.046 секунды Нумба: 0.831 секунды Нумба с указанием типов в функциях: 0.374 секунды Нумба с указанием типов в функциях и приведением кода к си-стилю: 0.064 секунды Это в 150 раз прирост. У меня есть этот же код на си строчка в строчку, и он работает в 300 раз быстрее питонного. Получается всего в два раза отставание от честно скомпилированного кода, это при том, что часть кода не компилируется. У луа похожий результат был, тоже отставание в два раза при jit-компиляции.
>Почитай обязательно про модуль numba Так что одобряю, теперь питоном почти можно пользоваться.
>>1647745 Написал функцию подсчёта простых чисел до N, умеренно оптимизированную.
Делаю два запуска, первый до 13, для компиляции, второй до основного числа, уже на время:
Если до 100 тысяч, то время на первый запуск / основной: ванилла 3.6, <1ms, 68ms pypy3, <1ms, 39ms numba (на 3.6) 242ms, 5ms
то есть очень долго компилирует, вся выгода улетает.
Если до 10 миллионов ванилла <1ms, 24.5 секунды pypy3 <1ms, 9.8 секунд numba 0.24 секунды, 1.7 секунд
Никаких numpy не использовалось, чисто питоновский код.
Процесс компиляции реально долгий, но я потестировал, судя по всему, это время тратится за загрузку машины-компилятора numba, а не на саму компиляцию кода. Если сделать несколько функций немного разных и их скомпилировать, то разницы во времени почти нет, те же 0.24 секунды на компиляцию всех функций.
Реальная альтернатива тому, чтобы писать внешние модули на Си для вычислительных задач. Ещё есть возможности для оптимизации дополнительные.
Минусы: больше только для вычислительных задач. Не поддерживает асинхронный код, не совместимо с pypy. Даже классы ограниченно поддерживает.
Но, питонисту про существования модуля знать обязательно, может иногда пригодиться.
>>1647777 >то есть очень долго компилирует, вся выгода улетает. Просто укажи типы и время компиляции становиться смешным.
По счастливой случайности я сейчас тоже балуюсь с простыми числами. Получение первых 10000 простых чисел (с сохранением в список - пробую делить новое число на цифры из списка): ваниль - 1.862, нумба - 0.653, нумба у сказанием типа (@njit(int64[:](int64))) - 0.014. 100000: ваниль - 47.004, нумба - 0.830, нумба с типами - 0.217 1000000: нумба - 5.758, нумба с типами - 4.880
>>1647797 У тебя есть строка response = request.get(current_address)
Это ты скачиваешь страницу. Для этого ты лезешь в интернет, это занимает какое-то время, чтобы там соединение установить, запрос отправить и т.п. Легко может получиться, что основное время именно здесь расходуется.
Попробуй посчитать, сколько времени уходит на каждый запрос.
JSON в норме очень быстро обрабатывается. По крайней мере через библиотеку json, про этот способ не скажу, надо смотреть.
>>1647799 Ну и не советовал бы с сайтов качать с большей скоростью, лучше наоборот, задержки встраивать. Иначе легко можешь попасть в чёрный список сайта, иногда отслеживают активность.
>>1647797 1. Поставишь асинхронку или даже многопроцессорность для скачки данных - получишь елдой банхаммером по голове за спам запросами. Это я уже проходил много раз 2. Ты общаешься с местным api? 3. Какого размера у тебя выходит json? Посмотри с помощью __sizeof__
Посоветуйте редактор кода. Из опробованного: вим - перебор Пайчармы - стойкая неприязнь ко всему, что делает джет брейнс. Всякое говно на электроне - ВС код и Атом. Сейчас пользуюсь ими, но постоянный баги ужасают, особенно то, что переключаясь на окно редактора из какого-то другого, и пытаясь провернуть колесико мышки - само окно проматывается в неизведанные дали. Видимо запоминаются движение колеса вне самого редактора и потом разом применяются. Спайдер - просто не понравился. Все неудобно, топорно, некрасиво, будто юпитер ноутбук вынесли в отдельный редактор. Посовейтуйте что-нибудь.
Как установить этот питон или че там надо, на комп(винда), типа я программку пишу оно мне считает, или окошко выводит с надписью или вопросом, как-то так.
>>1648059 Установить питон быстрее чем дождаться ответа на борде, кстати.
https://www.python.org/downloads/windows/ Ставишь, например 3.8.2 х64, запускаешь IDLE - открывается пикрелейтед (консоль). Всё, ты можешь писать код на питоне. Ещё можно нажать ctrl+n (чувствительно к языку раскладки, лол - на русской горячие клавиши не работают), вводить несколько команд сразу и запускать по f5. Или редактировать .py файл в любом блокноте и запускать как батник.
Есть массив и есть связный список... В питонухе, как я понял, массивов нет, есть только списки (list)? В массиве же доступ к любому конкретному элементу достигается за О(1), а вот в списке за О(n) кроме первого элемента - head, к нему канешн всегда О(1) Есть ли сторонняя либа с массивами?
>>1648164 MySQL таблица вида (ID, Text, Longtext, Datetime, Int, Int, Text, Datetime, Int, Json, Json) Пытаюсь выполнить запрос "INSERT INTO `table_name` (имена столбцов кроме ID) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s);" Но в итоге постоянно выдает ошибку pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sssaa'' AND date=''2020-04-01 16:30:52''' at line 1") Окей, почитал, что для даты-времени нужно использовать не просто %s, а '%s', обернул оба столбца с даой-временем таким образом. Все равно получаю хуйню pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2020-04-01 16:34:31'', 6, 44, NULL, ''2020-04-01 16:34:31'', NULL, '{}', NULL)' at line 1") Вот что блядь не так? Я с этой хуйней уже часа 4 сижу, разобраться не могу
>>1648180 >с массивами? numpy? >в списке за О(n) Уверен насчёт этого? Откуда ты это взял? Я очень-очень сомневаюсь, что в петухоне доступ к элементу за О(n). Не интересовался как это внутри устроено, если бы я на крестах делал список, который может содержать произвольные типы - то я бы хранил это в виде массива (или дека, нужно проверять что будет лучше в общем случае) из пар (тип,указатель_на_данные). Там будет доступ за O(1), а всякие сортировки будут перемещать маленькую структуру с указателем, вместо реальных объектов.
>>1648188 >>1648180 Палка на двух концах. Можно каждому элементу внутри List присвоить поле index - integer значение, которое показывает его порядковый номер в списке, тогда доступ по этому индексу будет за О(1), но вот незадача, при вставке/удалении, придется инкрементировать или декрементировать соответствующие индексы... И трудоемкость возрастает до О(n). Можно забить хуй на индексы и двигаться от head, в таком случае при удалении/вставке надо лишь переназначить смежные ссылки, но вот доступ к элементу уже будет за O(n) Тут тебя выебут либо в рот, либо в жопу, задача программа лишь выбрать одну из двух дырок, расслабиться и наслаждаться процессом
>>1647898 API у них только для бизнеса, к сожалению. С __sizeof__ странная штука получается: если применять его к переменной с json'ом в консоли, показывает 216 байт, а если сохранить этот самый json в текстовый файл, получается 67 килобайт. sys.getsizeof при этом возвращает 232 байта.
>>1647927 Спрофилировал: больше всего времени уходит на вот эти штуки, получается.
>>1648193 >>1648194 Ааа, выходит что в Питонухе как раз доступ к элементу за О(1) а вот вставка/удаление трудоемка есть классические связные списки с вставкой за О(1)? друг просит
>>1648195 Может быть, такое поведение и нормально, если учитывать, что эти товары могут быть распиханы на 30 страниц? При этом на каждой странице по 30 товаров, и у каждого нужно взять цену в этом огромном json'е.
>>1648195 Вот значит у тебя вся задержка из-за сети, долго данные читаются, здесь надо разбираться почему.
Сто лет на request не смотрел, ничего не скажу. Возможно там надо как-то сначала целиком данные скачать, каким-нибудь одним запросом, а потом скормить его json. ХЗ. А может просто сервис медленно данные отдаёт.
На самом деле если ты говоришь 67 килобайт, и это за полсекунды, то это мегабит в канале. Это не так мало, ты же не один может эти данные запрашиваешь.
>>1648215 Мне кажется, тут скорее всего не та вещь, которую тебе нужно оптимизировать. Это ведь вопрос сети, а не твоего кода. Если ты будешь слишком агрессивно качать, рискуешь попасть в чёрный список. Это, конечно, от сервиса зависит. Не факт, то им жалко, и не факт, что обнаружат.
>>1648224 Угу, не удивительно. Замени рандом на c%1024, если хочешь. Это не важно, рандом O(1) жрёт. O(30)==O(1). Если бы доступ был за линейное, то х20 размер массива дал бы вклад несмотря на тяжёлый рандом.
>>1648209 >>1648211 >>1648215 >>1648221 >>1648223 Спасибо за ответы. Приделал requests.Session - максимум на ~2 секунды сократилось время исполнения. Насколько понимаю, это либо на сервере у них стоит какое-то ограничение, либо что-то у меня с интернетом тогда.
>>1648234 >>1648237 По профилю тут >>1648195 видно, что основное время тратится на метод _read SSL сокета, а не на установление соединения.
Мне не понятно, почему этот метод, и некоторые другие, отвечающие за соединение (set_cypther и другие), вызываются 82 раза. Такое ощущение, что реально 82 соединения устанавливается, а не 20, как анон говорил.
150 миллисекунд на соединение и 67 килобайт данных это вообще прилично.
>>1648147 И какого хуя запрос "INSERT INTO table (name, date_created, logo) VALUES (%s, %s, %s)" При параметрах (name, datetime, '') Вместо пустой строки в последнем параметре вставляет ебучий апостроф в таблицу? У меня конечно мозг совсем от ORM размяк, но какого хуя оно не вставляет пустую строку как сказано?
Сап. С чего начать разработку бота для телеграма? Посоветуйте что посмотреть/почитать на эту тему. Программировать хочу на питоне, не особо понимаю как подключить бота к среде разработки pycharms и синхронизировать код с ботом
>>1648429 Но на те же datetime, когда вставляешь отформатированной строкой, я так понял надо делать именно с кавычками. А насчет >>1648250 можешь подсказать? 3й параметр - пустая строка, через DataGrip я спокойно вставляю пустую строку, а тут оно хуярит 1 кавычку как бы я не делал: оставлял параметром, переносил эти кавычки в VALUES
>>1648381 Бля, брат, ты совсем тупой? Я понимаю, что это питон и он мозги размягчает, но что ты хочешь от питона? Ты в одну и ту же переменную весь цикл пихаешь разные значения. А потом вопишь, что питон тебе говна в жопу залил, ведь в это переменной теперь не тысяча значений, а ровно одно последнее.
А теперь я напишу свою охуенную историю. В прошлом треде я уже писал, что не мог разобраться с импортами. Теперь я вроде как разобрался и хочу, чтобы мне кто-то сказал правильно ли я понял или нет. Есть следующая файловая структура, на которой я тестил свою хуйню жирный шрифт -- папки, курсив -- файлы
Я хочу из FileA импортнуть функцию look из FileB. Если в FileA написать import Folder2.FileB, то будет такая ошибка No module named 'Folder2'. Если импортить относительно, а именно вот так from .Folder2.FileB import look, то будет ошибка attempted relative import with no known parent package. При том, если в main импортить файлА и файлВ, то импорты будут работать заебись в любом из вариантов. И вот в чем вопрос, правильно ли я понимаю, что питон вообще не может импортить пакеты или файлы из директорий, который находятся выше, чем главный запускаемый скрипт?
Есть годные курсы по пректическому программированию на питоне? Лекции и книги - это хорошо, но мне больше подходят курсы, т.к. легче прогресс отслеживать, и интерактив есть. рус/англ - всё равно, но думаю на ангельском будет больше материала. Также не хотелось бы опять скипать кучу новичковских знаний, по типу "что такое циклы/условия/типизация/етс. У лутца есть книга, но она уже старая, и может не затрагивать более новых фич
Еще один тупой вопрос по запросам Запрос: SELECT * FROM `users` WHERE login IN (%s); Данные: ['abc'] Ошибка: pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'abc''' at line 1") Какого хуя ему блять от меня надо? Я передал строку для выборки из колонки с типом TEXT, а оно меня нахуй шлет
>>1648695 >You have an error in your SQL syntax Если тебе говорят об ошибке синтаксиса, значит ты клован, который не знает синтаксис (не важно чего: питонуха, sql или лиспа). Прими это как данность
>>1648699 Я бы принял это как должность, если бы тот же запрос, но с вручную подставленными данными SELECT * FROM `users` WHERE login IN ('abc'); не выполнялся успешно без каких-либо ошибок
>>1648685 > Файлы __init__ то надеюсь замутил? С питухона 3.3+ версий инит не нужон, держу в курсе. > Ты в PATH пути добавил? Уже бегу говнякать глобальную переменную своей машины, ага. Не, брат, я эту тему глубоко копал, так как, во-первых, каждый раз, когда я делаю пет проект добавлять по 100-150 строк в пас то абсурд, во-вторых, это занимает миллиарды строк и я в рот ебал такие приколы. Про иниты я не до конца понимаю что в них нужно писать, но добавлять пустой инит ради того, чтобы питухон воспринимал папку как пакет не нужно уже как года два.
>>1648678 >И вот в чем вопрос, правильно ли я понимаю, что питон вообще не может импортить пакеты или файлы из директорий, который находятся выше, чем главный запускаемый скрипт? Да, именно так. Всё остальное - обходные решения.
Я думаю это сделано специально, потому что такие схемы импорта очень грязны сами по себе. Это грязная архитектура. Не должно быть таких зависимостей сложных и неочевидных. У тебя или должен быть дочерний модуль, в подкаталоге, или глобальный, прописанный в твоём окружении, например.
Пытаюсь из вашего говна перекатится в ноду, чувствую сильные беды с башкой от стрелочных функций, промисов, асинхрощины во все поля и кучи других приколов. Всё-таки от простоты пистона со временем деградируешь, не советую его учить как самый первый яп.
>>1647702 (OP) Как мне понять и почувствовать ООП? Не могу разбираться в логике всякого кода нормальных людей, когда думаю сам о архитектуре, то от ооп в голову приходит только делать простейшие классы и получать профит только от простейшей инкапсуляции. А в нормальном коде даже у простых задач вообще всё через ооп работает. А ведь там дальше ещё паттерны всякие, и сложный нагруженный код. В общем, помогите как-то влиться во всё это, только я книжки из-за сдвг не могу читать, мне лучше курсы какие-нибудь.
Привет, анон, я мимовкатывальщик 20 лвл, как ты думаешь, стоит пытаться вкатиться зная английский на достаточно слабом уровне?(могу связать пару слов и понять 60% того, что мне говорят) Есть ли смысл пробираться сквозь тернии к звездам держа в зубах переводчик? Или, может, есть актуальная русскоязычная литература, которая поможет создать фундамент для моего вкатывания? Спасибо
У меня вопрос. Вот я осилил учебник по питону, смотрю на скрипт, понимаю как он работает, как что и с чем связано. Но когда дело доходит до написание своей программы, даже самой простой, в голове появляется обезьянка и стучит в тарелки. Такое ощущение, словно мозг напрочь не может вспомнить нихуя, либо путается в строках и выходит быдлокод. При этом если берешь чужой похожий код, то можешь нормально его корректировать под себя. Как с этим бороться?
>>1649061 Технический англиский несложный. Алсо, нет такого, что вот охуенная литература или курс и ты всё поймешь, а остальная вообще ни о чем. В целом они перессказывают одно и то же, кроме всяких практических кукбуков. Достаточно литературы по бидону 3+, т.е. примерно десятилетней давности. Новыми фичами можно догнаться позже, если до этого вообще дойдет дело.
>>1649239 Думаю, практически повторяет книгу. В принципе, я нахожу видеокурсы более продуктивным для хуя-прокрастинатора, легче удерживать внимание, чем читая пдфку. Потом можно уже углублятся в детали, почитывая документацию.
>>1649133 Делай сам просто много простых задачек, похожих, по несколько раз. Чтобы вот ты себя в таких задачках свободно чувствовал. Вот такие, на несколько строк, на один-два экрана максимум, от твоего уровня зависит.
При этом ОБЯЗАТЕЛЬНО возьми за правило писать их с нуля, не пользуясь своими старыми решениями, не только копи-паст не надо делать, но и даже заглядывать в них.
Это всегда работает, довольно быстро и эффективно. Когда какие-нибудь новые технологии осваиваешь, тоже очень полезно.
Время еще одного тупого вопроса по работе с БД, как правильно написать выполнение нескольких запросов с транзакцией? Что-то типа такого? https://pastebin.com/P63DBenC
До меня походу дошло, почему здесь так любят перл-стайл однострочники вместо вынесения кода в функции. Потому что иначе будет как в джаве с размазыванием логики.
Анон, я хочу написать крестики нолики, но мне не совсем понятен модуль tkinter. Почему там нельзя задавать произвольное положение кнопки? В общем, хочу пойти сложным путем, холст, рисование матрицы 3х3, обработка щелчка мыши на клетке, проверка, куда кликнул по координатам относительно окна. Как рисовать, какой модуль юзать для холста?
>>1649470 Потому что я скачал дизайнер, чтоб расположить кнопки как матрицу и сука не смог их передвинуть. Согласен, это тупо, что в таком модуле нельзя было бы изменить положение, но все же. Может дизайнер есть более нормальный?
>>1649472 > дизайнер Ну и смысл тогда идти "сложным путём"? Гуй на питоне пишут редко, соответственно, предложение инструментов для этого куда меньше, а те, что есть, сосут в сравнении с тем же Qt Designer.
>>1649484 Так. Тогда какой гуй выбрать? кьюТи? Я хочу написать ебаный тетрис, крестики нолики, еще какую-нибудь хуету. На паскале писал, там есть событие онМаусМув, и в нем я считал, на какую ячейку наведена мышь для клика. Ну и так же можно привязать на стрелки переключение фокуса активной ячейки. Вот тут тоже хочу повторить. Вообще хочется сделать полноценный вариант тетриса
>>1649493 Это всё можно сделать на ткинтере, и здесь тоже есть аналогичные эвенты. Вопрос в том, обязательно ли тебе нужен дизайнер для такой сравнительно простой задачи. Крестики-нолики и тетрис - это далеко не 3д макс или фотошоп по сложности, чтобы здесь был нужен дизайнер.
Блять, анон, я что, не могу менять значение переменной внутри функции? Объявил переменную в начале кода со значением "Х" Использую ее в функции. Из этой же функции пытаюсь переопределить ее значение, так как это как бы глобальная переменная, не?, получаю ошибку local variable referenced before assignment
>>1648816 а, наверное у тебя сломалось из-за того, что там от прошлого солюшна вставляет код, добавляя его к новой заготовке. просто почисти от всего кроме функции (можешь тесты удалить тоже, они чисто для тебя, чтоб локально проверять)
>>1649613 >>1649615 Та же хуйня. Я уже и сам метода три разных придумал, лол. Перезагрузка не помогает, попробую сейчас перелогиниться и почистить всякие печеньки-файлы.
ну бля, ну по размеру балдюшка на полосе прокрутки видно, что там у тебя внизу приклеилась целая простыня левого кода, не? явно не 2-3 строчки ассертов
>>1649630 да, там есть такие "серии" задач, когда твое старое решение может пригодиться, и движок чекио объединяет заготовочный файл с тем, что у тебя там раньше было. не очень продуманно, но, думаю, второй раз на эти грабли уже не наступишь
Думал, с чего начать питон изучать. Решил, что я дно полное и начал с "Jason R. Briggs — Python для детей (2017)". К середине книги автор начал допускать ошибки в коде охуел от того, что их исправлять приходилось, а потом его подача превратилась в сплошной матан без нормального объяснения, что за хуйня в коде происходит. Сделал ебучий пинг-понг, охуел с пиздецомы задач в качестве домашки. Еле как сделал 3 штуки, осталась последняя задача: "#4. Счет в игре А не добавить ли в игру подсчет очков? Каждый раз, когда мяч отскаки- вает от ракетки, счет должен расти. Сделайте так, чтобы набранные очки отображались в правом верхнем углу игрового экрана. Здесь вам приго- дится функция itemconfi g (см. раздел «Для чего еще нужен идентифи- катор» на стр. 186)."
Я в душе не ебу, что я делаю не так, я раз 8 переписывал код в попытках через "hit_paddle == True" заставить считать отскоки. Я не понял, я совсем дно ебаное или просто автор мудак? Помогите с кодом, пожалуйста, нихуя же не понятно. https://ideone.com/7KAorW
скорее, мудак автор, если вывалил кучу гуёвого кода без понятных объяснений
первый этап: сначала создаешь переменную в ините (self.hits = 0) где детектируется хит, увеличивай её (self.hits += 1) далее можешь принтить в консоль и убедиться, что всё работает сурс: https://ideone.com/pzxn7I
в том же ините создаем канвас: self.hit_counter = canvas.create_text((50, 50), text=0) там, где детектируется хит, вызываем метод для изменения текста: canvas.itemconfig(self.hit_counter, text=self.hit_count) можно еще по желанию облагородить какими-нибудь строками сурс: https://ideone.com/geoBTc
На сайте MIT лежит конспект очень хорошего курса "Математика для компьютерных наук. Наблюдал кто-нибудь его перевод или что то примерно такое на русском языке? https://courses.csail.mit.edu/6.042/spring17/mcs.pdf Заранее спасибо за ответы P.S Ненавижу "Конкретную математику"
>>1649725 >первый этап: сначала создаешь переменную в ините (self.hits = 0) где детектируется хит, увеличивай её (self.hits += 1) далее можешь принтить в консоль и убедиться, что всё работает
Вот это я и делал, собственно и оно не работало. Но спасибо, перечитаю
>>1649725 Посмотрел твой код, теперь я понял, что шел примерно в верном направлении. Просто я пытался строки
self.hit_counter = canvas.create_text((50, 50), text='Лох') text = f'Есть отбитие №{self.hit_count}' # text = 'Есть отбитие №%d' % self.hit_count canvas.itemconfig(self.hit_counter, text=text) вынести за пределы функции в самый низ, как завещал автор и сталкивался с тем, что не засчитывались очки. Ты сделал все намного проще. Я теперь хоть понял, что я Лошара, спасибо, хых.
В Джанго когда именно работает middleware? Я знаю что оно включается дважды во время обработки запроса. Первый раз - перед тем как request передастся во view или после? А второй - после рендеринга template или перед?
Ньюфаг на связи. Уже несколько раз слышал что питон медленный. но не ясно где эта медленность проявляется и какой гемор она приносит. Как в реальном мире мешает скорость питона? Можно живых примеров?
"говорят, экскаватор меденно ездит, и ни одну гонку формулы 1 не выиграет, это правда?" с одной стороны - чистая правда, с другой - у экскаватора нет задач выигрывать гонки. понятно, что у новичка, который ещё не определился, что ему в будущем захочется - строить дома или в гонках участвовать, такие вопросы всегда будут возникать
там, где нужна скорость вычислений, и индустрия развита, написано дохуя низкоуровневых либ: numpy, tensorflow, etc. там, где нужна скорость вычислений, но интерес публики слишком мал, денег нет, либ нет, жизни нет, питон просто не используется - нет коммерческих рейтрейс-рендеров на питоне, нет почти игровых ЙОБА движков с пбр-графонием, с 3д графикой ситуация пососная короче, где этот язык неуместен, он не используется, и поэтому задач не возникнет (говоря простым языком: >НИНУЖНА)
в остальном скорость исполнения не является ключевым вопросом. большинство типовых программ на питоне выполнится достаточно быстро, чтобы никого не ебало, сколько там миллисекунд это заняло. при этом существенно проще синтаксис и проще разработка. в результате большая экономия человеческого времени, меньше багов, меньше отладки, выше читаемость
Сап! Хочу в IT, начал изучать пистон, но вот думаю, намного быстрей научусь, если кто-то уже знающий будет учить, кто-нибудь посоветует курсы аля скилбокс (слишком поверхностно они учат, за оверпрайс) или гикбрейн, или что-то подобное, может какие-то сайты со сливами подобных курсов
В основном тебе производительность не актуальна, тебе надо решить задачу, а не заставить комп расходовать 0.1% вычислительных ресурсов на неё вместо 1%.
Чаще больше мифы и какие-то цифры на синтетических тестах. Про какие задачи конкретно ты говоришь?
Питон, впрочем, в первую очередь про задачи со сложной логикой, он на это заточен, а не на числодробилку и супер хайлоад.
Бляяяяяя две недели жестко чилил, а теперь кажется будто вообще не учил. Тупо все ООП забыл, хотя до этого на изичах все задания по кд решал. Сеймы есть?
Сейчас смотрю как чувак пилит на Джанге свою веб-корзину и вижу что он часто юзает херню вроде: Product.objects.filter().first(id=pk) (как на пикриле), кто-то в курсе почему он не юзает обычный вызов Product.objects.get(id=pk), а ставит ссаное first? Типо "так круче" или что это вообще?
Итак, вот скажите как есть. Вам с джангой тяжело было разбираться? Смотрю видео, листаю документацию и порой охуеваю от количества последовательностей, которые необходимо выполнить. Может нужна какая-то дополнительная база, чтобы информация более легче переваривалась?
>>1651425 Джанго это максимально удобный и медленный фреймворк, на реальных проектах будет какой нибудь форк асинхронного фреймворка и низкоуровневый апи к базе. Вот там ты и охуеешь.
>>1651425 Нет, просто Джанго хуета. Там изначально был допущен ряд конструктивных решений, который в общем-то предопределило его судьбу. Короче, пайтон и веб - это такое себе.
Ебать сколько книг. И в каком порядке это все читать, чтоб дойти до нейросетей? Литература ужасно несистематизированна, непонятно где для вкатывающихся, где для отбитых гуманитариев, а где для понимающих.
>>1651425 Очень стройный и хороший движок, с одной проблемой, архитектурно он синхронный, все решения заточены под запрос-ответ.
Встроена масса возможностей, при этом ими не обязательно пользоваться, если они не нужны, от них можно отказаться. Встроенные решения несложно заменить на альтернативные. Далеко не везде так.
Может тебе действительно какой-то базы не хватает, чтобы освоить, что зачем нужно и почему сделано так.
>>1651449 Работает, но спроектирован местами немного убого. Чего вебсокеты стоят, куда более кривые, чем вебсокеты обычные, не из aiohttp. И возможностей из коробки мало.
>>1651262 Ты еблан, твой обычный вызов возвращает объект запроса в орм. First() возвращает первый объект соответствующий запросу. All() вернёт все варианты. Дно ебаное
>>1651262 Блять ты знаешь как пишутся sql запросы? Так вот, тут ты можешь делать выборку элементов, в ней делать опять выборку и т.д.. Только ормка защитит тебя от багов, скл инъекций и десериализации
>>1648937 ++ Такой же опыт, когда пытаешься "понять" паттерны проектирования, в итоге ния не понимаешь. Я себя доводил даже до ощущения что схожу с ума. В общем лучше всего, думаю, ознакомится с теорией основных 5-7 паттернов (погуглить, есть сайтик с подробной инфой и примерами для пайтона), почитать про них в вики, тоже разобрать примеры (но не тратить на каждый больше 5-10 минут, лучше забить на такие) и попробовать, не особо увлекаясь почитать примеры на других языках, яваскрипт,или ява. Ну и потом изучить какой-нибудь лёгкий фреймворк, типа aiogram, scrapy, или небольшие рест при какие-нибудь, написать пару проектов, заюзав как можно больше функций и потом почитать исходники фреймворка, осознать паттерны в исходниках, осознать говно в твоём коде и наконец написать ещё один проект. Поздравляю, теперь ты понимаешь ООП чуточку лучше.
>>1651493 Прикол в том, что ты не должен смотреть как это сделать, ты должен узнать столько, чтобы самому знать ответ на этот вопрос. Так обучение происходит намного быстрее и качественнее.
>>1651493 Надо совмещать, и самому писать, и читать.
Если ты будешь только сам писать, ты в пионерство ударишься, в клепание велосипедов, не будешь знать многих паттернов и подходов, решений, которые активно используются. И вообще, не разовьёшь важный и нужный навык, разбираться в чужом коде.
>>1651582 malenki_pisya = OCHE_BOLSHA_PISYA for stroka in stroki: ....if chetni_stroka: ........continue ....for element in elementi: ........if chetni_stolbets: ............continue ........if element < malenki_pisya: ............malenki_pisya = element
>>1651582 m = [[], [], []] - список списков, типа двумерный массив subarray = []
for row_num, row in enumerate(m): ____if row_num in S1: ________for col_num, x in enumerate(row): ____________if col_num in S2 and x % 2 == 0: ________________subarray.append(x)
>>1651600 Короче, обходишь циклом. Что тебе нужно знать: enumerate(m) встроенная функция питона, которая возвращает пару номер элемента и сам элемент проверяешь, входит ли нужный элемент в множество, если да, используешь его.
Всё остальное совсем тривиально, ты должен сам это знать и уметь.
Да, вопрос не по теме треда, но что проще для вкатыша - вью или реакт? Чтобы вот просто взять и начать верстать с гуглом минимальными знаниями js/html/css Условно нужно прикрутить адекватный вротенд к новостному парсеру, а пользоваться встроенным шаблонизатором фласка как-то уже стремно; хочется полноценное приложение для гитхаба
Есть тут pygame-шизики? Малой в школу ходит, и тут приходит, и говорит: КАК ЭТО НАРИСОВАТЬ? Сука, а я тожеж никогда не любил чертить или рисовать на ЯП. Как вспомню, как в шараге на ебучем турбопаскале всякие домики рисовали... Короче, збахайте, плес. С меня тонны нефти. Соре за шакальное качество
В чем разница между pip install и pip3 install? У меня на винде 3й Питон (3.8 и 3.7), всегда писал pip install и все было норм. Установил на еще один комп Убунту, там терминал почем-то отказывался понимать команду pip и требовал только pip3. Почему так?
Можно ли как-то в networkx или еще где пары ребер графа в таком виде представлять? Ну тупа сначала если как на пикче 4 полоски высрать, и по ним уже строить остальное?
Какая мотивация выпиливать функционал символа '-' из строки форматирования в f-строках? Я сначала подумал, что в питоне вовсе отказались от этого и поддерживается только в си — но нет, через % работает, через f-строку - не работает.
>>1652018 В первом случае ф-строка отрабатывает без результатов, и потом отрабатывает %. Во втором случае ты ломаешь ф-строку синтаксисом, который она не понимает. Всё логично.
>>1652028 В первом случае там не ф-строка, я просто f забыл удалить. >который она не понимает. Почему не понимает? Я вот как раз про это спрашивал. Разве ф-строка не подразумевается как синтаксический сахар для форматирования через %? Нашёл, что можно написать f"{23: >6d} {34: <6d} {'ab': >6s} {'ba': <6s}", кстати.
>>1651818 Хуйня "явное лучше чем неявное" никакого отношения к этому не имеет. На линуксах долгое время был и есть второй питон. И тысячи скриптов, которые никто не хочет переписывать, вызывали его именно через python и pip. При миграции на третью версию понадобилось одновременно держать две версии питона. Чтобы не сломать старые скрипты, второй питон называют просто питоном, а чтобы юзать третий, нужно добавить 3. Это не проблема именно питона, она общая для всего линукса все эти убогие "2", ".so.2", "-ng" не от хорошей жизни появились. А идея изначально хорошей казалась - не тащить десяток копий одной либы для разных прог. Теперь же это всех настолько заебало, что придумывают даже уже не в снап, а в докер-образы оборачивать каждую утилиту. Так и живём.
>>1647702 (OP) Сап, петонач. Каков порог вхождения, тяжело ли даётся писать веб-говно — нужно ли оно, если есть желание стать жуниор-питонистом? Опишите петон тремя словами.
>>1652249 порог вхождения в питон довольно низкий, но если совсем новичок, то лучше поизучать алгоритмы и всякое разное, используя какие-нибудь Си. Веб-говно, если ты имеешь в виду бекенды, то пишется отлично, это одно из частых применений питона. "нужно ли оно" хуй знает что ты тут хотел сказать Описал тебя двумя словами двачер калоед
>>1652059 Да не, тут по-моему извечная борьба интеграции и разбиения.
Можно каждый ls выделить в отдельный микросервис, но ему надо взаимодействовать с внешним миром всё равно. Вот сейчас его помещают в его маленький уютный мирок в зафиксированном намертво окружении, но потом окажется, что с внешним миром он взаимодействует через API, а API, сюрприз, тоже может меняться в зависимости от версии. А внутри окружения могут быть какие-то модули с критическими уязвимостями. И так вернёмся к тому, с чего начинали.
Примерно как динамическую линковку делали для того, чтобы избежать дублирования и чтобы можно было независимо править баги в библиотеках. Но в итоге начался гемор с совместимостью версий.
>>1652042 Даже внутри третьего питона не всё так очевидно. Его постоянно дорабатывают, появляются новые фичи, а некоторые старые объявляются как depricated. И вот ты пишешь софт, используешь фичу, а ещё потом объявляют > Deprecated since version 3.7, will be removed in version 3.9 (особый лес такого с 3.10)
То есть у тебя даже при вызове python3 нет гарантии, что код всегда работать будет.
кто объяснит почему вывод Calling method on Base Class Calling method on Right Subclass Calling method on Left Subclass Calling method on Subclass [Finished in 0.1s]
>>1652379 Эх, помню как на работе, недо-ждун с пеной у рта мне доказывал что "а чо тут такова, один раз жи, всё норм будет", после того как заменил логику без глобала на глобал. Получилось выиграть аж 2 строчки кода.
Результат такой Calling method on Base Class Calling method on Right Subclass Calling method on Left Subclass Calling method on SubClass [Finished in 0.1s]
Получается, что SubClass.call_me() всегда вызывает указанный метод у всех суперклассов (при его наличии)? А как же правило лишь о первом найденном совпадении? Разве SubClass.call_me() не должен вызвать лишь первый найденный у своих суперклассов метод, считая слева направо (здесь: LeftSubClass)
16 SubClass.call_me() 17 SubClass.super().call_me() # вызывает call_me() первого слева суперкласса LestSubClass 6 LeftSubClass.call_me() # тут странность: на строке 7 вызывается не сall_me() суперкласса # LeftSubClass - BaseClass, а RightSubClass.call_me() 7 LeftSubClass.super().call_me() # вызван RightSubClass.call_me() 11 RightSubClass.call_me() # RightSubClass вызывает сall_me() у BaseClass 12 BaseClass.call_me() # print("Calling method on Base Class") # тут начались странности: # print("Calling method on Right Subclass") # print("Calling method on Left Subclass") # print("Calling method on SubClass") Получается, что на строке 7 вызывается не сall_me() суперкласса LeftSubClass (BaseClass), а RightSubClass.call_me(). Почему так? И почему такой порядок принтов?
вот что написано в книжке: First call_me of Subclass calls super().call_me() , which happens to refer to LeftSubclass.call_me(). LeftSubclass.call_me() then calls super().call_me(), but in this case, super() is referring to RightSubclass.call_me(). Pay particular attention to this; the super call is not calling the method on the superclass of LeftSubclass (which is BaseClass), it is calling RightSubclass, even though it is not a parent of LeftSubclass! This is the next method, not the parent method. RightSubclass then calls BaseClass and the super calls have ensured each method in the class hierarchy is executed once.
Кто понмиает\знает, почему тут: 1. "the super call is not calling the method on the superclass of LeftSubclass (which is BaseClass), it is calling RightSubclass, even though it is not a parent of LeftSubclass!"? 2. почему "LeftSubclass.call_me() then calls super().call_me(), but in this case, super() is referring to RightSubclass.call_me()"? 3. что такое "the next method"?
>>1652694 Можно попробовать написать свой декоратор, который будет проверять, что тип параметра не является текущим классом (каким-нибудь inspect.isclass). Ну и кидать какой-нибудь TypeError.
Есть лист со словарями вида list = [{'a':'foo', 'b':'bar', 'c':1}, {'a':'foo', 'b':'bar', 'c':2}, {'a':'foo', 'b':'bar', 'c':3}, {'a':'hui', 'b':'pizda', 'c':1}, {'a':'hui', 'b':'pizda', 'c':2} Как эту хуйню лучше всего свернуть, чтобы вместо словарей с постоянно повторяющимися ключами был 1 словарь, а ключи "с", которые от словаря к словарю разные - склеить в лист?
Аноны, всем доброго вечера. Пытаюсь разобраться с вот этим https://github.com/vanyasem/VK-Scraper парсером, не зная основ. Что сделал? Установил необходимые requests, tqdm, vk_api, youtube_dl Зашёл в idle , запустил, почитал ошибки В папке vk_scraper создал vk_args.txt и вписал туда логпасс от своего фейка Айди пациента вписал в сам app.py в 49 строке И снова соснул с ошибками на строки 496 и 472 https://github.com/vanyasem/VK-Scraper/blob/master/vk_scraper/app.py Анон, подскажи позязя В какие строки в итоге вписывать свой айди и пасс, а в какую - айди владельца альбомов с фото? И как правильно прописать destination для винды?
>>1647702 (OP) Переставил себе ось, все почитил, июо чувствовал себя за ПК как ОКРщик, быдто даже дышал этой пылью. Ну и соотвественно проебал кряк пичарма ну не плотить же, так вот, помогите с кряком ибо где его искать, один бог знает, а как мы знаем, он уже умер и убили его мы. С меня как обычно человеческое спасибо
Допустим, мне нужно найти "near" в тексте. При использовании count("near") также засчитает все производные слова - nearly и прочее. Как без регулярок решить эту проблему? в голову приходят только колхозные варианты - добавить пробел в конец поискового паттерна но тогда слова в конце строк считать не будет
Доставьте гайд по асинхрощине вообще прям для самых конченных даунов если таковой вообще существует Хочу переписать парсер с обычных реквестов с пул экзекутером под aiohttp и посмотреть как оно ваще. Но пока тупо не понимаю че за корутины, как они друг с другом взаимодействуют и почему это работает так быстро даже с наличием GIL'а
>>1653584 Асинхронщина работает просто - ты запускаешь какое-то действие и коллбек для него, который надо выполнить, когда оно отработает. В хттп реквесте 99% времени это ожидание данных, так что можно ждать много ответов одновременно. Вот и всё.
обрати внимание на использование input - там должен быть .split, так как на вход ты пишешь строку и функция input возвратит тебе строку (а не 3 элемента)
а также отступов нет - программа даже визуально красивее смотрится когда есть отступы
двоеточий нет после if-else-elif - в пайтоне это надо делать
желательно a==b и тд ставить в () - так будет красивее
>>1653665 Немного трогал голый питон, по работе пишу на нем всякие простенькие скрипты для аналитики, также по работе делаю несложные запросы к бд на sql-диалекте яндекса (дома трогал постгрес, MS SQL Server, но в целом одно и то же). А так опыта программирования нет, я ПМ.
Бля, хуле это мудло пишет мне при попытках обновить/установить пакеты в виртуальной среде:
Could not install packages due to an EnvironmentError: [WinError 5] Отказано в доступе: 'c:\\program files\\python38\\lib\\site-packages\\pip-19.2.3.dist-info\\entry_points.txt'
Но у меня-то не 3.8 в venv стоит, а 3.7! Какого хуя вообще происходит? Откуда оно там взялось блять?
>>1653725 А схуя ли у тебя питон в програм файлс? Вот и нет прав туда писать. Ищи в программах и удаляй. И path надо будет подправить, там должно быть.
Это рофлы такие? Почему дебагинг мне говорит об ошибке на нулевой (!) строке моего основного шаблона? Очевидно что он крашнулся не на нулевой строке этой template (я даже примерно догадываюсь где), вопрос в том, почему он мне пишет об этом?.. ну это ж 3я версия джанги блин, ну как такой уебищный дебаг вообще возможен?
Сап, ананасы! Помогите неофиту. Допустим, есть строка с предложением без знаков препинания. Какими способами можно расставить в нём запятые по заданной грамматике? Первое, что пришло в голову, это сделать список слов и предлогов, чтоб в цикле искать по ним подстроки и подставлять запятые по индексам, но мне кажется, что существует подход получше.
>>1653825 Невозможно. Почему предложение без знаков препинания читать сложно? Потому что способов их расставить много, и от них сильно меняется смысл. И читающему приходится догадываться о смысле по контексту. Самый реалистичный вариант - машинное обучение. Там, может, что-то да получится.
>>1653828 Это и так понятно, я и не ставлю целью воспроизвести синтаксис целиком, только отдельные правила вроде "..., a ...", "например, ...", "... потому, что ..." и так далее. Мой вопрос был только в способе поиска и подстановки таких паттернов в строке.
>>1653832 >не ебаться с экспешенами То есть вместо того чтоб адекватно получить эксепшн и обработать его, мы условно ставим self.value = None? Совет на все времена нет Осталось только из каждой функции None возвращать, когда получаем непредвиденное значение (и заодно проверять результат каждой функции на None)
>>1653559 >Как без регулярок решить эту проблему? Но это же типичный вопрос именно для регулярок. Они идеально для этого подходят, быстрые и оптимизированные.
Существуют ли Junior Python разработчики? Мне кажется, что нет. В условиях повышения требований нанимают тех, кто уже вырос из данного определения. И что должен уметь Junior/Middle? Какие сопутствующие технологии(если говорить про бэкэнд веба)? В вакансии не посылать, там 90% ебанутых HRш, лепящих всё подряд.
>>1653997 > re.compile Кстати, интересно, почему так до сих пор пишут, если, вроде как, пайтон их всё равно на ходу компилирует и кеширует. Разве что, чтобы паттерн в какую-нибудь красивую переменную засунуть.
>>1654000 >там 90% ебанутых HRш, лепящих всё подряд сильно преувеличил, поскроллишь штук 10 и найдешь вполне адекватные требования вообще это классный двачевский для оправдания самого себя, я так понимаю ты даже не открывал вакансии
>>1654000 Существуют, ведь до мидла надо ещё вырасти, и это не 1-2 месяца занимает. Зря ты так к вакансиям относишься, читай только требования(технологии именно) и поймёшь что те е надо учить.
>>1654000 Мало кто напишет "Джуниор", сразу ломанутся те, кому ещё в стажёры рано.
И не понятно, почему считается, что джуниор это тот, кто совсем чего-то знает. Вообще, на других квалифицированных специальностях после ВУЗа (4-6 лет!) ты идёшь на работу и тоже на младшего. А двочеры почему-то считают, что вот можно полгода поучиться и сразу идти работать.
Вообще, может стоит поискать вакансии в QA на какое-то время, но это именно в фирму к разработчикам идти надо. Так будет реальный опыт работы на реальном производстве.
Что в форматировании/проектировании питоновского кода мгновенно может выдать во мне пришлого еблана? Скажем, я хорошо разговариваю по английски и дружу с грамматикой, но говорю с дичайшим руснявым акцентом, отчего все на меня будут косо смотреть. Что аналогия для этого в Пистоне?
>>1654190 Спасибо! а если нужно применить функцию к каждому отдельному объекту в матрице? Например: создать из 2-х мерной матрицы чисел, матрицу из этих же самых чисел но типа str?
>>1654158 А че если им напиздеть что я окончил техновышку (на самом деле я гуманитарий) сказать им что знаю виндовс как 5 пальцев и готов работать за еду первое время. Есть шансы что возьмут? Я ебаный гуманитарий и учу питон, так хоть погрузился бы в атмосферу айти и было бы проще и быстрее вкатываться..
>>1654218 >готов работать за еду первое время Не думаю, что это кому-то интересно. Вот реально, мало-мальски большим работодателям это не интересно. Интересно хороших людей найти, а не чуть-чуть сэкономить. Хотя если как-то вбросишь, что деньги не главное на начальном этапе, то может просто отношение лучше будет.
>>1654218 >А че если им напиздеть что я окончил техновышку (на самом деле я гуманитарий) Скорее всего с тобой начнут разговор с того, где ты учился, на каком факультете, тема курсовых и диплома и т.п. Не пытайся обманывать в таких вещах, это сразу вскроется и отношение будет соответствующее. Скажи просто из серии, что вот хоть и гуманитарий, но всё равно в первую очередь компы интересовали и вообще именно в айти хочешь.
Вакансия смотрится интересной, но не факт, что попасть туда просто. Но попробуй, почему нет.
Захотел тут по человечески перекомпоновать проект - вынести весь свой говнокод в отдельную директорию и попробовать накатить докер заодно. Обесните, (на пике открыт bot.py) почему пичарм подсвечивает, что якобы некоторых модулей не существует? Хотя они всегда находились рядом, но сейчас их просто всех вместе перенесли из ./ в ./src/ Более того, проект работает. Я где-то (да) объебался или пичарм бесноебит?
>>1654310 >>1654288 >>1654287 Благодарю за оперативное пояснение. Все поправил, оптимизировал импорты, добавил __init__.py А ещё я успешно собрал докер образ, запулил его на вдс и развернул помощью компоуза, оч все понравилось, ппц как удобно всё придумано блин. Мож нахуй ваще этого удава и попробовать вкатится в девопсы
Что такое аргумент self? Покажите на пальцах, а то везде слишком абстрактно описано. Нужен максимально понятный пример, а то я ебанусь и больше не встану.
>>1654396 Есть class Dom. В нормальном доме у тебя будут атрибуты dweri, okna, sralnik и методы otktit_okno, smit_sralnik. Окна могут быть деревянными или пластиковыми, одннокамерными, двухкамерными, разного цвета и т.д. Self нужен для того, чтобы при изменении этих параметров или выполнении каких-то действий всё это происходило в конкретном доме, а не во всех домах вообще. Потому что окна есть и у машин и у твоих соседей в домах. Но ты-то создал свой Дом(экземпляр класса) и хочешь производить действия конкретно со своим эксземлпяром.
>>1654436 Там есть довольно странные задачки. Например https://py.checkio.org/en/mission/unix-match-part-1/ Хочется решить как-то просто базовыми средствами, но понимаешь, что придется городить огрод. Поэтому решение заключается в идиотской переделке в регексп. Не очень понимаю учебную ценность такого.
Я совсем новый ньюфаг в питоне, разбираюсь с черепахой. У меня встал вопрос: я пишу код, потом в командной строке запускаю его, черепаха идет по нужным координатам с заданными параметрами - ОК, получается. Вопрос - как мне менять ее положение уже во время выполнения программы? Я вижу, что в документации идет >>> приглашение к каждому действию, но не понимаю как совместить режим исполнения командной строки и режим питона.
>>1654479 Если я правильно тебя понял - ты запускаешь файлы через cmd типа >python huepaha.py А >документации идет >>> приглашение к каждому действию Это сам интерпретатор, просто напиши python в cmd или в папке найди исполняемый файл
ага, это типа задачка для fnmatch или glob. ты можешь решить задачу за 30 минут базовыми методами, а можешь заюзать либу и за 30 секунд пройти все чеки. я считаю, проработать вопрос самому, а потом глянуть на солюшны других людей и увидеть более валидное решение - это довольно поучительно, и в этом один из главных приколов чекио лично для меня. а в данном случае импорт fnmatch запрещен чекером чекио, видимо, по причинам безопасности, и ты всё равно вынужден будешь напилить ненужный велосипед. кек
ну это чисто технопроблема, а вот что некоторые задачки без специального знания какого-то алгоритма решить почти невозможно - это конкретный проёб. там, где всякая комбинаторика, особенно сложно. ты или пишешь прикольный алгоритм на 10 строк, о котором автор задачи узнал в универе, или по хардкору хуячишь кучу солверов и решаешь задачу численно, если захочешь столько ебаться, конечно. но всё равно обсираешься, потому что ассерт на сервере проверяет какой-то корнер кейс, который справедлив конкретно для "красивого решения" и не приемлет альтернативных решений в принципе
Подскажите эффективный способ хранить данные типа ключ : значение, если ключ - интовый уникальный идентификатор, а - просто инт. { 123125 = 12, 12319023812= 1293812938912, ...}
Я хотел хранить в дикте, но на стаковерфлоу сказали что это будет неэффективно при динамически меняемом наборе ключей.
если нет, то забей. там просто очкуют, что говноумник в комментах их "срежет", уровнив их авторитет, вынудив извиняться и дополнять, поэтому стараются охватить своим ответом ВСЁ
>>1654499 > Какой носклюль? Есть же примитивные типы в питоне, все что поверх этого - тормознутый оверхед Ну какбе питон тоже не заточен под скорость. Я думаю та же редиска будет быстрее начиная с некоторого довольно небольшого объема.
>>1654502 >std::map<int, int> Может быть unordered_map всё-таки? map же говно ебаное с плохой константой.
Дефолтный словарь это unordered_map, время доступа константное. Попробуй from typing import TypedDict ещё. Я чёрт его знает что это, просто проверил если ли типизированные словари - и они нашлось.
>>1654507 Для 100 элементов пока этот хеш вычислится я чай успею сделать При больше 1000-10000 да, решает. Мап еще и может оптимизировать поиск до логарифма, не знаю правда как.
>import TypedDict Ну очевидный оверхед над обычными типами, они то может удобнее и практичнее но точно не быстрее
>Дефолтный словарь это unordered_map Даже с интами, питон все равно хеш считает?
>>1654508 Мап - сортированное дерево, вот тебе и логарифм для поиска в виде высоты дерева. Стоит его использовать, только если тебе эта сортировка нужна постоянно. Во всех остальных случаях как ты и сказал - вектор на малом количестве и хеш-таблица на большом. Мап на любом количестве проиграет вектору или таблице, скорее всего - ведь там даже доступ к элементу за логарифм, лол.
>>1654508 >Даже с интами, питон все равно хеш считает? Да, конечно. Но подсчёт хеша очень быстр и о нём в принципе не нужно думать, актуальны могут быть вопросы дальнейшего поиска, добавления и удаления элементов.
Я сейчас какие-то синтетические тесты проделал, с большими словарями и большим количеством операций, разные стратегии добавления элементов в словарь и удаления практически никак не влияют. Размер тоже никак не влияет, если словарь большой и в кеш процессора уже всё не влезает.
Словари в питоне очень-очень быстры и не надо пытаться что-то придумывать вместо них в таком случае. Если ты пытаешься уже здесь оптимизировать, то тебе питон не нужен.
Поиск-удаление это O(1) в норме. Но в плохом случае может доходить до O(N), это если неудачно дерево строится, из-за неудачного хеша это возможно. Но это надо специально под этот хеш программу строить. Рандом и "подряд" работают примерно одинаково в тестах.
В питоне внутри всё реализовано через словари. Ты когда функцию вызываешь, в ней локальные переменные тоже в словарях. Всё в словарях. Поэтому работа с ними оптимизирована по-максимуму. И поэтому же пытаться тут что-то выиграть бесполезно. Объём занимаемой памяти можно выиграть, если специальные либы использовать.
>>1654523 >Не могу найти в PEP8 Это порево двадцатитетней давности, времён 15 дюймовых мониторов редакторов, работающих в текстовом 80-колоночном режиме. Не обязательно дрочить на него.
>>1654523 >надо ли юзать пробелы например при передаче аргументов в функцию После запятой - надо. PEP8 рекомендует НЕ ставить пробел тогда, когда присваивание в передаче параметров делается, вокруг знака равно. Но после запятой надо. func(par1, par2=2, par3=3)
Помогите разобраться с iterator и iterable. iterable - это то, что имеет метод __iter__(), который возвращает итератор, а итератор - это то, что имеет метод __next__(), так? Правильно ли я понимаю,что когда я пишу l = [1, 2, 3] for i in l: ... на самом деле неявно вызывается l.__iter__(), из которого потом берутся next?
Сначала вызывается l.__iter()__ Он возвращает итератор, это этот итератор не обязательно тот самый l. Более того, скорее желательно, чтобы это был какой-то другой объект. Демо-примеры итераторов в этом плане не очень корректны (те, что возвращают self), они свалятся за примере for i in L: ___for j in L: ______print(i, j)
Ясно понятно модер данной борды пидорас удалил мой тред. Дублирую сюда: За год собираюсь вкатиться в классический питон+маш об. Заниматься буду 8-12 часов 6-7 дней в неделю. Знаю основы прогерства, по вышмату и статистике 5. Планирую после вката съёбывать в Силиконовую долину, но вкатывать буду без диплома. В чём подводные и почему нет?
>>1654641 Ну да, это не стоит отдельного треда, спросил бы в общем ньюфаг треде. >по вышмату и статистике 5 Имхо, никаких подводных и проблем не предвидеться. Если ты в самом деле понимаешь статистику и теорвер на отлично, то ты уже лучше половины машинлёрншиков, а подтянуть прогерство для питоновых либ маш-оба вопрос одного-двух месяцев в зависимости от степени знакомства с основами прогерства.
Парни, питон начал изучать недавно. В данный момент работаю с Pillow. Собственно столкнулся с проблемой: когда изменяю размер прозрачной гифки, а потом ее сохраняю, то у меня теряется ее прозрачность. Подозреваю, что проблема именно в save(), так как на всех этапах до сохранения каждый фрейм отображается прозрачным. Я думаю проблема в том, что параметр прозрачности в каждой картинки разный. Хелп!
>>1654769 Да ладно, везде пишут что берут за знания а не за бумажку. + мне похуй будет даже если шарагу закончу ибо живу в ссаной лугандонии бумажкой которых я могу только подтереться. >>1654771 Ну тервер подучу мальца и думаю ок будет, в остальном себя оцениваю как сильного студента. Сейчас вот это смотрю https://youtu.be/2XFaK3bgT7w?t=3152 потом по списку книжек думаю уже идти. >>1654802 Значит выдрочусь на уровень знаний получше тех, которые там.
>>1654856 Языки с чистой парадигмой никому не нужны. Путь то ООП, ФП или что-нибудь ещё. Нужны языки, которые не сковывают и позволяют разные подходы применять, причём одновременно
В Питоне есть и основы ООП, и какой-то минимум ФП, и метапрограммирование, и параллельное, и асинхронное поддержали вполне достойно. В этом его сила. Свои слабости тоже есть, не без них.
Аноны, помогите, горю уже. Мне нужны байты файла, который я отправляю на апи через FileField, пытаюсь читать его в представлении из реквеста: request.FILES['file].read() и мне отдают b'', хотя size у него есть и он readable. Что я могу делать не так?
>>1654950 >Языки с чистой парадигмой никому не нужны. Путь то ООП, ФП или что-нибудь ещё. Нужны языки, которые не сковывают и позволяют разные подходы применять, причём одновременно Да не, похуй вообще на подходы, нужны языки которые требуют минимальной подготовки и позволяют пилить фичи как угарелому.
> В Питоне есть и основы ООП Есть. >и какой-то минимум ФП Нету. Блять, в питоне даже лямбд нормальных нет, ты о чём вообще? >и метапрограммирование В питоне это тоже хуй пойми что, а не МП. >и асинхронное Ну хоть один поток полностью утилизировать сумели, ахуеть.
В питоне, как в языке, толком-то нихуя и нет. Он простой как палка, и содержит 0 каких либо концепций, просто тупой как палка язык. За что и ценится.
>>1654950 > Языки с чистой парадигмой никому не нужны. Всё-таки отчасти нужны, их используют как DSL, но для чего-то большего они не особо годятся.
> Нужны языки, которые не сковывают и позволяют разные подходы применять, причём одновременно Главное при добавлении фич в язык не увлечься, а то получится C++. Тоже не сковывает, да и вообще язык универсальный, но сложноват в использовании.
>>1654962 >Всё-таки отчасти нужны Где например? Для всяких декларативных UI-ев обычно на том же языке DSL и клепают. Больше той же чистой функциональщины нигде не видал.
>Главное при добавлении фич в язык не увлечься, а то получится C++. Тоже не сковывает, да и вообще язык универсальный, но сложноват в использовании. Язык либо живёт и развивается, либо тухнет. Обрастание фичами — это вопрос времени, для того и нужны новые языки (или хотя бы версии, дропающие обратную совместимость), чтобы собирать все удачные идеи из старых и дропать лишнее. Правда бизнесу этого не объяснить, и легаси на каком нибудь втором питоне в каком нибудь фб так и будет жить как всякого банковское/военное говно на коболе/фортране, лол.
>>1654961 Есть там всё, если не заниматься демагогией, но никто за простым синтаксисом не разглядит, ведь всем надо скобочки, сотню ёбнутых конструкций, синтаксиса в духе перла и прочих фишечек.
>>1654962 C++ обрастал фичами во много слоёв, причём эти фичи костылями прикручивать приходилось, чтобы не ломать совместимость со старым языком. В результате какой-то адъ на выходе.
И такое ощущение, что там идеологи об элегантности особо и не думали. Всё-таки система ценностей идеологов питона немного другая, это чувствуется.
Хотя последнее время много какого-то говна принесли. f-strings на первый взгляд прикольно, но реально это шаг в сторону говнокода, такой php древних времён. Декларации какие-то дикие.
>>1654970 Там нет нихуя по факту, мань. Я же говорю: он потому и ценится. Можно давать писать код людям, которые в программирование пришли вчера. >но никто за простым синтаксисом не разглядит А что разглядывать-то, мань? Это вполне конкретные вещи, которые в питоне нет. А как говорят гоферы — и не нужно.
>>1654966 >и легаси на каком нибудь втором питоне в каком нибудь Сейчас чуть проще, благодаря моде на микросервисы.
Обратную совместимость надо дропать иногда, но и перекатывать на новые версии тоже надо адекватно. Гвидо тот ещё урод в этом смысле, выкатили третью версию, которую при всём желании нельзя было совместить со второй, поэтому много лет ключевые проекты на третий питон не переходили и вообще популярность просела языка.
Вот банальные юникод-строки. Был префикс u"строка" во втором питоне, обязательный. Чего стоило оставить этот префикс в третьем, но объявить его obsolete, с обещанием убрать через несколько лет? Тогда можно было бы писать совместимый код и постепенно перекатываться.
>>1654980 Элегантность по отношению к питону, имхо, неверный термин. Всё же, он про эстетику. А если говорить про эстетичный (или красивый) код, то тут уже по возрастающей идут всякие руби...скалы...хаскелли.
В питоне думают о простоте. В каком нибудь го о ней думают ещё больше.
>>1654485 >Если я правильно тебя понял - ты запускаешь файлы через cmd типа Да, все так. Я думаю вот о чем - черепаха пошагала и остановилась, потом я ее не выходя из графического интерфейса (получается файл все еще исполняется, cmd не выдала приглашения) могу ли перемещать дополнительно? В общем, шизоидно получилось, суть - могу ли я дополнять уже выполненный код и получать сиюмитный результат? Вот прошла она у меня 50 пикселей и все, строки в файле .py кончились а я тут такой опа и дописал пиздуй еще 20 пикселей и она попиздовала?
>>1654988 Сразу видно нюфага, лол. Нет ничего более постоянного, чем временное. Сегодня ты вставляешь костыль, завтра переходишь на другие таски, через пару месяцев ещё кто-то доложит туда свой костыль и пойдёт по другим таскам, а через пару лет в такой код никто даже залезать не захочет. И уж тем более в FAANG-ах, где кол-во программистов просто космическое и кодобазы на сотни гб.
Это как с недавним дропом поддержки x32 битного софта на макоси. Внезапно оказалось, что куча даже нового софта написана криво и не умеет в x64 (с банальными ошибками, вроде кривого типа для индексации массива), просто из-за того что была такая возможность и все хуй ложили пока не пришёл эпл и не выебал всех в сраку.
>>1654989 > хаскелли > эстетичный Уродливый язык, как ни посмотри. С одной только обработкой ошибок здесь всё в разы хуже, чем в Go. Функции, принимающие тип из 100500 полей. Лапша из рекурсий и лямбд, потому что нет циклов и переменных. Стиль именования идентификаторов из одной буквы. Нужно быть в конец матанутым, чтобы увидеть в этом красоту.
>>1654998 Зато решить задачу неэлегантно, засрав всё вокруг стейтом нельзя, вот он и эстетичный, лол. Всё есть функция, без лишних сущностей, есть жи брат
>>1654961 >Нету. Блять, в питоне даже лямбд нормальных нет, ты о чём вообще? Странно что ты еще Хаскель не притащил как образец на который маст хэв равняться иначе "не_ФП_яскозал"
>В питоне это тоже хуй пойми что, а не МП С метаклассами и дескрипторами пытался хоть раз разбираться? Я - да, достаточно мощная вещь но забил хуй на полпути т.к. это надо только красноглазым, пишущим фреймворки
>Ну хоть один поток полностью утилизировать сумели, ахуеть Асинхронная работа в Питоне работает как надо, проблема лишь что приходится часто полагаться на сторонние либы ведь стандартная asyncio это просто каркас для других пакетов и не более. Многопоточность же не могут завезти в первую очередь из-за ограничений CPython которые хуй так просто наебнешь. Где хардкорная многопоточность все же нужна GIL внезапно таки освобождается и она работает, но это все под капотом ебошит и программер туда не залезет дабы ничего не наебнуть. numba тому пример
>>1655018 >Асинхронная работа в Питоне работает как надо Недоделана. Например asyncio.wait_for() В теории должна прерывать выполнение по таймауту, однако реально этого не делает, если исполнение зависает на синхронной задаче, прерывания не происходит. Почему? Я ожидаю другого поведения. Это должно быть заложено в язык, но этого нет.
При этом реализовать самому реально, используя библиотеку signal, системнозависимую правда. Но это неудобно.
Ещё проблема с чтением stdout/stderr в запускаемых отдельных процессах. Нельзя читать данные, пока вызванный процесс не завершит исполнение. Это ни разу не асинхронное поведение, и хрен переборешь.
Пчелы, есть вот такой код парсера (он работает, с ним все хорошо), написанный с использованием aiohttp https://pastebin.com/BELtEqvX И есть модуль main, так же асинхронный, который вызывает в себе этот парсер https://pastebin.com/t6w3PHJy Луп мейна крутится с условием run_until_disconnected() А луп парсера run_until_complete(). Иными словами, мне просто иногда из постоянно работающего мейна нужно вызывать метод из парсера, однако интерпретатор запрещает это делать с ошибкой пикрил Почему так получается? Как мне разделить эти тупые лупы?
Сап, прогроммач. Есть пикрелейтед окошко. Поля ввода пароля защищено заглушкой вида show='*'. Есть кнопочка show, на нее привязана функция, которая меняет параметр show поля ввода пароля на None. Тем не менее, пароль остается все в том же виде. Есть идеи, как это реализовать?
>>1655088 На втором. Если я правильно понимаю терминологию, то мейн поток спокойно крутится, пока не дисконнект А вот поток из парсера уже запустится не может Полез в доки asyncio, похоже нужно вручную создавать новый таск
Есть знакомый, средней руки кодер, написали ему с одной веб-студии, покодить на Джанге за 7 доллларов в час, ну он связался, подписал договор, дали доступ ко всему, он потыкал-потыкал, тоже с Докером проблемы возникли, там-сям поковырялся, толком не разобрался. Ну его через пару дней и отшили, сам оправдывается, мол и учеба, и опыта с подобным не было. Странный чел.
Что на рынке труда с питоном? Меньше работ стало или больше? Один челик сказал, что перекатился с крестов на питон в другом треде и я заинтересовался тоже.
>>1655161 Понял, спасибо. Меня вот интересовало как раз пользуются ли люди в реальных коммерческих проектах возможностями интерпретатора? Или все ограничивается исполнением заранее прописанных .py файлов? Дело в том, что я еще пока не до конца понимаю саму парадигму кодинга на питоне(да и кодинга в целом). И когда ты начинаешь изучать подобные вопросы не поднимаются в литературе, а мне в голову засел такой, я считаю, фундаментальный по крайней мере на моем этапе развития в этой теме вопрос.
Мммм, зачем нужны массивы, если есть списки? Погуглил немного и особой разницы между ними не обнаружил. Разве что ограничения на тип данных и размер для массива.
>>1655099 Тебе не нужно внутри объектов пользоваться функциями вроде run_until_complete.
Цикл обработки сообщений, Event loop который, в программе всегда один. Ты его стартовал и всё, дальше ты кидаешь в этот цикл свои задачи. вот такого у тебя не должно быть: def get_posts(self): ____return self.loop.run_until_complete(self._parse_content())
Код будет иметь другой вид, скорее async def get_posts(self): ____return await self._parse_content()
>>1655317 >Код будет иметь другой вид, скорее async def get_posts(self): ____return await self._parse_content() О господи, мне аж поплохело от того, насколько это очевидное решение. Вероятно я запутался из-за того, что много тестировал отдельно этот класс вне основного Event loop В общем, теперь все работает, большое спасибо!
В Джанге у меня есть обычные модели типа Post и модели Entry, которые связаны с постами через ForeignKey (пикрил) Надо намутить разграничение доступа между пользователями, чтобы только создавший эти instance мог их редактировать и смотреть. Мне надо поставить поле owner = ForeignKey(User) внутрь обоих: Post и Entry или достаточно будет поместить его только внутрь Post? Как обычно делается? Я канешн понимаю что Entry по-любому связан только с одним конкретным Post, но проблем с безопасностью так не возникнет?
Нужно проверить некоторое количество ссылок на присутствие кейвордов на странице. Понятно, что можно удалить теги и искать подстроки, но хочется что-то более сириус бизнесовое.
Анон, привет, есть цель написать очень простое приложение на android, можешь описать буквально пару шагов которые нужно пройти чтобы написать его на чистом python?
>>1655746 У тебя же не простые селекты, куда ты можешь что угодно поставить, так что какого-то омега-очевидного способа скорее всего нет. Хотя если авторизация через токен и кто-то спиздит чужой токен, то можно, но это уже проблема пользователя
Привет. В питоне есть какой нибудь таймер, фитиль? Сейчас попробую объяснить
Вот у меня есть
While True: ----if событие происходит: --------time. sleep(10) -------- сделать так-то
Есть ли какой-то способ заменить sleep таким образом, чтобы действие исполнилось через 10 секунд, но чтобы в эти 10 секунд код не простаивал в ожидании, а все так же отслеживал события, запуская в очередь новые таймеры, если события произойдут ?
>>1655827 С словарях хитрее алгоритм. Хеш-поиск работает так, что у тебя есть линейный массив с прямой адресацией по хешу address = array[hash] Ты просто не можешь сделать такой массив из 2^64 элементов, памяти не хватит в принципе. Массив маленький, динамически расширяемый по мере разрастания словаря. И вот магия с тем, как вычислить этот маленький хеш, она есть. И как коллизии обрабатывать, там ещё больше магии.
>>1655907 b = 3 c = b * 1 for a in range(1, 11): ____... Не очень понял, зачем тебе действие, которое выполняется один раз, нужно запихивать в скобки, но ладно.
>>1655905 > запуская в очередь новые таймеры, если события произойдут Скорее всего тебе понадобиться многопоточность. Либо ты можешь убрать свой sleep и во время отслеживания своих действий (точнее, между ними) и запуска новых таймеров время от времени запускать проверку не прошло ли 10 секунд и не произошло ли какое-то событие - но это утопия и подходит только для не очень сложных случаев.
>>1655907 В питоне только foreach цикл, такого for нету. Можешь записать свою фиготу через while, впрочем твой конкретный случай можно и через for записать - у тебя вроде бы только a изменяется.
>>1655914 Я в курсе же про всё это, и про коллизии тоже. Нет там никакой магии. Скорее хеш-функция выдаёт стандартный 64 битный результат, а словарь использует младшие n битов, удваивая и перестраивая массив при проценте заполнения больше определённого.
Как "перезагрузить" БД при работе с Джанго? Я тестирую приложение у себя на машине, поэтому часто приходится очищать БД (Postgres) и заполнять ее новыми данными. Раньше просто удалял модели и файлы миграций, теперь эта срань сыплет мне какими-то ошибками (django.db.utils.ProgrammingError: ОШИБКА: столбец "name" в таблице "django_content_type" не существует)
Аноны, посоветуйте плиз курсы для ньюфага 1) онлайн 2) без жесткого тайминга (сдай задание завтра или умрешь) 3) с сертификатом 4) можно на ингрише Очевидная Coursera очевидна?
>>1655788 Никак ты этого на питоне не сделаешь, разве что консольный скрипт в каком-нибудь QPython запустишь. Андроид - это жаба и котлин. Даже попытки написать что-то на родном NDK на C++ приводят к тому, что шаг влево шаг вправо - и приходится возвращаться к жабе. Теоретически, возможен вариант с Jython, но вряд ли где-то есть нормальный пошаговый туториал, всё обрывками.
>>1655788 kivy но пожалуйста, освой Kotlin, он не такой ебанутый как Жаба и даже сходства с Питоном там есть, не иди по тропе пизданутых жс-еров которые суют свой язык просто всюду (в том числе и на мобилки), уже засрали все что смогли
Так, блэт. Внутри одного из class-based CreateView в Джанге у меня крашился редирект, решил провести ахуительный дебагинг с помощью print и посмотреть какой url возвращается его методом get_success_url: print('URL:', self.get_success_url()) По итогу увидел что собственно этот метод и крашится: AttributeError: 'NoneType' object has no attribute '__dict__' С хрена ли метод не возвращает мне тот success_url, который был определен в классе?
Пистоны, вопрос по pyqt5. Мне надо иметь возможность, сортировать результаты по нескольким значениям. Т.е. например, есть список категорий, пользователь может несколько раз из этого списка выбирать разные значения и они "суммируются", как например тэги или фильтры на некоторых сайтах. Какой виджет для этого лучше всего подходит?
>>1656104 Дополнение: крашится он начал после того как я переопределил метод form_valid и стал сразу возвращать в конце return HttpResponseRedirect(self.get_success_url()) Думал, что все должно нормально работать, но что-то идет не так
>>1655952 https://docs.djangoproject.com/en/3.0/ref/django-admin/#flush это что ли? Для прогона тестов джанга создает отдельную бд и потом удаляет её, и если я правильно понял, что сомнительно, то вот здесь https://github.com/django/django/blob/master/django/test/utils.py есть функции setup_databases и teardown_databases, который смогут тебе помочь, если тебя надо снести базу и на ее руинах создать новую. А может лучше тесты написать и не страдать. >>1656104 >AttributeError: 'NoneType' object has no attribute Либо не передал чего надо в метод, либо не вернул чего надо из метода. Если покажешь код, то будет проще тебя помочь.
Всем привет. Нужно без знаний кода собрать бота для телеграмма. Его функционал как у тиндера, только на минималках: 1. Зарегался, указал описание, фото, город 2. Жмешь поиск и тебе профили таких же зарегавшихся показывается
Я смогу такое сделать на конструкторе? Или там только «если а то б»?
>>1648937 Думаю об используемых сущностях всегда и везде, смотришь на дорогу, думаю о классах Транспорт, наследуемых от него классах Машина и т.д., и т.п. ООП про мышление, а не про дрочку. Старайся думать о логике приложений на смартфоне, какие классы реализовывали разработчики, по твоему мнению. Что-то в этом духе.
Бля челы как заставить себя развиваться дальше (зачем и куда) освоил удава (+ попутно жс (ес6 без фреймворков), жабу (в шараге) и всякие инструменты автоматизации типа баша, докера итд) на уровне "медиум++ задачек с литкода без гугла" Но стажировок щяс ни у кого нет; через шарагу можно только в вротенд вкатится, а я хочу в бекенд
Если своровать у кого-нибудь классный гитхаб и отрефакторить его под себя, это покатит на собесах?
>>1656102 >освой Kotlin Блять опять эти скобочки дрочить блядские, начал изучать python потому что нет этой бесящей хуйни, но все равно, спасибо, буду параллельно изучать еще kotlin
>>1656343 Так вот почему здесь так любят делать ботов - потому что это гуманитарное занятие где-то на уровне вордпресса и макросов для экселя. Им дали простейший в использовании язык - нет, не хочу, хочу программирование мышкой.
>>1656343 Конструкторы нужны для очень простых проектов уровня сайтов визиток. Сам понимаешь, какая там логика. Даже если и сможешь, это будет такое извращение, что проще самому выучить какие-то базовые штуки и накидать проект за пару часов. Тебе всего-то понадобится обертка для работы с апи телеграмма (советую telethon или, если туповат - телебот; у них у обеих шикарные доки с кучей примеров) и какая-то бдшка. Можно воспользоваться встроенной sqlite, если бот небольшой - для знакомств с одноклассницами, например. И в принципе все, это очень просто.
>>1656466 Так ладно. Я в качестве хобби когда-то только версткой и чуть js занимался. Я смогу эту хуйню на джаваскрипте сделать? Я не буду ради этой задачи питон изучать, лучше денег накоплю и фрилансеру задачу поставлю.
>>1656562 Сомнительная штука на самом то деле. KivyMD забросили поддержку, в результате из ЛДНР какой-то петух взялся за это дело. Ему безусловно спасибо, но как бы на общий уровень намекает.
Но идею внести это в шапку полностью поддерживию, тем более скоро перекот.
>>1656599 > Ты всегда можешь ему помочь. Угу, но мне совершенно не зашел подход киви в виде их файликов со стилями. Хотя на QT5 хуярю только так, странно.
Ну вообще, то что ты описал, больше похоже на действие при нажатии кнопки. 1 кнопка - 1 тег. Кнопка ведь может быть задизайнена и так что не догадаешь что это кнопка, да? Жмякает юзер на тег-кнопку, а ты в память себе записуешь что за текст на кнопке был(напомню, ето тег).
>>1656684 Ну я не спец по ЮИ/ЮХ и не скажу тебе как лучше, по возможно все из того что ты описал, да. Я на сайтах везде вижу кнопки и по этой причине их тебе и описал. Да и работать с ними проще, если честно, работа со списком мне не сильно зашла, но это я.
Для своего хеллоуворлда нужно было реализовать вот такой класс, но чувствую, что в конструкторе у меня какие-то дикие костыли. Есть варианты получше? Наверняка же это какой-то популярный паттерн, но я не знаю, как он называется.
>>1656694 Разве это singleton? У singleton'а может быть всего один инстанс на весь файл, а здесь ограничено количество инстансов с одинаковым значением атрибута. Или я не прав?
Мб это не по теме, но подскажите, как можно пофиксить следующее: Крутится у меня в консольном окне скрипт, который слушает вконтактик по АПИ. Когда окно долго не находится в фокусе или параллельно запускается какой-нибудь другой процесс, то скрипт как-будто останавливается - логи не пишутся и респонсы на ивенты не отправляются, пока консолька вручную не пробудится каким-либо действием. Как можно заставить окно со скриптом работать без перебоев?
Я вроде бы знаю про линеаризацию, но это вообще нормально, что поведение классов А/B изменяется (конструктор не вызывается) из-за изменения порядка родителей? Получается, super просто следующий элемент линеаризации выдаёт, потому что если одному классу нужны вызвать конструкторы классов 1 и 3, а классу 1 нужно вызвать конструктор класса 2 - то с каким угодно другим устройством super это будет невозможно сделать без ещё более тяжёлых костылей.
Это как-то весьма неудобно получается, мягко говоря. Что делать если у меня __init__ с параметрами, которые я явно передаю и я хочу засунуть этот класс в множественное наследование? Там же (возможно) будет другой "родитель", и super вызовет конструктор какого-то левого класса с моими параметрами. А целевой класс наоборот останется без этих параметров.
Хреновая какая-то концепция множественного наследования. Хуже неё только концепция исключений.
>>1656700 >Разве это singleton? У singleton'а может быть всего один инстанс на весь файл, а здесь ограничено количество инстансов с одинаковым значением атрибута. Или я не прав? У тебя именно самый настоящий синглтон. Паттерн это идея проектирования. Идея синглтона в том, чтобы создавать только один объект определённого типа, по мере необходимости, и чтобы для пользователя работа выглядела так, как с обычным объектом.
А если более общно, то синглтоны это просто "глобальные переменные". Со всеми их плюсами и минусами.
>>1656784 >Хреновая какая-то концепция множественного наследования. Хуже неё только концепция исключений. Исключения в питоне очень хорошие, стройные и понятные, лучше, чем во многих других языках. Не понимаю, с чем там проблема.
Наследование в питоне полное г-но, всё сделано криво и убого. Особенно множественное. То есть ни множественного наследования нормального нет, ни интерфейсов вместо него, всё через жопу.
Я не понял точно, что хочешь ты, но может тебе надо просто явно вызывать конструктор нужного класса вместо super. Для множественного наследования это самый адекватный вариант.
>>1656784 А вообще у тебя самого кривая архитектура. Множественное наследование не для этого. В наследовании ты переопределяешь класс на основе родителя.
Если у тебя поведение родительских классов не согласовано друг с другом, у тебя могут быть проблемы. Ну банально в одном конструкторе ты делаешь переменную self.storage = {}, в другом self.storage = [] (для хранилища используются разные типы, но с одним именем. У тебя всё рухнет после этого. Аналогично с методами, может быть конфликт из-за этого.
Поэтому во многих языках множественного наследования нет, вместо используются интерфейсы, mixin и прочее. Но вот в питоне по этой части всё очень невнятно и неудобно.
Предыдущий:
Литература:
Автоматизация рутинных задач ч.2 - https://anonymousfiles.io/3CBCoy1o/ <-- тут только одна книжка. Кто может, залейте её на ЯД к остальным.
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
#######################################
ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года
Вопросы-ответы:
— А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
— Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
— А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
Текущая версия: https://ideone.com/lujiX5