Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: 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
>>2185616 Питон-отцы устали от хайпа вокруг языка и решили довести его до такого уровня, чтобы C++ показался детским лепетом, а вкатуны скупали верёвки и мыло.
>>2185695 >>2185696 Для всяких матриц-хуятриц есть специализированные нампаи-нумбы, которые едва ли сильно отстанут от си. На чистом питоне это делать нет смысла.
>>2185686 >>2185696 >>2185699 Печально. А я хотел освоить питон, чтобы делать иллюстрации для примеров цифровой обработки сигналов. А то на си код получается громоздкий и нечелевекочитаемый.
>>2185746 >А я хотел Ты хотел придти понабрасывать, не первый раз скорее всего.
С матрицами на питоне работают через специальные библиотеки. Они считают тоже очень быстро, написаны на Си обычно.
Какие-то вычисления может ускорять Numba, причём код может работать даже быстрее, чем аналогичный код на Си, за счёт того, что Numba это jit и больше возможностей динамической оптимизации, чем при компиляции. Но это костыль, и не всегда он работает, далеко не всегда.
В целом мне не очень понятно, откуда пошла мода на питон для около вычислительных задач, по мне они и на Си делаются удобно, питон удобства не добавляет, наоборот, усложняеть, надо стыковаться со специальными библиотеками и т.п.
У меня есть массив, в нём есть none, как мне это пофиксить в массиве, если я for использовать не могу? Уже час гуглю, если бы можно было использовать for, можно было бы по массиву пройтись и обновить поменять nonetype а какую-нить '-'. А как это сделать без него?
>>2185904 >for использовать не могу Скорее всего ты занимаешься какой-то хуйней. Давай ты еще срать себе запретишь и пойдешь на двач спрашивать как тебе жить дальше...
>>2185801 >Ты хотел придти понабрасывать, не первый раз скорее всего. Нет-нет. Я хотел именно то, о чем написал. Мой первый пост в треде >>2185746. Ты лучше расскажи, какие профиты мне можно ожидать от питона под мои задачки. Не хотелось бы примеры иллюстраций давать на матлабе - он несвободный.
>>2185937 коммент оттуда > Guido van Rossum 5:09 p.m. > To be clear, Sam’s basic approach is a bit slower for single-threaded code, > and he admits that. But to sweeten the pot he has also applied a bunch of > unrelated speedups that make it faster in general, so that overall it’s > always a win. But presumably we could upstream the latter easily, > separately from the GIL-freeing part.
В общем если огрублять, автору возражают, что его идея конкретно замедляет однопоточные приложения. Он и сам об этом пишет в своей статье, хотя я только фрагменты посмотрел оттуда. Но автор предложил какие-то оптимизациии, которые это дело могут сгладить. Соответственно ему возражают, что эти оптимизации можно применить и без отказа от GIL.
ХЗ, мне сложно судить, я плохо понимаю устройство питона на уровне реализации. Надо в это влезать, чтобы понимать. Но судя по переписке, комьюнити смотрит скептически и от GIL отказываться не хочет.
Хотя мне было бы интересно, если бы выпускали две ветки. Правда вопрос, даст ли реальную оптимизацию на многопоточных приложениях этот подход. То есть получится ли ускорить реально те приложения, которые требуют многопоток, но плохо ложатся на много процессов. Потому что если бегло смотреть предложение, то там он завязывается на том, чтобы создание объектов шло в основном потоке, а если другие потоки работают с этим объектом и меняют счётчик ссылок, а это по идее очень часто происходит, то это изменение уже идёт через GIL. А это значит, что будут тормоза. А когда расрашенных данных мало, тогда и многопоток не нужен, всё работает через несколько процессов очень хорошо.
Но у меня слишком шапочное знакомство с Python internals.
Кстати, есть и альтернативные решения. Например, Stackless python. Давно в него не смотрел, но проект до сих пор живёт (русская вики не обновляется) https://github.com/stackless-dev/stackless/wiki/ версия 3.8 питона поддержана. Гляну, в каком сейчас состоянии. Но проблема с альтернативами в плохой поддержки библиотек, что в бинарном виде распространяются.
>>2185955 Я сто лет не трогал матрицы, а когда трогал, делал это на C/C++.
Как я понимаю тему, питон с математикой работает примерно как матлаб и аналоги. Тебе из питона надо управлять библиотеками, математическими машинами, которые внутри себя как бы работают. Совсем другой подход, чем писать код самому на си.
Но у меня есть подозрение, что для практических задач вряд ли сейчас есть нужда писать что-то самому. В смысле алгоритмы обработки матриц. Тебе надо просто использовать эти матрицы.
Постановка вопроса "насколько дольше инверсия матрицы" не имеет ПРАКТИЧЕСКОГО смысла вообще. Ты даже на Си не должен реализовывать инверсию. Ты этим занимаешься только на курсах по вычислительным методам в универе, чтобы понимать, как это работает и мозги тренировать.
В питоне же ты получаешь, что не просто можешь вычислить что-то с матрицами, но и дальше с этими данными что-то делать. И возможно это сильно проще, чем в Си. Экосистема лучше, вот здесь может быть.
>>2185969 Про инверсию матриц спрашивал не тот, кому ты отвечаешь, а я. И я думаю над инверсией потому, что размер матрицы может легко быть 10000х10000, было бы странно если бы я не задумался над скоростью инверсии в таком случае. Алсо я прочитал про numpy и numba, вроде последний как раз то и делает, что конвертирует код в С и запускает скомпилированную функцию JITером в нужном месте, так что скорость должно быть почти нативно сишная. Но это в теории, если все сработает правильно.
>>2185987 Я сколько помню численные методы, есть масса алгоритмов извращённых для инверсии матриц. И есть разные виды матриц, тебе возможно стоит приводить всё к каким-то особым видам и работать.
Если ты инверсию делаешь, то там алгоритмы могут быть и реализации, которые учитывают архитектуру процессора, размеры кешей, количество ядер, могут быть CUDA реализации и т.п.
Если честно, слова про 10000x10000 воспринимаются как флуд, выдуманная задача. Откуда эта матрица взялась, зачем её инвертировать, а точно ли нужна такая матрица и нужно её инвертировать, либо же задача иначе представляется, и т.п. И какие ещё операции требуются помимо инверсии. И многое, многое другое.
Я испытываю скептицизм. И если бы мне вдруг такое потребовалось, я бы сначала лез в гугол и искал описания того, какие ресурсы для этого требуются, какие решения есть, есть ли бенчмарки и т.п.
Но когда твоя цель набросить, тогда да, проще придти на доску и просто спросить.
>>2186002 Я не читал твой роман целиком, матрица жесткости в FEM для двумерных задач. И нет, инвертировать аналитически необязательно, можно считать приблизительно чисельними методами, которые внезапно тоже не мгновенные для таких задач.
>>2185801 >по мне они и на Си делаются удобно Ну, вот, гляди. Я начинаю показывать какое-нибудь ДКП на libfft3w. На си я должен добавить заголовок библиотечки и добавить саму библиотечку. Если у меня прыщи и gnu-toolchain, то всë просто - остаëтся сообщить компоновщику что-то вроде «-l fft3w». И исполняшка соберëтся. Если у меня игровая прошивка windows и у меня накачена, например vs (потому как, ну, что ещë за позëрство - накатывать альтернативные IDE), то я начинаю вчитываться в readme, поставляемый с бинарниками libfft3w, нахожу, как подключить эти бинарники к студии, к проекту, дописываю строчку в исходник, собираю. Слишком много возни в обоих случаях. Если писать в промышленных условиях, то никаких проблем. А если в учебных материалах, то уже не годится вся эта чехарда. Можно ли при помощи интерпретатора питона избавиться от этой чехарды?
>>2185611 (OP) Привет двачик миленький Помоги погуглить (сформулировать, как гуглить)! Пишу скрипт, который для использования требует некоторое значение. Хочу, чтобы при запуске этого скрипта была возможность посредством нажатия кнопки "вверх" поставить предыдущее значение. Как это называется по-научному?
>>2185964 >В общем если огрублять, автору возражают, что его идея конкретно замедляет однопоточные А, понятно. У меня дежавю. Я кажется 15 лет назад это читал и каждые 5 лет заново читаю?
>>2186250 Постоянно говорят. Но питон серьёзные разрабы пилят, раз не выпилили GIL, значит есть объективные причины.
На самом деле GIL это частная второстепенная проблема. Серьёзная проблема это тормоза на многих однопоточных операциях, медленные циклы и т.п. Скорее из-за этого стоит вопрос, что может не стоит что-то на питоне делать. А не из-за многопотока.
>>2185611 (OP) Есть класс и в нем метод addmit (часть я обрезал). почему компилятор говорит: AttributeError: type object 'meetlist' has no attribute 'meets'?
>>2186423 Тебе надо понять что такое экземпляр класса и ключевое слово self В частности вместо названия класса нужно и в ините и здесь использовать его
Всем привет! Подскажите, пожалуйста, про генерацию словарей! Ну почти на 100% уверен, что делаю это неправильно(
Во вложениях присоединяю то, какая структура должна быть и то как я это делаю. То есть для каждого нового ключа - у меня отдельный цикл! Как это делать правильно?
Видимо, когда впервые пытался так делать я опечатался, из-за чего у меня словарь всегда перезаписывал сам себя и в конце имел только 1 значение. Не обнаружив опечатки, я подумал что так и должно быть, стал каждый ключ делать в новом цикле)
>>2186684 А, ну по факту все, что в начале было в другом файле и оттуда класс вызывался через библиотеку. Я просто для примера все в одно место запихнул, сейчас поменяю. https://ideone.com/LtzBKd
>>2186718 Ну я посмотрел немного, там пиздец на пиздеце, ты совершенно не отдупляешь что такое классы, объекты и проч, а хуяришь наугад. И как ты вообще все это высрал без тестирования? Просто писал простыню и не запускал ни разу? Или ты где-то это спиздил и подгоняешь под свою задачку?
сап двач есть много чисел (19999999, 2939999412 и т.д.) и нужно их выводить с пробелом внутри после каждых 3-х знаков типа 19999999 = 19 999 999 помоги, плизки
Пришло очень странное тестовое задание. На питон позицию хотят чтобы я сделал сингл пэйдж апликейшен, которое использует апи гитхаба и позволяет там залогиниться в аккаунт и посмотреть список репозиториев, имя пользователя и аватарку со всеми ссылками кликабельными. Мне очевидно, что это всё нужно делать на фронте в одном простом приложении на реакте. Просто пару компонентов сверстать и объединить. Деплоить можно даже серверлес. Никакой возни с микросервисами, доступностью, деплоем в кубер и прочей фигнеё, которая появляется когда бэк на питоне пишешь. Но как такое делать на бэке на питоне и зачем? Можете рассказать как вы бы взялись за задачу?
>>2186900 ты нас спрашиваешь почему тестовые задания бывают бессмысленны с практической точки зрения? Ну вот бывают. А ты бы хотел получить 200мб документации по API какого-нибудь банковского сервиса?
у гитхаба просто все api открыты и куски кода легко гуглятся. Программисты все знают что такое гитхаб. Не нужно объяснять предметную область. Нормальное задание.
>>2186906 >ты нас спрашиваешь почему тестовые задания бывают бессмысленны с практической точки зрения? Я искал скрытый смысл в этом задании и думал, что что-то не понимаю. Типа может на бэке писать выгоднее если кэшировать результаты т.к. серверлесс дорогой.
>>2186958 Нет. Я сейчас невольный фулстек, который пришёл как бэкендера и почти всё время занимаюсь реактом т.к. один из немногих его на проекте его знаю. Хотел на бэкендера перекатиться и предлагают на бэк с небольшим уклоном во вью на фронте, с которым не работал. Думаю будет супер тупо писать тестовое на реакте, а как красиво на питоне сделать не понимаю
Есть ли возможность пойти к какому-нибудь спецу на практику за бесплатно? в качестве макаки, что делает простые вещи или которые лень делать самому спецу И будет ли он обучать зелень? И если да, то где искать таких людей?
>>2187235 Иди ремонтировать обувь или изучать ещё какие-то актуальные услуги к спецу. Не может любой хуйлован в программирование. Можно его учить за деньги, но он не научится.
>>2187235 Ебать, да мне делать нехуй, только сидеть обучать. Вам и так уже запилили ютуб, лайв кодинг сессии на твичах, книги сделали. Но нет, этого всего мало! Нужен ЖИВОЙ тичер, чтобы только сидел, и только меня исправлял! А не многого ли вы хотите?
https://ideone.com/xnijrY Сап, змеяч, пришел с медленно работающим кодом (медленно при вводе 250к символов), по вводу создаю и дополняю (дублирую еще для обоюдности связей) словарик со списком смежности, затем DFS. Это делается быстрее (и скорее всего проще)?
Задача - определить соединены ли две точки, связи задаются попарно, старт и финиш в конце, связи двунаправленны: point1 point2 point2 point3 point1 point3 YES
>>2187373 Не знаю что там с гитхаб апи, но я попрошу у юзера имя с паролем и получу у гитовохо бэка сессию или токен какой-нибудь, а хранить его буду в локал стередже. Не очень вариант т.к. сам страничку логина делать буду. Поэтому если гит поддерживает, то редиректну на sso страничку, а когда пользователь там аутентифицируется, то заберу токен от sso и дальше как в предыдущем варианте.
>>2188188 О боже, что это? > N[temp[0]]=eval('["'+str(temp[1])+'"]') Зачем тебе eval? Это в принципе очень грязно почти всегда, и кроме того это ещё медленно. Тебе надо в рантайме вызывать функцию, запускать компилятор питона и т.п. Я не понимаю, как у тебя temp выглядит, но скорее всего можно нормальным образом список составить.
Главный тормоз скорее всего вот здесь, классика просто. Отавляю ключевые строки >path=[] >____while q: >____if v not in path: >________path = path +[v] Проверка на вхождение в список работает за O(N). Поэтому если список растёт постоянно, у тебя считай квадратичная сложность получается.
Тебе надо делать множества path = set() и дальше просто делать path.add(v) Тебе же ведь на самом деле путь не нужен, тебе нужно знать, есть путь или нет.
Если бы нужен был путь, то тоже можно было бы быстро сделать.
У меня есть список, есть переменная. Как создать список из пар (элемент списка, переменная) без цикла? У меня хватило ума только на some_dict = dict.fromkeys(список, переменная) zip(some_dict .keys(), some_dict .values())
>>2188223 спасибо, вначале чет смутило append к словарику тыкать, утонул в eval. А вот со второй частью не совсем ясно. тут я косоруко назвал переменную, path это все точки куда я могу прийти из стартовой (переименовал), не совсем путь, сделал множеством, но без проверки на не вхождение там же зацикливается.
visited=set() q=[start] while q: ___v=q.pop() ___if fin==v: return 'YES' (перенес условие сюда, ускоряет время если YES, но большие тесты для 'NO' все еще медленные.) ___if v not in visited: ______visited.add(v) ______q=q+N[v] return 'NO'
>>2188518 не не, давай без этого, конкретно то что я описал мне нужно, чтобы оно мне не высирало ни каких ошибок. test(1, 2, 3, 4) даже если по логике функции она принимает лишь 1 аргумент.
>>2188672 >>2188676 Да меня на работе ебут, чтоб я при работе с querysetами не использовал циклы, генераторы в том числе. Другой вопрос задам тогда, как получить из джанго кверисета кверисета с уникальными годами в поле даты. То есть табличка хуйня1 15.10.2021, хуйня2 5.06.2021, хуйня3 07.07.2007, оставить только хуйня1 и хуйня 3, или хуйня 2 и хуйня 3, не важно. Тоже без циклов собственно.
>>2188719 Сделал <QuerySet [(2005, 1), (2021, 1), (2005, 1), (2005, 1)]> делаю к этому объекту метод .distinct(), возвращается тот же самый кверисет. ЧЯДНТ?
>>2188506 Ты пытаешься реализовать алгоритм поиска/проверки пути в графе, так?
Тут надо иначе логику реализовывать. Первый этап, ты строишь матрицу достижимости, для каждой вершины графа ты составляешь множества вершин, в которые можно попасть напрямую из этой вершины. Это делается на этапе сканирования.
Второе, сам поиск пути, его длины. Это чуть более универсальная задача, чем ответ да-нет, просто да-нет можно чуть проще в плане логики, но не быстрее.
Ты строишь цикл по проверке, какие вершины можно достичь на длине пути N Для N=1 это вершины, в которые можно попасть из точки старта Кладёшь все эти вершины в буфер, который надо проверить на следующем этапе. Это множество. В этом буфере только вершины, которые пока не достижимы.
На следующей итерации цикла, проверяешь все вершины из буфера и составляешь буфер на следующий этап.
И всё, так ты довольно быстро строишь путь.
В твоём цикле как минимум затык вот здесь >q=q+N[v] У тебя получается очень большой список с кучей дублирования элементов, ты делаешь в результате очень много лишних проходов. Представь, что у тебя 1000 вершин, из каждой можно попасть в 100 других. Ты за один проход получаешь список из 100 тысяч вершин, которые надо проверить.
Делай, чтобы q это было множество, чтобы были итерации по глубине, и добавляй в это множество только те вершины, которые пока не пройдены, точнее не пройдены на предыдущей итерации.
>>2188528 Ну мета-таблицы, не сильный ооп, но можно запилить за счет расширение луа благо исходный код имеется. Будет полноценный ООП, но луа не об этом, это уже чисто извращение имхо.
>>2188937 >Ну мета-таблицы, не сильный ооп, но можно запилить за счет расширение луа благо исходный код имеется. Будет полноценный ООП, но луа не об этом
Мужики, помогите, записался на Курсере на курс "Погружение в Питон", а там какими-то виртуальными окружениями, Юпитерами и запусками скриптов из консоли мозги ябут.
Это такая особенность Курсеры? Почему не могли сделать автопроверку кода в окне, как в Кодеварс? Или это меня так учат полезным для работы навыкам?
А там еще пидр пишет на виме в Юникс-системе, а авторы такие "ну если вы на Винде, то НЕКОТОРЫЕ команды могут различаться, но вот вам статья с соответствиями". Пиздец.
>>2189419 >Мужики, помогите, записался на Курсере на курс "Погружение в Питон", а там какими-то виртуальными окружениями, Юпитерами и запусками скриптов из консоли мозги ябут. Это абсолютно нормально, даже необходимо. Ну, насчет жупитера не знаю, если тебе питон для дата саенс нужен, то норм.
Решил поробовать как эти ваши паттерн матчинги работают. Всё заебись но вот чзнх с пикрелетед? Хули пайлинт ругается, хотя всё правильно работает? Его просто не обновили для 3.10 или я что-то неправильно написал?
>>2189419 >Или это меня так учат полезным для работы навыкам? Тебя учат полезными для работы навыками. В первую очередь надо разобраться с тем, что такое виртуальные окружения, и как с pip работать на пользовательском уровне.
Это на самом деле довольно просто, но это надо понять и к этому привыкнуть.
По итогу очень большой прирост в понимании питон-экосистемы будет.
Питон не только язык, это экосистема тоже. Без экосистемы питона питон уже не совсем питон.
Надо просто отвлечься, взять и разобраться с этим.
>>2189554 Почему сразу даун? Видно, что чувак просто не дружит с инфраструктурой, хочет программировать, а не "админством" заниматься. Довольно обычная вещь.
Совет тут один, надо взять себя в руки и разобраться с инфраструктурой. Отдача будет очень большой. Без этого никак.
>>2189568 В питоне виртуальные окружения с самого начала.
В принципе можно спокойно писать и без них, просто подразумевается, что все нужные пакеты уже в системе. Это даже довольно обычная история в проектах, где питон как вспомогательный инструмент используется. Если тебе нужен какой-то модуль, ты просто оформляешь тикет на админа, что тебе очень нужен вот такой модуль, и его добавляют.
Но полноценная разработка на питоне как-то с этим не увязывается. Надо просто разобраться с этим и потом будет намного проще жить.
Аноны, начал учить пайтон, пока что читаю SICP из шапки. Есть вопрос, в чем лучше пистаь для обучения, есть шелл, есть терминал, или какой-то сторонний софт тоже есть? Разницы же никакой нет? И поставил версию 3.10, в обучалке версия питона не важна же, там все актуально будет? Спасибо
>>2189598 Пока можешь писать хоть в блокноте или idle'e. А так попробуй разные ide (pycharm, atom, vscode, spyder, sublime) и jupyter. Когда будешь писать что-то похожее на проекты писать, поймешь, что тебе больше нравится.
>>2189598 Разницы нет. Шелл удобен для всяких однострочников и прочих секундных экспериментов, для >3 строчек полезно иметь что-то с линтером, чтобы оно тебе бухтело сразу по стилю и ошибках, тот же вс код или прочий редактор на стероидах норм.
>>2189568 Нормально жили. Шли в секцию AUTHOR в модуле, находили email автора и писали ему какой он мудак и тот поправлял конфликты. Ну и айти было не таким сложным и потогонным. Можно было за выходные поправить
>>2189676 ладно, шучу. export PERL5LIB=/home/user/perl5lib/ и в cpan все инсталлишь. Поводом создания virtualenv явилось необходимость писать сразу на python2 и python3 одновременно. А в perl только одна версия языка доминирующей всегда была.
Ананасы, подскажите по реквестам кое-что. Вот такая ситуация - есть чужой спагетти-код, который очень не хочется (и нет времени) переписывать, и он в разных потоках шлёт реквесты из общей очереди на одни и те же 10 уникальных хостов(балансеров) через requests.get() и у каждого такого запроса соответственно тратится лишнее время на создание-закрытие сессии. Вопрос такой - а можно ли каким-то образом завести на эти хосты отдельные сессии одновременно, чтоб с ними эти потоки-воркеры могли ходить запросами без пересоздания подключений? Я читал, что Session не потокобезопасно, но мб есть какие-нибдь воркэараунды или более здравые решения?
>>2185611 (OP) Поясните за работу декораторов через точку, например у фласка: @app.route Вроде как я понял вызывается класс flask(Scaffold), а в скаффолде есть фунекция route, которую можно дернуть через этот app. Вообщем интересует вот это взаимодействие.
>>2189885 Просто не позорься. Толстяк влез с луа, мимотолстяк метнул какашкой, а ты тупо вышел на сцену и позоришься. Это называется КРИНЖ по вашему. Ты нихуя не знаешь и полез что-то обосновывать.
>>2189893 Всё, что делает декоратор типа >@decorator >def func(): pass это: >func = decorator(func)
Точки там или нет — не важно. app.route — это просто путь к функции-декоратору. Типа вот так — https://ideone.com/VVeaJk Метод route имеется у твоего объекта app. В каких он там фреймворках/либах/родительских классах имеется уж не знаю.
>>2185778 Клоун, лучше рот не раскрывай, если что-то спиздауть решил. Ты кроме как шутом больше ни на что не годен и да, я с нумпаем даже и не работаю в основном, я веб-макака
Так блэт, не понял. Что именно такое асинхронная корутина? Я работал с асинхронщиной но не в курсе именно питоновской терминологии В доках сказано https://docs.python.org/3/library/asyncio-task.html что асинхронная корутина это собственно сама функция объявленная через async, но блять сам Питон же говорит что это просто function, а вот ее результат это уже корутина. Чему верить?
python3-venv : Depends: python3 (= 3.6.5-3) but 3.6.7-1~18.04 is to be installed
Линух блять, я твою мать топтал. Че это за хуйня? Ну вот че это за хуйня? Элементарная установка для питон крашится к хуям из-за микронесоблюдения версии. Система чистая нахуй
>>2190264 В доках есть специальная оговорка: > Important > In this documentation the term “coroutine” can be used for two closely related concepts: > a coroutine function: an async def function; > a coroutine object: an object returned by calling a coroutine function.
То есть где-то корутинами могут называть фунции async def, для удобства.
В целом да, непрозрачный момент, но ты понимаешь всё правильно: > сам Питон же говорит что это просто function, а вот ее результат это уже корутина. Чему верить? Вот этому и верить.
Схожая непрозначная история с генераторами, на них логика тоже даёт сбой. Впрочем это близкие вещи, корутины и генераторы
>>2191353 Tools | Deployment | Browse Remote Host Если надо редактировать файлы внутри контейнера А если нужен интрепретатор, то при добавлении окружения выбираешь докер
>>2191466 Что за тупость, это же компиляторы верно? почему они не видят одинаково? как будто разные языки програмирования м разным синтаксисом
Короче, я просто на убунту запускал скрит, он делал дела и красиво показывал, и в конце писал в файл Запускал правым кликом терминал python3 main.py и все
сейчас на винде start.cmd с кодом python main.py pause
Запускаю двойным кликом. Как мне сделать что бы я кликал была клнсоль с цветами и записовало в файл? Короче жаст ит воркс
>>2191473 Это связано не с питоном, а с ОС. Например, ты сделал сайт, и он нормально работает в файрфоксе, а в интернет эксплорере нихуя. Вот тут то же самое. Посмотри модуль colorama, там вроде есть какие-то костыли для решения этой проблемы.
Господа, а как деплоить приложение? Ну вот я меня есть мокрописька в venv, я хочу ее распространять. Как?
Я попробовал написать шелл-скрипт вида:
#!/bin/sh
./venv/bin/python3 bot/echobot.py
И внезапно оно работает без venv/bin/activate. Так может так и распространять? Эту директорию в архив, пускай пользователь куда-то там разархивирует и запускает bot.sh?
У меня получилось составить список, из этого списка сделать словарь. Проблема состоит в том, что словарь не допускает дубликатов. Каким образом можно скормить словарю список
a = [['79184219577', 'Женя'], ['79194249271', 'Руслан'], ['79281234567', 'Женя']]
таким образом, чтобы в нем в итоге вышло 2 номера Жени и 1 номер Руслана?
Я уже кучу всего перепробовал, едет крыша, заранее спасибо
>>2191642 Хуйню сделал. Нужно проверять есть ли ключ в словаре или нет. Если нет - загоняешь ключ и значение в словарь. Если есть - добавляешь значение к старому значению по ключу.
>>2191651 Я не кодер и не собираюсь изучать язык в деталях и почему создатели этой хуйни обосралить и не смогли осилить нормальный флоат. Понимаешь, мне похую. Вот что не похую так это то, что мне нужно написать скрипт на питоне для универа.
Как делать в этом случае? Округлять до определенного знака или есть нормальный способ?
А еще спрашивают почему питон вреден в качестве первого языка. Чтобы не плодить вот таких животных. Оно -- кодер, оно не собирается изучать язык в деталях.
>>2191662 > Оно -- кодер У вас все дегенераты итт не умеют читать?
Я тебе повторяю еще раз - мне поебать на ваши выкрутасы, стоит прикладная задача и питон рекламируется как прикладной язык для инженеров. Либо соответсвуй, либо иди нахуй и я делаю на с++
>>2191678 Ну если Питон реализован на С, то очевидно, что например С (если ты йоба-инженер) или С# (если ты тоже-инженер). Или кресты, если в геймдев охота.
Сап, двач, а цепи маркова для трёх слов расширяются, или там что то принципиально другое юзается? Учу питон, пишу генератор текста, но с тремя словами.
И вот думаю технически можно ли рассматривать цепи Маркова с звеном из двух слов (и парой звеньев в 4 слова) или лучше через словарь множеств вложенный в словарь писать или вообще чет другое.
>>2191707 Я в одном месте читал, что флоаты реализованы аппаратно и поэтому оч быстрые в вычислениях, а для точных расчетов прикрутили децимал, которые точные, но реализованы программно и поэтому более медленные.
>>2191805 decimal примерно такие же точные как их float. просто у них база - 10. а float у - 2 .
То есть, число 1.1 = 1 целых и 1/10 = нет точного представления в рамках двоичных дробей. возможно, что-то путаю касательно стандартна, но идея такая. Программисту обычно ничего знать не надо кроме того, что float нельзя сравнивать.
из документации: > In contrast, numbers like 1.1 and 2.2 do not have exact representations in binary floating point.
Алсо вот как я поборол неточный подсчет длины моей балки - просто нахуй перевожу в инт с каменным ебалом. В рот ебал тех, кто придумал, что если оставить неточности во флоатах это будет хорошей идеей
>>2190474 Если родительский класс что-то знает о дочерних, то это какая-то хуйня у тебя получается: в строго типизированном языке создание родительского класса зависело бы от наличия дочернего, который в свою оченеь зависит от родительского. Запуститься там через всякие forward declaration'ы может и смогло бы, но это всё равно фигня какая-то.
>>2191925 >Если родительский класс что-то знает о дочерних, то это какая-то хуйня у тебя получается Не всегда, потому что иногда родительскому классу полезно знать, какие наследники есть. Это полезно для каких-то библиотек, ORM, реализаций разных протоколов и т.п. Вот в этих задачах вроде ORM используется.
Довольно частный паттерн, когда после определения класса делают его явную регистрацию в родительском, вызовом специального метода. Но в плане кода это как раз грязновато, мне кажется.
>в строго типизированном языке создание родительского класса зависело бы от наличия дочернего, который в свою оченеь зависит от родительского. Скорее всего что-нибудь есть в современных версиях. Потому что востребовано. Питон просто более ООП язык, в питоне класс это тоже объект, тогда как в компилируемых типизируемых класс это просто класс. Соответственно возможностей меньше.
>>2191889 В Python тип данных float реализован по стандарту IEEE-754 как число с плавающей точкой двойной точности (6464 бита) с основанием экспоненты равным 22. Реализация таких чисел заложена прямо в железо любого современного процессора. Поэтому float в Python работает как аналогичный тип данных double в таких языках программирования как С#, С++, Java и т.д. И имеет такие же ограничения и «странности». Так как float поддерживается аппаратно, быстродействие при использовании этого типа данных сравнительно велико.
Тип данных Decimal – число с плавающей точкой с основанием экспоненты 1010. Он реализован по стандарту IBM: General Decimal Arithmetic Specification, в свою очередь основанному на стандартах IEEE.
Тип данных Decimal реализован программно, поэтому он в разы медленнее типа данных float, реализованного аппаратно. Сам тип данных Decimal написан на языке С.
Тип данных Decimal оперирует числами с произвольной – задаваемой программистом, но конечной точностью. По умолчанию точность составляет 2828 десятичных знаков.
Тип данных Decimal неизменяемый. Операции над ним приводят к созданию новых объектов, при этом старые не меняются.
Еще одно следствие того, что Decimal реализован программно – его можно на ходу настраивать, как угодно программисту. Для этого есть контекст – объект, содержащий настройки для выполнения операций. Операции, выполняемые в контексте, следуют заданным в нем правилам. Для float все правила фиксированы на аппаратном уровне.
>>2192107 Просто старинный язык с++ может проделать все манипуляции по округлению под капотом, тогда как питонист обязан страдать хуйней в 2021 и писать все ручками. мимо автор скрина
>>2192114 Залетный обоссал местных знатоков, у которых флоат в С++ такой же, как в Питоне. Всё что нужно знать о местных долбоебах, точнее специалистах.
>>2192129 Так написано что типы данных одинаковые используются и в c++ и питоне. вот уже лет 40 какъ.
6/10 нельзя точно разложить на конечные двоичные дроби .
То есть, эта ошибка всегда должна возникать в данном наборе чисел в любом языке. но в c++ почему-то не возникает. округление при вводе или sum по-разному работают.
>>2192089 Для apl такое объяснение: APL has a default printing precision of 10 significant digits. Setting ⎕PP to 17 shows the error, however 0.3 = 0.1 + 0.2 is still true Полагаю, что в C++ то же самое
>>2185611 (OP) Ребят, как я понял те кто JS учат идут во фронт или бек, а как питонисты зарабатывают? Сккрипты просто пишут? Я не троллю, просто тупой. Объясните плиз.
>>2193140 >Скорость эквивалентна этому двухэтажному циклу? Что за странные и глупые вопросы? По-моему в таких случаях надо просто взять и написать тест, посмотреть на результат. Заодно посмотреть, сколько это в секундах и устраивают ли тебя эти цифры.
>>2193146 Ради интереса проверил, скорость реализации itertools.product практически эквивалентна скорости своей реализации с функцией-генератором из двухэтажного цикла и yield.
Как реализовать HashMap в Питоне, не используя dict и его производные? Очевидно что надо так же хешировать результаты при помощи функции hash() но как это все хранить блин?
>>2193180 Так же как и везде https://habr.com/ru/post/128017/ Только хз что использовать вместо массива с ограниченным размером. [None] * cap в голову сразу приходит.
Почему код из книжки не работает? Меня обманули? ;c Хотя если добавить параметр age при объявлении функции и задать ему значение None, то все работает..
>>2193385 Аргументы либо должны быть заданы яв>но, то есть как ты написал >Хотя если добавить параметр age при объявлении функции и задать ему значение None, то все работает.. Либо можешь упаковать их в словарь,
def build_person(first_name, last_name, kwargs): ____age = kwargs.get("age") ____if age и т.д.
Пример из книжки не работает, видимо это как всегда охуительный перевод, либо хуй знает как она 3 издания-то прошла без редактуры, лол. Чекни оригинал и читай лучше всегда на нём.
>>2193454 >>2193474 Я хз почему, но в пахомии пишут что это 3е издание, хотя по факту есть всего 2. Даже в этой книге >>2193454 написано что это второе издание. Хуй его знает почему переводчики решили накинуть +1 к цифре издания, но это факт
>>2193629 Я че-то не въехал: единственное препятствие для убирания GIL это питоновский Ref count, где объекты удалятся на основании числа ссылок на них. Почему б его просто бля не отключить? Помимо него существует еще один сборщик мусора, который запускается периодичски и также способен удалять даже объекты с циклическими ссылками
>>2194001 Да, тупой. Но меня успокаивает лишь то, что я до этого решал задачи несколько часов и просто устал, и тот факт, что это "продвинутый" курс. Изначально, на курсе для новичков от этого автора было 150к человек. Сейчас примерно 2к осталось. Я дошел и не отвалился. В конце концов, если долго бить стену, то она когда-нибудь треснет. Один хуй, мне либо в течении года учить питон и идти джуном за 30к, либо всю жизнь работать учителем в школе за 20к
Тут за просьбы помочь с лабой нахуй не посылают? Я сразу признаю, что тупой в плане математике и никогода не программировал.
>Декодирование методом контроля четности. >Вводится k – число символов в блоке и последовательность двоичных символов, длина которой кратна k. >Если кратность нарушается, то последние символы последовательности игнорируются. Окей, две переменных. Но вторая же бинарная, её как массив использовать? Тогда как на кратность проверять? >В каждой комбинации из k символов осуществляется проверка четности: если четность не нарушена, то первые (k-1) символов данной комбинации добавляются в результирующую последовательность, если же четность нарушается, то счетчик количества ошибок увеличивается на единицу. Тут типо должно быть ? for i in X if магия array + array2.pop(1) else error_count++ >По окончании декодирования всей входной последовательности символов результирующая последовательность, а также значение счетчика ошибок выводятся на экран.
>>2194106 Курсы от Бигик бесплатны. А загрузка файликов... Еба, это конечно ценный опыт (как я догадываюсь), но какой же это прошлый век на фоне Реплит или Степика.
Владею рус и англ. Если вбить в поисковики ПИТОН УРОК 1, то глаза разбегутся. Онлайн курсы, ютуб курсы, edx, coursera, материалы МФТИ, школа Яндекса...
Что выбрать? Хочу овладеть питоном в мастерстве, нейросети и дата саенс пилить, делать автоматизацию на моем телефоне и ноуте, и смарт-часах хочу запилит стартапы и стать мультимиллиардером тоже
>>2194263 Я не совсем 0. В вузе был с++, чуть на голанге обучалки проходил. Что такое циклы, массивы, поинтеры, слайсы, ну хеллоу ворлид или соритвроку массива могу сдеалть
Я автоматизацию скучного стаффа читал уже месяц назад, не зашло(хотя автоматизация процессов на моего телеофне и пк мне как раз интересна). долгая книга
>>2193489 >Мы понимаем, что многих удивляет то, что мы выпустили третье издание книги, а оригинальная книга 2ed. Причина такого казуса проста. Через полгода после выхода первого издания на русском языке автор внес в книгу значительные, но мелкие изменения, исправил многие коды. Посмотрев на количество изменений, мы приняли решение назвать новую книгу «второе издание». Так что второе русскоязычное издание вышло еще 30 мая 2017 года. А теперь 2-е международное издание пришлось выпустить как «Изучаем Python: программирование игр, визуализация данных, веб-приложения. 3-е изд.»
Вот код для небольшой пиксельной картинки, сделанной с помощью matplotlib. Однако, тут только желто-сине-зеленая цветовая гамма. Можно ли поменять это по-быстрому и использовать другие цвета?
>>2194383 Я это уже видел. Спасибо, конечно, но я надеялся на какого-нибудь спеца, который допишет строчку и все встанет на свои места. А иначе придется разбираться с тем, как все это рабтает, очень долго и муторно.
Нашел работу в беке на питон. Язык ужасный, но уж куда взяли, хотелось бы на го. Есть начатый апи с примерно штук 20 методов, написанных на джанго. Я тут вкуривать начал в тематику и понял что код написан не очень. Есть один маршрут, который принимает параметры и в соответсвии с этим вызывается обработка. Т.е это одна функция и куча if с кусками кода. Причём все запросы идут через get. Работа с бд идёт напрямую, без всяких темплейтов и тд.
Так вот. Стоит ли заморачиваться и переписать всё по общим рекомендациям? С развязкой роутов, использования post и тд. Просто не знаю, может это нормально так писать.
>>2194492 А че рекомендации есть как писать надо? У меня было так, посадили за комплюхтер, примерно структуру проекта обсудили, а дальше крутись как хочешь. Ты еще скажи тебе техзадания давали.
>>2194492 >Так вот. Стоит ли заморачиваться и переписать всё по общим рекомендациям? Конечно нет, ведь ты нарушаешь open–closed principle и заставляешь QA отдел ебаться с твоими переделками, сделай лучше api/v2/
Хелп с комбинатрикой В Питоне в itertools есть: permutations, combinations и combinations_with_replacement. Сколько комббинаций он выведет в каждом случае в зависимости от аргументов? Для permutations это очевидно - n! (где n - длина последовательности), но что в других случаях?
Может мне кто нибудь пояснить за асинхронность? У меня есть два скрипта которые работают в цикле while true Я думал что их можно объеденить, написал скрипт, но await foo() await bar() запускает только foo ЧТО ДЕЛАТЬ ТААА??
Ононы, суть программы в том, что я беру из файла строку, подставляю ее в скулевый запрос и выдаю некоторые данные из этого запроса принтом. Если в файле значения адекватные, то и данные адекватные. Но если в строке внезапно попадается значение, которое приводит к тому, что скулевый запрос возвращает 0 строк, то процессинг все равно продолжается, просто подставляются значения из предыдущего
Из программы первого курса я вспомнил, что можно обнулять переменные через del либо присваивая им None. Но почему-то Node_id = None работает, а Node_id, Node_uri = None уже нет
1. Если вы поняли, что делает моя программа, то мб подскажете как иначе обрабатывать пустые результаты? 2. Если похуй, то просто скажите в чем я наебался при одновременном обнулении нескольких переменных
>>2195012 На выводе первого скрина например 5-ая строка была с говноданными, которые вернули 0 строк по запросу. Но переменная Node_CurrentCP все равно пропечаталась (просто из более верхней строки)
>>2195019 >>2195086 Смари. У тебя пустой список на пятой строчке. Значит, все занчения переменных сохранились с предыдущей итерации. Потому у тебя происходит то, что происходит. Если тебе нужно опускать пустые массивы, то просто напиши if fn_results:
>>2195150 Я не байтоёб и не знаю, почему твоя ";" меняет поведение. Я вообще ею никогда не пользовался в питоне и не знаю, что она даёт. Можешь сам поискать ответ. Гугл у всех есть пока что Для распаковки, кстати, аналогичный эффект.
>>2195172 Ладно, извини пожалуйста. Ты доказал мне, что можешь сравнивать инты через 'is', а я был не прав. Если ещё какое открытие в области питона сделаешь, приноси сюда. Мы всем тредом похлопаем твоей охуенности
>>2194598 Блять, как же у меня полыхала жопа с этой хуйни, переписывал старый чужой проэкт (мне нужна была его функциональность, но немного надо было переписать), на питоне я никогда не писал, пришёл с си подобных языков. Хуярил лямбду в цикле, расчитывая, что для каждого обьекта захватятся свои переменные, какое же моё удивление было, когда захватился один и тот же объект для всех. Так как проэкт чужой, то пошёл по миру перепроверять цепочку вызовов, переполошил весь проэкт. После того как жопа уже потухла, так как я тупо устал. Подумал, а вдруг скоупы в питоне "как не у всех", вбив в гугл "weird python scoping" моё лицо раздалось широкой улыбка, так как первая страница с заголовками ответа поиска, намекала, что я точно понял в чём проблема.
Но если коротко, то в питоне скоупами являются только функции и глобальный скоуп (по крайне мере, что я запомнил, может что ещё есть), на практик правда забавно, что можно обьявить переменную в ифе и потом её использовать ниже вне ифа, экономит 1 строчку.
>>2195186 В питоне есть мнемонические правила, как он работает. LEGB для скоупов - local, enclosing, global, builtin ICPO для объектов - instance, class, parent, object Легко запоминается. А ходить со своими привычками в чужой язык это рисковое занятие.
>>2195202 > Легко запоминается. А ходить со своими привычками в чужой язык это рисковое занятие. Кажется мы стали забывать, что такое риск...
Потратить один раз лишние минуты, на выяснение проблемы, и нахождение решения, это риск? Вот на двач зайти - это риск, так как лишние минуты (часы) будут потрачены не раз.
Всем привет, описываю БД через django ORM. Вопрос, есть у, допустим, CharField, я могу задать ограничение на максимальную длину для БД (max_length), стоит ли добавлять сюда джанговскую валидацию Validators?
Какие плюсы в этом есть? Если у меня на фронте идет валидация на длину?
>>2195416 >на фронте идет валидация На фронте не может быть полноценной валидации, ты должен всегда учитывать, что тебе данные могут придти напрямую через апи фронта. Любые данные.
Вообще, если ты используешь специфичные поля, то у каждого есть валидация на уровне джанги. Условно если EmailField, то рандомную строку ты не сохранишь. Аналогично должно быть и с длиной строки.
Кроме того, если у тебя не sqlite, а postgresql/mysql, то ещё на уровне БД валидация будет.
>>2195097 Магии много. Очень много. Работают ещё оптимизации на уровне питона, которые разные в зависимости от версии.
Вот скрин сравнения версии 3.6 и 3.7. Один и тот же код даёт разный результат. По байткоду видно, что с одной стороны, питон всё-таки заранее вычислил константу, но в одном случае не увидел, что это две одинаковые константы и сохранил их в разные места, в другом случае провёл оптимизацию и дублирующую константу выкинул.
На уровне idle происходит подобная магия. Если ты одну строчку выполняешь, то компилятор видит, что константа одинаковая, и использует один объект. Если же ты используешь несколько команд idle, то каждая строка компилируется отдельно и переиспользования констант не происходит.
Хотел заиспользовать одну питоновскую программу, но возникли какие-то ошибки с typing.Optional. Короче, на скрине видно (закомментированная строка это была нижняя), как я пропатчил код в модуле, а вот ошибка, которая возникала без него: fairseq-interactive: error: argument --path: invalid typing.Optional[str] value: 'wmt14.en-fr.fconv-py/model.pt'
Теперь-то всё работает, но так делать неправильно. Можете сказать, в чём могла быть проблема? Может в новой версии питона всё как-то поменялось?
При чём другие аргументы тоже строки, но они прошли без проблем: fairseq-interactive --cpu --beam 5 --source-lang en --target-lang fr --tokenizer moses --bpe subword_nmt --bpe-codes wmt14.en-fr.fconv-py/bpecodes --path wmt14.en-fr.fconv-py/model.pt wmt14.en-fr.fconv-py
Менять строку на любую другую, со слешами, без слешов, кавычки, глобальные пути, всё это не помогало
Блятб, идёт нахуй этот ваш asyncio Хотел просто объеденить два/три скрипта в один, что бы мне не нужно было запускать их по отдельности Была очередь, нужно было делать запрос (который длится 10 секунд) и добавлять ответ в очередь, снова делать запрос, а пока происходит запрос обрабатывать всё что в очереди, слать post методы, которые тоже сука приостанавливают главную программу у меня бомбит, ебал я ваш питон, ебал я ваш asyncio, какого вооще хуя в питоне есть зарезервированные слова для использования которых нужно импортировать библиотеку?
>>2195918 >Хотел просто объеденить два/три скрипта в один Как именно ты это представляешь? Как бы ты стал объединять например "два-три скрипта на жс" в один? Делай multiprocessing, поднимай 3 процесса и гоняй между ними данные через Pipe (гугли)
>>2195924 У меня есть 2 скрипта, один принимает данные из телеграма, Второй отправляет их в телеграм Это допустим можно сделать в один цикл, да, но меня реально не устраивает то что пока идёт какой нибудь http запрос моя программа останавливается, а вдруг у меня будет 100 сообщений которые мне нужно будет перенаправить в телегу? каждое займёт ну допустим хоть по 100 мс, вместе дохуя Я думал asyncio сделает что то вроде того что запустит отдельный процесс с выполнением функции который потом самоуничтожится хотя я даже не знаю как тогда данные то возвращать, но это допустим сейчас неважно
Всем доброго здравия, подскажите, а я могу доверять coverage? Если он показывает 100% у пакета моего покрытие тестами, то значит я ОТ всех ошибок в этом пакете защитился? Или он достаточно топорный и мне нужно еще придумывать чтобы сломать?
Кстати, заметил, что в каждом треде обязательно 3-5 вопрсов именно про асинк и параллельные вычисления. По ходу эти темы это своеобразное "бутылочное горлышко" для вкатунов.
>>2195930 >Я думал asyncio сделает что то вроде того что запустит отдельный процесс Ты откуда? Из жавы? Асинхронка это про другое. У тебя event-loop в котором твои асинхронные корутины крутятся и ожидают завершения исполнения. Спасает только от IO-bound задач, но не от CPU-bound
>У меня есть 2 скрипта, один принимает данные из телеграма, Второй отправляет их в телеграм Не совсем понял что тебе нужно передать а что принять. И как именно ты передаешь их туда. Исполнение множество корутин/Future разом делается как тебе уже ранее подсказали: >>2194860 Можно попробовать юзать asyncio.Queue - кладешь в эту очередь данные по мере того как тебе приходят ответы а в другом месте через await вытаскиваешь оттуда данные и обрабатываешь как тебе нужно. Я хз что там именно у тебя творится
>>2195942 Им и в синхронном коде обдристаться раз плюнуть. А вопросы идут из-за идиотских современных хеловорлдов в виде телеграмных и прочих ботов, которые асинхронные бай дизайн.
>>2195918 >пока идёт какой нибудь http запрос >которые тоже сука приостанавливают главную программу А не делаешь ли ты этот запрос синхронно, случаем? Потому у тебя и корутины тормозят. Юзай aiohttp и будет всё хорошо. Ну или бери да треды запускай, раз уж eventloop не понимаешь.
>>2195988 >Так фиксится Не надо вот так писать. Просто не надо. Все эти add_done_callback не для этого, не для такого адского микса корутин и коллбэков.
>>2196348 Пиздец ты придумал чтение и запись вложить, лол. Сделай через r+ Алсо, если оно у тебя наебнулось на операции с файлом, то вряд ли то же сработает в эксепте.
Есть класс А и рядом лежащий класс B. Внутри B есть метод Bplus, который, по моей задумке, принимает на вход объект класса A. Тем не менее, код не работает. Очевидно, я проебался в чем-то очень фундаментальном, но кто-нибудь, объясните пожалуйста, как классы должны общаться друг с другом в таком случае?
Не понимаю, как использовать типы в апи телеги. Их указывать в параметрах запроса, как вложенный словарь, например > params ={"chat_id": 12345678, "text": "qwerty", "InlineKeyboardButton": {"text": "qwerty"}} ?
Подкиньте идей для пет-проекта в портфолио. Из пожеланий только 2: 1. Не мелкоборда на джанге с 5к запросов/наносек. 2. Что-нибудь с датой (скрапинг, аналитика, тупо ETL но это скучно)
Кому не сложно - поясните по алгоритму: 1) в папке http сервера появляется файл 2) для этого файла надо сформировать короткую ссылку 3) когда по короткой ссылке обратятся - надо декодировать ссылку и отдать файл с сервера
Как преобразовать полную ссылку в короткую для локального http сервера (нет доступа в интернет)?
Нашёл модуль https://pypi.org/project/short_url/ Но он принимает какой-то id в виде числа. А ссылка на скачивание строка же... Wtf? Или надо устанавливать соответствие между id и полной ссылкой? Например, запихнув полную ссылку в массив и отдавая номере элемента в массиве при кодировке?
>>2198736 Берешь хеш от имени файла, если оно уникально. Обрезаешь до нужного размера, кладешь в словарь/бд. Со следующим файлом делаешь так же, только перед этим нужна проверка, что бы коллизий не было. Если получился такой же хеш, то рандомом генерируешь соль для имени и опять применяешь хеш функцию. Самая простая реализация.
>>2198873 И сколько раз тебе на практике приходилось писать сортировку, кроме случаев дрочильни "кто напишет сортировку"? Ах да, никакой практики у тебя нет.
>>2198899 Я тебе и отвечаю - это чисто теоретический вопрос, который не нужен ни в питоне, ни в любом другом языке. Некоторое количество людей может вспомнить простейшие способы типа вставок, потому что читали мимоходом и помнят принцип. Но в целом это бесполезное знание в современных условиях.
>>2198919 Ладно, официально отвечаю от имени всех питонистов нашего региона - хуй знает. Ну и как дополнительная информация к размышлению (хотя ты что-то слабо воспринимаешь) - всем похуй на это.
>>2198923 Ладно, не злись, я просто неделю писал инженерную программу по расчету конструкций, а сегодня ввел в поиске гитхаба пару ключевых слов и нашел десяток аналогичных реализаций. И че теперь делать?
from celery.app.task import Task class MyTask(Task): ...
Логгирую всё через handler = logging.FileHandler(path) DEFAULT_LOG_FORMAT = '[%(asctime)s] %(processName)s %(moy_zagolovok)s %(task_id)s %(message)s'handler.setFormatter(CustomTaskFormatter(DEFAULT_LOG_FORMAT)) logger.addHandler(handler)
Мне в заголовок нужно пропихнуть параметр, moy_zagolovok. Как это сделать? Т.е. я могу прямо в момент вызова async_callback получить его значение. Можно как-то?
>>2199756 Это не тот path, это для бинарников уровня системы. Питоньи либы сидят в PYTHONPATH, но лучше прямо туда не лезть, а из самого питона манипулировать. https://ideone.com/gCj381
>>2199756 Не слушай >>2199762 Лучше наоборот, добавить в PYTHONPATH Если ты переменные окружения читаешь откуда-то, типа применяешь виртуальное окружение, то туда и добавь export PYTHONPATH=$PYTHONPATH:/My/path
Сап Делаю свою веб-галерею на джанге Столкнулся с такой проблемой: длинные видео не загружаются сразу, а как будто бы они с удалённого сервера, хотя они у меня лежат в статике. В чём проблема? Из-за того что использую стандартный сервер для дебага?
Реализую алгоритм RSA. Хочу использовать ключи побольше, длиной в 64 бита, но тогда придется проводить миллиард операций. Как это обычно делается? Какой e стоит брать
Не боялись ли вы обосраться на работе? Устроился пайтон джуном, работа стратует через неделю, все отлично по условиям, но вот я боюсь что мне дадут тяжелую задачу и я не смогу справиться, или потрачу больше времени чем надо и т.д.
>>2200512 Чел... Пытаешься сделать сам. Если тупишь - идешь к мидлу. Потом к сеньору. Потом честно признаешься, что не справляешься. Ловишь некст таску.
>>2200512 скрючиваешь ебало, что так и было задуманно, не баг а фича у нас так все руководство делает, это так называемое искусство переобуваться на лету
Пацаны, на собесе спросили как лчше всего представлять графы, я сказал что либо матрицей смежности либо через словарь (ключ - Node, а значения это словарь где каждая связанная Node соотносится с весом ребра). Меня спросили в каком случае что лучше юзать, например для алгоритма Дейкстры, я усрался. Так что когда юзать?..
>>2200719 Для Дейкстры второе, но с нюансами, например, для разреженных графов. Нужно смотреть на смежные с данной вершины, вместо того, чтобы за О(V) просматривать всю строку матрицы, используя список (хз как твой словарь устроен), сделаешь это быстрее. Но если граф плотный, асимптотика будет одинаковой для обоих случаев. Для Флойда-Уоршала лучше матрицы. Если хочешь юзать кластеризацию, в ряде случаев лучше матрицы, иногда нужно смотреть на их свойства. Короче, тут очень много особенностей.
Посоны, есть один список списков. нужно убедится, что все списки в нем одинаковые. Пока список маленький делаю l[0] == l[1] == l[2] == l[3] Искал в гугле можно ли это сделать как то короче, но чет ничего интересного красивого однострочного не нашел. Есть какие варианты или функцию с циклом пилить?
>>2200820 А почему нельзя каждый список после первого сравнивать с первым, и когда условие не выполнится, то возвращать False, а если все списки равны первому, то по выходу из цикла возвращать True?
>>2200828 Можно. Но как првило какую бы хуйню я не делал. потом выясняется что в питоне есть отдельная функция вот прям для того что я сам мастерил. Хочу узнать все такие фичи для общего развития.
>>2201035 Надо определить, все ли элементы списка одинаковые. Какое отношение к этому имеет твоя хуйня с слайсами? Но пафосный камент надо влепить, да.
>>2201050 Ну давай посмотрим. Ты хочешь сравнить слайсы от второго до последнего элемента и от первого до предпоследнего. Каким боком это решает задачу? Ты на шизу проверялся? Там вроде подобные методы тестирования.
>>2201087 Не, он типа взял список списков, отразил его порядок и сравнил с самим собой. Выглядит эффектно, но жопой чую, что здесь можно влепить какой-то хитрый тестик, который опрокинет это решение.
>>2201092 тогда надо сравнивать сам список как есть с [::-1]. Он же написал хуйню. Но это тупое решение, потому что генерируется целый новый список в обратном порядке.
>>2201087 Дамы и господа, перед вами живое воплощение пикрелейтеда.
Лол, ты смотришь на одну (!) строчку кода из трех операторов и уже не понимаешь, что происходит. И даже в голову не приходит банально запустить ее, чтобы посмотреть результат.
>>2201092 >отразил его порядок >[1:] >[:-1] >отразил его порядок Боже, оно дает митостазы
Это просто сравнение каждого следующего элемента с каждым предыдущим, что и есть способ проверить все элементы на равенство.
>>2201097 >в обратном порядке Иди синтаксис выучи, потом пиши сюда.
>тупое решение, потому что генерируется целый новый список Взятие слайса реализовано на си. Ваши варианты - питоновые циклы. Память на слайсы расходуется по-минимому, так как это не deep copy.
>>2185611 (OP) >Питон сам по себе очень хорошо задокументирован Ложь. Документация непрактичная и потому бесполезная. Питон по сравнению с PHP выглядит как велосипедный набор сделай сам протиив люксового авто. Алсо, реквестую документацию на питон подобную php.
>>2201027 А я правильно понимаю, что если например мы возьмем список списков из 7 элементов-списков и 3 первые и 3 последние будут одинаковые, а 4 по порядку (который по серединке) будет отличный, то такой метод вернет True?
>>2201173 Так у тебя после обработки слайсами выходит список с четным числом элементов. 6 элементов, а в оригинальном списке было 7. Куда еще 1 элемент дел?
Кажется у нас тут мы вам перезвоним кейс нарисовался.
>>2201196 Нахуя читать такие книги, если для вкатывальщиков уже подвезли все на ютуб, особенно на инглише? Ладно бы сейчас был 2002 год и у тебя была на руках книга Страуструпа, но сейчас нахуя?
>>2201225 На ютубе может любой долбоеб выкладывать видео, и делает он это только для монетизации. У книг другой уровень входа, другая традиция и другая финансовая составляющая.
>>2201259 Если так подумать, то мы платим временем. Если бы были курсы, которые готовы сэкономить человеку время за деньги, то это ок, но есть ощущение, что курсы как раз набивают программу ненужной херью.
>>2201262 Это просто ответ на современную ситуацию, когда подсевшие на телевизор-ютубчик не могут сосредоточиться больше пяти минут на чтении. Плотность информации снижается, конечно.
Анон, помоги разобраться. Я забираю из апи кучу типа жсонов (по факту словарей). Эти словари на уровне веб-запроса имеют везде двойные кавычки: { "key1":"value1", "key2":"value2", } Но когда я продолжаю работать с ними дальше, ключи заворачиваются в одинарные кавычки. Из-за этого я не могу их нормально десереализировать - мне жизненно нужно сделать их жсонами (json.loads())), но я получаю ошибку из-за одинарных кавычек. Почему так? Я уже думал реплейснуть одинарные кавычки двойными, но во многих значениях у меня уже есть одинарные кавычки (в значениях лежат всякие тексты с сокращениями типа I've, you're и т.д.), так что я не могу не задеть их реплейсом.
>>2201291 >ошибку из-за одинарных кавычек Смелое заявление. Саму ошибку ты, конечно, не покажешь.
По факту: кавычек не существует, ты воюешь с ветряными мельницами. В жсонах это часть формата данных, ты на него не влияешь. Преобразованные в словари жсоны имеют ключи в виде готовых строк. Итого кавычки тебе могут встретиться только если они реально были внутри какой-то строки в жсоне, и они остаются нетронутыми при десериализации, и вряд ли требуют какого-то твоего вмешательства.
>>2201509 >День тґеты, как начал ызучац энто ваша погромырованне. Не знал, что это можат быц так весело. Можаця обоссывац, но цем можно развыц эту хуйню? Сэйм шыт. Даж плугин для броузера написал. https://greasyfork.org/ru/scripts/432951-rufuker-2ch
>>2201522 Ты хоть в курсе что все эти рандомы работают на одном random.random() ? Жаваскриптеру не нужны эти лишние обвязки, ему нужен только Math.random() и его громадный хуй. Все нахуй
>>2201660 1. Хуй бы ты что мне сделал, пес 2. Переменные вычисляются заранее и потом вставляются в f-строку ебана, ты сам же туда их нахерачил а потом ноешь