24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: 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
Переписал одну веб-тулзу для работы через async, получил 60%-ое уменьшение времени исполнения, охренел и до конца не понимаю, как это работает. Скрипт по сути что делает: принимает некий текст, сплитит его по заданному ключу, посылает запрос на API, сообразно с ответом оттуда переделывает кусок сплитнутого текста, потом джойнит эти куски текста из массива в строку и её возвращает. При этом await, естественно, к запросу на API присобачен. Спрашивается, как так получается, что куски текста по итогу оказываются склеенными в нужном порядке, если запросы на API, без которых невозможно начало их переделывания, посылаются не по порядку? ЯННП.
>>1967054 Лучше бы код скинул, конечно, но вероятно джойнит куски он в конце, когда все ответы получены, а запросы из-за асинхронности делает по сути одновременно
>>1967041 >Че там по питону 4 есть какие-нибудь задумки? Что вообще планировали в него выкатить? Питон 4 не планируют выкатывать вообще. В этом нет необходимости. Будет 3.10, 3.11, 3.12 и так далее.
Цель третьего питона была даже не в том, чтобы много нового принести, а в том, чтобы убрать мешающее старое.
>>1967058 Вероятно-то оно вероятно, но хотелось бы понимать, что это за вундерваффе. Сейчас я ещё больше удивился, потому что рераны теперь показывают вдвое большее время исполнения. Хотя, тут, может, API искусственно снижает пропуск. Код не покажу, потому что там жесть.
>>1967099 Тебе нужна хитрая прокся, nginx скорее всего только в платном варианте плюс так умеет. В момент деплоя подняты две версии одновременно и прокся все новые конекшены переваливает на новую версию. Дальше ждёшь когда старые конекшены отвалятся и гасишь старую версию. В кубернетесе эта херня из коробки есть, даже без nginx plus.
>>1967018 (OP) На связи фуллстек макака: питон (aiohttp/sanic) + жс (ангуляр) 9 месяцев назад вкатился, сейчас думаю менять работу чтобы не застрять на одном месте (и апнуть зп конечно же). Как посоветуете выбирать проекты, чтобы не продаться за дешево или не сесть за неликвидное гавно? буду также идти фуллстеком пока либо только в бэк, как получится
>>1967203 Ангуляр и питухон? Это где такое просят?
Общался тут по поводу нейронки, ребята на Django/Flask все нахуячили и продают. Я хуй знает что советовать. У меня одни ожидания, а по факту FastaAPI который я более менее знаю нахуй никому не всрался. Сижу пердолю интеграции-эмуляции. Смотри че там у Яндекса по стеку, они питон любят.
>>1967208 Этот чорт больше не имеет право голоса. Лучше бы посмотрел как perl 6 делался. Никаких секс утех с совместимостью. Просто новый язык, а гвидо не смог так
>>1967213 статистика по ХХ за неделю, ДС 6 вакансий «sanic» 25 вакансий «fastapi» 47 вакансий «aiohttp» 52 вакансии «asyncio» 97 вакансий «flask» 184 вакансии «django» 2 247 вакансий «python»
Причём в случае fastapi и некоторых других там больше через запятую.
Джанго свой индустриальный фреймворк, это одна песня.
Flask по-прежнему популярен только потому, что у асинхронных фреймворков ПОКА тяжеловато с ORM, соответственно там сложно делать что-то, что использует сложные SQL базы под собой.
Вот когда логика больше не на SQL завязана, тогда асинхронные фреймворки уже стреляют прилично.
>>1967244 Нет прямой связи. Людям хочется юзать что-то простое. Перл с первого взгляда никогда не был простым, хотя на деле не сложнее крестов, просто с парой фич. Ты даже не запустишь простой пример perl 6 на perl 5 Зато в питоне в модулях вставки if sys.version_info >= (3, 0) вот это современно, вот это классно.
>>1967257 Без этого бы не было уже произошедшего массового перехода на 3. (который даже так происходил весьма туго) Пиздец, как можно этого не понимать?
Аноны, хелп, у меня уже жопа горит, проблема с джанго, я частенько переделываю модели и проблема возникает, когда я начинаю делать связи, например, если сначала сделал модель через внешний ключ, а потом поменял на 1к1, либо наоборот, ххочу сделать миграцию, удаляю все строки из таблицы заранее, потом мейкмиграшонс, он говорит что для уже созданных записей нужно прописать дефолтное значение, но записей нет, я перепроверяю, потом вписываю рандомное значение и у меня получается сделать миграцию, потом я пытаюсь ее применить, но теперь джанго говорит, что я дурак, потому что теперь у этих несуществующих строк несколько дефолтных значений и не дает применить, иногда помогает удалять миграции и создавать заново, иногда приходилось тереть бд, но это ведь не нормально, подскажите какие хинты использовать и как это фиксить, а то я устал танцевать с бубном каждый раз
>>1967333 >Чем же там "гавно"? >АХАХАХ ДА ТЫ ЖЕ ЖИДБРЕЙНС ЮЗАЕШЬ)) ГОВНА НАВЕРНУЛ АХАХАХА >Нет, ты нормальным языком можешь пояснить, что там не так? >ЯРЯЯЯ СЛИЛСЯ! СЛИЛСЯ! ГОВНОПОДЕЛИЕ ЗАКУПИЛ И СЛИЛСЯ АХАХАХА
>>1967330 Господи за что, есть таблица в бд, но в ней нет колонки id, я удалил миграции, создал заново инитную, в ней написано что у таблицы есть id, пытаюсь мигрировать, но колонка не создается, в бд не появляется, пишет что все окей, дропнул таблицу, все равно пишет все окей, все нормально, как с этим бороться?
>>1967337 Поясняю. Индексация проекта отжирает кучу ресурсов. Фоновые процессы работаю, которые мне не нужны. Полное отсутствие модульности. Вот поебать что ты не пользуешься встроенным db navigator, т.к. он убогий, он будет висеть. Без принудительной ревалидации кеша - никуда. Порой просто не в состоянии найти модуль в проекте. Ломается модуль - ломается ide. Ну и самый смак. 90% этих иде содержат один и тот же функционал. Ты скачиваешь одно и тоже, за исключением автокомплита и анализатора, которые теперь выносят в ls для любых редакторов, для любых языков.
>>1967348 >интерпретатор на удаленной машине >если она на Windows Проблемы админского говна любого нормального разраба не ебут. Обмажься своим вимом, отойди в сторонку и не мешай Big Guys разруливать проблемы
Я могу проверить наличие какого-то элемента массива с помощью if some_element in list: Какой самый лучший способ перебрать несколько элементов для проверки, кроме if some_element in list and other_element in list and another_element in list?
>>1967346 В общем судя по всему это просто баг, до сих пор не понимаю как именно иногда получается создавать pk на onetoonefield, но чаще джанго начинает ругаться что id столбца нет и самый простой вариант это назначть дефолт и убрать в файле миграции этот дефолт и потом мигрировать
>>1967350 >JetBrains >BigGuys >На каждый язык та же хуйня на жаве что и IntelliJ >неоптимизированный комбайн тащит за собой логику для Java IDE >ряяя топчег за свои деньги говна наверни, макака Ты из тех "у меня на локальной машине работает, мне норм".
С ооп проблемы. Можно ли создавать неограниченное количество экземпляров классов? Или как-то хранить их данные. Создал класс с init методом. Дальше в коде делаю так card = Bank(a, b) (a,b - инпуты) А можно ли сделать, чтобы если я заново ввожу этот инпут (в вайл тру) то создавался новый экземпляр, а не перезаписывался старый.
Аноны, есть задача в которой мой сервис на дрф должен выдавать ответы только по пермишшонам на аутентификацию, есть сайт на который сервис будет встраиваться и на нем реализована какая-то аутентификация, какой самый обычный способ связать эти 2 сервиса? Очевидно нужны токены, есть возможность в джанге вообще перееопределить юзера так, чтобы сохранялись только токены и если человек передает токен в заголовках, то получает ответ? Пока туплю и приступать не сегодня к реализации, поэтому лениво прошу вас подсказать, может можно как-то заменять request.user на токен автоматически при каждом запросе?
>>1967232 >>1967217 Perl 5 жив, последнее обновления вот было в январе этого года, более того, пилят новою версию Perl 7, которая будет продолжать традиции пятой версии, а Perl 6 переименовали, теперь это Raku, слишком уж другой язык получился.
Нужен совет умных людей. Есть класс один. class A: _pass
class B: _def __init__(self, args, *kwargs): __self._own = A()
Мне нужно не меняя класс A, дополнить его, чтоб везде, где он использовался, он был расширен парой методов и переопределены пара существующих. Наследоваться, дополнить и заменить везде не могу по причине, что не могу поменять импорты. Выносится в отдельный модуль.
>>1967179 Нет, не быстрее. Твоя бизнес-логика перекроет на несколько порядков быстродействие фреймворка. Хоть ты на чистом си напиши фреймворк с миллионами попугаев в секунду, всё это быстро станет ненужно.
cmd и python. Помогите ради довольства Всевышнего ВелосипедаАноним15/03/21 Пнд 21:03:42#74№1967786
Суть в том, что я пытался сделать bat файл (нужно, чтобы экономить время), в котором есть 3 сценария: 1) открытие cтандартной IDLE для питона 2) открытие пыхчарма 3) открытие индусского учебника
Но открывается только IDLE, хотя остальные пути прописаны в таком же синтаксисе. При этом добавляя про оставшиеся два путя, что не они являются внутренней или внешней командой. Как сделать так, чтобы все 3 сценария запускались?
>>1967964 Для себя подчерпнул пропущенные моменты, спасибо, правда есть мнение, что лучше после изучения питона перед бд, вебом, фреймворками и гитом изучить линукс, очень много проблем отпадет, вспоминаю как на винде ебался с mysql по началу, страшно представить, какие-то окна непонятные, какие-то подключения и тоже самое с гитом, пока не понял что такое терминал было страшно с гиту подступать. Так же читать книги в запой я думаю очень глупо, сначала учишь основы, узнаешь в общих чертах о возможности(типа асинхронность), а уже когда придет подходящая задача идешь в документацию и гуглишь всю реализацию. А читать с нуля книги, кроме укуса питона не стоит имхо, это скорее справочники, особенно забавно где-то видел в начале книги страниц 49 по импортам в питоне, а человек скорее всего даже пару месяцев не будет вообще ничего импортить и в итоге забудет напроч
>>1967956 У нгинкса проблема в том что если апстрим недоступен, нгинкс падает полностью. И dns resolve апстримов присходит только один раз при запуске/перегрузке конфига. Уж лучше траефик какой-нибудь.
>>1967997 Ну я и указал что книги можно не читать, я вообще обычно пролистываю и записываю важные части, не особо вдумываясь, чтобы потом прочитать и понять. С линуксом радикально решил, переехал на коляску сначала, сидел на ней месяц, потом накатил арч+i3 и поебался с настройкой, думаю файлик как че делал тоже на гит запилю.
>>1968014 Хз на счет настроек, я один раз накатил убунту и в ней хватает всего абсолютно, разве что грузится дольше винды по ощущениям, так что всем начинающим советую просто ставить 2-ю ось убунту и копаться в терминале, станет гараздо понятней и как ос работают и как с программами можно взаимодействовать
>>1968038 Ну хуй знает. Десктопный линупс это ебля с установкой-драйверами и с иксами. Самое бесполезное практикующему девелоперу. А что ты потом запустил тот терминал, что путти, разницы нет. Запускаешь себе виртуалбокс бриджем и дрочи тот линукс сколько влезет без лишней шелухи.
Обёртка это декоратор. Или middleware в терминологии веб-фреймворков. Декоратор подволяет сделать с данными, которые куда-то передаются, перед вызовом, и с результатом после. При этом функция, которую ты вызываешь, ничего про твою деятельность не знает, это не её забота.
Хук принципиально другое, хук проектирует разработчик, он вставляет специальную функцию внутрь кода, которую ты можешь при желании вызвать и тем самым вмешаться в процесс выполнения.
>>1968120 А их нужно сравнивать? Регистрация хука может быть выполнена в виде декоратора. Хук чаще всего это такой слот, в который ты можешь вставить свой код, но слово общее и точного определения нет. Примерно из той же оперы что entity, helper, handler, слова которые почти ничего не значат.
Есть вот такая хрень сорри за скрин, выдаёт последние сделки с биржи, как можно реализовать нахождение двух похожих чисел из разных словарей в диапазоне +-1%?
>>1967280 >VIM(учишь дольше чем питон) Неправда. Чтобы просто редачить текст с минимальным конфигом - достаточно одного/двух вечеров. в моем случае правда потребовалась неделя, ибо у меня деменция. Делать из вима полноценную ide затея конечно сомнительная. Очень многие люди просто накатывают вим плагин поверх любимой идешки. У меня вот и вскод и пичарм с вим плагинами. Зачем? -Быстрые замены, удаления, правки текста и вот это вот все... Ещё на сервере править конфиги вимом куда удобнее, чем нано. Многие вещи в нем сделаны действительно очень классно, рекомендую кароч!
>>1968365 >Как вкотиться в удаленку на питоне и есть ли вообще шансы найти её при условии, что знаю питон и джанго/фласк? Без бекграунда в офисе почти никак, джуны на удаленке нахуй не нужны
>>1968506 я работал в веб-студии, хорошо шарю в вебе как сеошник, верстала и тестер. или ваще вкатиться в пхп и ларавельку и через месяца 3-6 уже брать заказы на апворке и быть миллионером?
>>1968788 Типа, ты пишешь, что x = 1 и y = 1, а потом удивляешься id(x) == id(y) возвращает True? Дело в том, что числа в питоне это неизменяемые объекты, он не создает две разные единицы, обе переменные, x и y, они ссылаются на один и тот же объект, число 1. Вот если ты напишешь x = [] и y = [], то id(x) == id(y) будет False, потому что списки это изменяемые объекты, и питон два раза создаст новый список.
>>1968951 Там сложнее с тем, как область видимости устроена. Почитай про mro и т.п.
Суть в том, что у тебя есть переменая класса, например balance
У тебя есть объект, класс Bank. Это тоже объект, у него есть свои переменные, balance и другие.
Ты используя этот класс создаёшь новый объект b = Bank() например
Это другой объект типа Bank, у него свой набор переменных.
Если в b у тебя не определена переменная balance, и ты обращаешься к ней, то питон сначала лезет в переменные b. Он видит, что переменной с таким именем не определено. Тогда он дальше лезет уже в класс Bank, и берёт переменную оттуда.
То когда ты записываешь в переменную, пишешь код self.balance = 100 то питон смотрит объект b, и если там нет этой переменной, то он не лезет наверх, а создаёт переменную с таким именем в объекте b
>>1968973 >Bank.create_card() Тебе надо почитать про объекты в питоне. Доля магии есть, вот с наследованием, разрешением имён и т.п.
В целом же всё просто. вот у тебя есть класс Bank class Bank: .... ____def print_balance(self, text): ________print(text, self.balance)
my_card = Bank(balance = 10000)
И my_card, и Bank это объекты
запись my_card.print_balance(some_text) эквивалентна записи Bank.print_balance(my_card, some_text)
в обоих случаях происходит одно и то же, вызывается функция print_balance первым элементом, который self, передаётся my_card, дальше остальные параметры.
Дальше начинается магия питона, что происходит, если в self не определена какая-то переменная. Тогда он лезет в другие объекты, чтобы её достать для чтения.
Если ты хочешь записать что-то в переменную именно класса, а не объекта, созданного из класса, то тебе надо обращаться как Bank.balance = 666
Изнутри объекта ты можешь делать что-то вроде self.__class__.balance = 6666
Лучше про это почитать, чтобы лучше понимать, что происходит там. Не понимая ООП не освоишь.
>>1968007 > У нгинкса проблема в том что если апстрим недоступен, нгинкс падает полностью. Антош, антош, смотри шире. + Не совсем так >Уж лучше траефик какой-нибудь. Юзай, никто ж не запрещает. Чем-то, наверное, и трафик лучше.
>>1968989 да там и переменные класса используются, он явно решил не читая ничего про ооп начать практику делать, потом будет вопрос про то почему когда он создает 2 карты, то баланс у них общий
>>1968911 Здесь нечего угадывать, del только разрывает связь между переменной и объектом, пока не случится сборка мусора, объект никуда не денется, и питон считает, что если его можно использовать, то почему бы не использовать
Аноны, вопрос по автоматизации: есть пиратка ABBY Fine Reader, хочу сделать из нее что-то вроде автоскана(в реальном времени) для сабов на экране и чтобы это все еще работало в offscreen/background ( на заднем фоне вообщем). Гугл советует использовать библиотеку Pyautowin. Сам вопрос: это вообще осуществимо? Или в программах обычно лочат такие вещи еще на этапе разработки?
Приветствую вас шипящии, начал смотреть лекции Тимофея хирьянова по питону, вроде весьма интересно , но как думаете стоит ли оно того или мне сразу пойти скачать курсы от отиса и налегать на них ?
>>1969979 Спасибо , запишу на будущее, думаю пока досмотрю лекции хирьянова , основы я не очень хорошо знаю хотя при этом простые задачи могу делать , просто набор функций по большей части одинаков но не все понимаю как именно работает хотя после стольких лет образования на электрика по цепям рза понимаешь что обычно сильно углубленные знания и не требуются в работе
>>1969745 там есть основы питона, погружение в питон (неоч), ООП, создание веб на питон, птион для анализа данных и т.п. ты как я понял начал курс от буржуев?
Аноны, хочу поставить на рабочий копм Jupyter Notebook, чтобы ковыряться в данных несколько быстрее, но есть сомнения. Я не понимаю как работаю веб-приложения вообще, и как работает Jupyter Notebook тоже только в общих чертах и боюсь, что случайно скомпрометирую корп.инфраструктуру. Как случайно не открыть портал в открытые интернеты?
>>1970008 https://www.coursera.org/learn/python-osnovy-programmirovaniya тут упор на программирование. дается несколько роликов по возможностям и 30+ задачек. и так каждую неделю. рассчитано на начинающих так как когда дается задание то предполагается что ты будешь его решать именно теми средствами, про которые рассказали в видео, без всяких читов типа библиотек и методов. Математики там прилично, задачи в основном на математику
>>1967018 (OP) >Книжки, новое собрание Eric Matthes - Python Crash Course (2016)pdf - есть более свежая версия 2020 года, можно найти в вк по документам.
>>1970018 Он по умолчанию на локалхосте открывается, ничо не скомпрометируешь, с трудом представляю себе корп-структуру где вася мог бы порт в интернет выставить, тем более случайно
>>1969355 Ну и что значит сущность? Что угодно может быть сущностью.
>>1969085 Ну я заебашил траефик себе в кубер чтобы можно было нормально proxyless services поднимать, стало хорошо. У траефика кастрация в другом месте правда и он не для всего, статику не умеет раздавать например. В итоге нгинкс внутри подов на локалхосты ходит, а траефик как ингресс. Видимо настало время дорасти до haproxy.
>>1969956 Достаточно хорошо. Но атом уже пару лет как не развивается, хотя и вполне работает. Вся разработка ушла в vscode. Гит я бы всё-таки сначала из консольки поучился с гитбуком, гуи не сильно упрощают работу с ним.
Подскажите, че там у него происходит в классе RegisterPage? Я почитал про то, что делает супер, типа вызывает метод родительского класса. Но что он накодил все равно недопер. Не понимаю, что делают передаваемые в этот метод аргументы. Ну и в общем этот класс, если честно.
>>1970368 Ну очевидно он туда автологин вставил. Можешь снести нафиг весь этот метод, у тебя будет регистрация без автологина. super уже давно можно без всякой хуйни писать return super().form_valid(form)
>>1970375 А, ну то есть то, что он написал это то же самое, что просто super()? Типа сразу логинит после регистрации, а если юзер не создался, то там эта функция оригинальная сама что-то пизданет.
Анончик, допустим, у меня в директории лежат пакеты одного приложения для разных платформ, pip может выбрать из этой директории подходящий и установить его? С pypi же выбирает нужный. Не могу найти как это сделать.
Бляяя, а можно как то в атрибутах класса сохранить ссылку на внешний словарь? Что бы менять значения внешнего словаря, а не внутреннего. Типа я передаю в конструктор класса словарь, и класс будет менять значения этого внешнего словаря, а не какого то своего локального.
>>1970469 Ну есть пайплайн. Там идёт векторизация через tf-idf. Хочу после векторизации сохранить размерность полученной матрицы, для этого пишу кастомный трансформер, куда хочу передать внешний словарь, что бы сохранить в него размер матрицы.
>>1970455 >а можно как то в атрибутах класса сохранить ссылку на внешний словарь?
Можно
dickt = {'ti':'huy'}
class Kostilik: def __init__(self): self.dickt = dickt
Как видишь reference на тот же объект, новый не создается. можешь даже проверить id объектов, если не веришь. Нахуя только тебе словарь, когда можно хранить в виде объекта
>>1970475 Насколько ты контролируешь пайплайн? В этом пайплайне нет какого-то хранилища артефактов, пусть даже в виде словаря? Тупая труба, вышло из первого, вошло во второе? Даже если так, почему по этой трубе не может идти словарь со всеми матрицами и размерностями?
Есть набор корутин, которые надо выполнить, некоторые нужно выполнять в определенном порядке, так как там берутся необходимые данные для работы следующей корутины. На некоторых при ошибке нужно валить весь набор исполняющихся корутин. Есть ли какая-нибудь либа, которая позволяет декларативно описать эти зависимости? Заебало императивно это дрисню описывать.
>>1970531 Какой зависимости дурень? Создай объект хранилище до инициализации объекта из конструктора и все. Иди учи CS, хуйню какую-то хочешь, пайплайны у него блять
>>1970571 Ты лучше пример приведи, какой код есть, и примерно как ты хотел бы. Вот то, что ты описываешь, выглядит так try: ____data1 = await foo1(data0) ____data2 = await foo2(data1) ____data3 = await foo3(data2) ____data4 = await foo4(data3) except: ____something
Тебе это к чему преобразовать надо? делать вложенно await foo4(await foo3(await foo2(await foo1(data0)))) пожалуй не очень эстетично, но так А что хочешь ты?
>>1969091 И на работе, и дома стоят 2 монитора. На одном пишешь код, на втором проверяешь его работу. Если, конечно, ты не консольную утилиту делаешь какую-то. А так второй монитор может пригодиться разве что мультики смотреть или музыку переключать, например
Инкапсулируй корутину в кастомный класс, опиши поведение, опиши от чего зависит и дальше на основе шаблона поведения создавай логику. Чё ещё надо, Вась?
class CustomTask(Task): def __init__(depends=[], coro=coro, results): self.name = '' async def execute(self, results_pool): cur_tasks = asyncio.Tasks() args =[] for t in tasks: if t.name in depends and t.done: args.append(next((r[1] for r in results_pool if r[0]==t.name) output = await coro(*args) results_pool.append((self.name, output))
class TaskPool: gathered_results=[] # ('task1', 'tobi_pizda') tasks = []
>>1970636 >>1970624 Ещё и мимо. На done call back ты можешь например из цепочки сразу вызывать нужную тебе корутину и т.д. не хочешь не реализуй, мне похуй. Готового из коробки нихуя нет. Вместо того чтобы подумать, ты ноешь в разделе
>>1970639 >ноешь в разделе Шиз, я только спрашивал есть ли готовое решение, что бы не писать костыль, вместо этого ты на меня сагрилился "хули ты не гуглишь", хотя сам потом понял, что готового решения нет, а aiojobs решает только часть задач и нужно самому писать.
>>1970606 >>1970624 >Я спрашивал есть ли готовые менеджеры для такого, так педалить свое придется Мне не понятно, как data flow устроен и как его формально прописать. То есть в каких-то случаях у тебя одна корутина возвращает данные, другая корутина использует данные от двух других корутин, и т.п.
Здесь может быть очень много извращённых логик. И их надо как-то формализовать. Вот как ты это запишешь?
Может быть такой подход для реализации логики. допустим, есть функции data1 = foo1 data2 = foo2, data3 = foo3, foo2 и foo3 выполняются независимо data4 = foo4(data2, data3) а вот foo4 нужны данные от foo2 и foo3 и дальше схожая логика
Вот чтобы параллельность реализовать, надо использовать механизм очередей. foo4 принимает на вход очередь, queue4, в которой кортежи или словари вида ('data3', data3) ('data2', data2) надо помнить, что порядок произвольным может быть
как только пришли оба элемента, код выполняется, результат помещается в другую очередь.
Это просто принцип построения. Не знаю решений для этого, но закодировать тут пару десятков строчек, наверное.
Можно сделать декоратор, который будет как раз конвертировать очередь в обычные параметры.
>>1970642 >Шиз, я только спрашивал есть ли готовое решение Мне кажется, что слишком специфичная задача, чтобы под неё было готовое решение. Слишком много вариантов логики. При этом руками сделать несложно совсем, не сложнее, чем потом декларировать на каком-то птичьем языке эти зависимости.
>>1970649 >То есть в каких-то случаях у тебя одна корутина возвращает данные, другая корутина использует данные от двух других корутин, и т.п. Я думал сделать какой-нибудь объект, который записывал все возвращаемые в виде словарика с ключем по имени таска и доступный для каждой исполняемой корутины.
>>1970642 Шизик тут только ты, который читает документацию по диагонали и не видит готовые решения указанные в ней. Callback ничего не возвращает, но триггерит запуск другой корутины, exception перехватывается. Если хочешь инкапсуляции логики, а не говнокод на 50 строк при увеличении количества тасков, то делай объекты и методы. Заебали такие "ыыы хачу в лоб, питон жи проста. А где готовое решени ыыыыааа а где либа? Питонгавно"
>>1970669 Питонотреды, ожидание: >Есть ли готовое решение для этой задачи? >Нет, пиши сам, можешь это заюзать попробовать. >Ок
Реальность: >Есть ли готовое решение для этой задачи? >КАКОЙ ЖИ ТЫ ТУПОЙ БЛЯДЬ, ВОТ ЖЕ ВСЕ ОПИСАНО, ЧТО ЗНАЧИТ ЛИБА НЕ ПОДХОДИТ ДЛЯ ЗАДАЧИ?!?!? НУ ТЫ И ДЕБИЛ, ВОТ ЖЕ КОД, ХОТЯ МЕНЯ НИКТО НЕ ПРОСИЛ ЕГО ПИСАТЬ, СМОТРИ КАКОЙ Я ОХУЕННЫЙ, ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ, ЧТО ЗНАЧИТ МЕНЯ НИКТО НЕ ПРОСИЛ!?!?!?!! МНЕ ВООБЩЕ ПОХУЙ НА ВСЕ, БЫДЛЫ ТУПЫЕ
>>1970678 Чего ты подрываешься? Это же имиджборд. Сюда могут писать аноны разного уровня компетентности и адекватности, и никакого контроля, почти никакого, нет.
Но ты сам сформулировал свою задачу очень нечётко. Долго вникать в твою задачу и додумывать, что тебе нужно, желания не хватает у большинства. Вот тебе неадекваты и отвечают поэтому.
>>1970678 >Неадекваты >Не объяснили на пальцах, вот же суки >Я жи проста вкатывальщик с хотелками чтобы написали за меня >Пачиму меня не берут, у меня опыт 1 год в питонотредах Нахуй иди, серьезно. Ладно бы реально на баг какой нерешаемых нарвался или спросил по поводу направления поиска решения проблемы, но ты просто выблевал хотелку без кода и сел ждать когда тебе выдадут решение. Если сказали в документации читать читай документацию, значит ты что-то упустил. Но вы же рветесь на ровном месте и вместо того чтобы загуглить паттерны на коллбеках ведёте себя как ебучие заказчики. Ты платишь? Нет.
>>1970795 >Если сказали в документации читать читай документацию, значит ты что-то упустил. Сказать "читай доки" может любой ламер, желающий возвыситься. Даже если в доках ничего нет. Обычная история. Польза нулевая от таких.
А для такой задачи в доках ничего нет, как раз такой случай.
>>1970813 Долбоеб, я спрашивал готовое решение для данной задачи, если бы мне нужно было написать, я бы это сделал. Это как на просьбу посоветовать тулзу для парсинга сайтов предлагать urllib с html.parser вместо реквестов с бьютифол супом.
>>1970834 Да сучий ты ж потрох. У тебя уже реализовано в самой библиотеке, тебе не надо low level design создавать, просто блять используй методы. И это будущие чьи-то коллеги? >Не хочу писать код, хочу пыщ пыщ и в продакшн и 300к в наносекунду
>Да сучий ты ж потрох. У тебя уже реализовано в самой библиотеке, тебе не надо low level design создавать, просто блять используй методы. Что реализовано? Тебе написали, что готового решения нет и нужно собираться все это, причем есть вещи над которыми нужно подумать, куда собирать результаты функций, что бы они были отовсюду доступны, как грамотно организовать шатдаун всего пула и т.д. Но нет, ты брюзжишь слюной и орешь ВОТ ТЕБЕ ТРИ ФУНКЦИИ, ЭТО ВСЕ ЧТО НУЖНО, а тут речь про грамотную организацию.
>>1970839 >Нужно подумать Очень полезный навык, ну может ещё через 2 года появится и напишешь в софт скиллс "сначала думаю, потом спрашиваю хуйню". Куда собирать? У тебя кортежей нет? Не реализован хэшмэп из коробки? Graceful ahutdown в 5 строчек делается, но ты опять будешь ныть "не из коробки". Советовать BS4 не буду если там надо найти тэг, который будет на второй строчке, потому что lxml умеет делать это инкрементно, а так ты весь объект тащишь.
Питонач помоги. Короче есть у меня метод литерали одна строка — ретурн, убирающий юникодовские спецсимволы типа \u3000 \u2028: return line.replace(u'\u3000', u' ') отрабатывает нормально return line.replace(u'{}'.format(charcode), u' ') все идет по пизде
Я думал, что может дело в очередности типа как с++ и ++с или я просто неправильно написал, но print(line.replace(u'{}'.format(charcode), u' ')) в консоли отрабатывает как надо.
>>1970853 Ты достал, вот совсем достал. Ты какой-то бот, который по ключевым словам выдаёт какой-то бесполезный ответ. Только с агрессий. Тебе подлечиться надо, а не бросаться на людей здесь.
Потому что ты не в состоянии подумать над задачей, хоть другой анон её не сформулировал как надо.
То, что анон просит, штатными средствами не решается, здесь решения на базе каталов, паттернов pub-sub нужны. pub-sub ты такими способами не сделаешь. Это в общем случае. Хотя ХЗ, что анону надо, он не сказал, это я за него додумываю.
>>1970936 >У человека так же задача, после одной корутины запустить следующую по выполнению первой. Это вообще не задача, для этого и есть оператор await result_1 = await coro_1() await coro_2(result_1) и никаких коллбэков, конечно, не нужно. async/await как раз нужны для того, чтобы избавиться от колбэков и чтобы не было callback hell, как это бывает в JS.
Вот проблемы начинаются, когда логика нетривиальная, например от result_1 зависит несколько функций. А ещё хуже, если они зависят ещё от result_2, которая считается другой корутиной, независимо - вот здесь уже никакой gather не поможет.
На этом этапе и начинается переизобретение MQ с разными стратегиями. Надо смотреть на конкретные задачи и конкретные проблемы, чтобы предлагать решение.
>>1970971 Ты уже выдумываешь другой кейс, когда loop.run_forever(), без выхода. Этот же шизик указал, что он хочет все в пуле делать, но со schedule. Ты же начинаешь искусственно усложнять условия первоначальной задачи. Что значит избавиться, когда он тут нужен в одном месте для запуска цепочки других тасков? При чем тут JS, если речь про Python? Ах да, весна пришла. Pub/sub нужны тогда и только тогда, когда нет иного механизма передачи данных: 1. Микросервисы 2. Исполнение кода на удаленном сервисе 3. Все разбито на процессы, так как CPU bound так много, что нет смысла все делать асинхронкой и нет выхода из цикла кроме как с ошибкой.
>>1970984 >Pub/sub нужны тогда и только тогда, когда нет иного механизма передачи данных: pub/sub это архитектура для взаимодействия между задачами в приложениях с конкурентностью. Как и очереди, только это более продвинутые варианты очередей.
Когда у тебя несколько процессов, тогда ты уже вынужден использовать отдельный сервис для этого. Когда ты внутри одного процесса, ты можешь той же архитектурой пользоваться, но проще.
>>1970971 На пальцах объясняю. Тебе надо исполнить все корутины и исключить блокировку. Coro1, coro2, coro3 производят какие-то результаты сoro4 зависит от результата coro2, coro5 зависит от результата coro3.Если я правильно понял шизоида, то надо выполнить одновременно первые 3 корутины и не ожидать конца из выполнения. Прописав кастомный callback ,если корутина 2 выполнится раньше чем корутина 3, то должен быть передан результат выполнения, передана как аргумент в coro4 и запущено исполнение. Тут стратегия принятия решения: если первая зависимая корутина возвращает exception, тогда весь процесс прекращается. Шлется [t.cancel() for t in asyncio.Task.all_tasks] и выход sys.exit(1) например. Все просто. Для этого надо напрячь мозг и описать стратегию, инкапсулировать логику в объектах, а не писать спагетти код
Делать add_done_callback очень дурной стиль. Документация явно просит вот этим не пользоваться, это если ты библиотеки пишешь, тогда может быть полезно.
Во-первых, это спагетти конкретное. Это довольно большой лишний код. Ты туда передаёшь синхронную функцию, хотя по логике тебе скорее понадобится асинхронное поведение, тебе корутина нужна.
>тогда весь процесс прекращается. Шлется [t.cancel() for t in asyncio.Task.all_tasks] Весь процесс? А вот если не весь процесс, а только ветвь исполнения? Потому что реальная проблема, когда у тебя какая-то задача не может достучаться до какого-то сервера, но это штатная ситуация и не повод прерывать исполнение целиком.
Очень похоже, что ты никогда ничего практического по асинхронному и многопоточному не писал, а здесь самоутверждаешься анонимно перед анонами, что уже намекает.
Иначе бы не писал такие вещи.
По делу, основной паттерн в современном конкурентном программировании это pub/sub. Частный случай очереди.
У тебя одна задача что-то посчитала, опубликовала результат в очереди. Те, кому этот результат нужен, слушают это очередь, и как только туда что-то поступило, начинают свою работу.
Вот так и достигается декларативность. Работает это и в рамках одного процесса (asyncio/threading), и на системах с несколькими машинами и большим количеством микросервисов.
>>1971042 Писал, пишу и буду писать. Ты долбишься в глаза, где я говорил о add done callback? Я предложил отказаться нахер от этого варианта и написать свой. Это просто блять название, сечешь? Так я хуй знает надо ему обработать это exception и продолжить выполнение или нет. Речь шла о прерывании, ты опять додумываешь кейсы за него. Какая блять синхронная функция если def callback(task, result): if not task.exception(): loop.run_until_complete(coro3(result)) Все! Сделай класс-обертку и применяй к любой корутине, добавь туда логику и готово решение. Используй где угодно. Нет ты тащишь паттерны, пытаешься натянуть сову на глобус. Один раз создать класс обёртку, добавить туда exception handler для обработки исключений каких надо и все. Или ты снова мне про паттерн pub/sub будешь затирать и снова кейсы выдумывать? Смирись, все делается меньше чем за 30 строк кода.
>>1971042 И все посты не про самоутверждение. Что тот анон, что ты сами не понимаете что должно в итоге получиться. Ну куда мне до вас сеньоров-лапшичников двухлетних
Всем привет! Поставили задачу запилить тест Фреймворк для тестировщиков. Тесты 90% api. Я с питоном особо не работал, но почитал что request библиотеки и pytest хватит почти для всего. Вопрос. С чего вообще начать фреймворк? Я полагаю нужно сделать ООР с методами логина и прочей ботвой отдельно от самих тестов? Где-то можно шаблон какой-то найти? Вот прям с самого старта чтобы сделать логин, какую-то базовую проверку токена, ну и тд. Спасибо.
Аноны, можно ли через пайчарм редактирвать код на удаленном сервере, то что запускать через деплоемент можно я уже в курсе, хотел бы именно полностью удаленно запустить папку с проектом и там спокойно копаться и редактировать, это вообще возможно?
>>1967018 (OP) Недавно писал сюда, и мне помогли, потому попробую ещё раз.
С горем пополам построил я по 3 спискам координат график, который делает контурный рисунок поверхности методом триангуляции. И всё бы хорошо - только вот всратый он, как моя жизнь. Поэтому надо мне область под кривой закрасить - а она не хочет. Собственно, пример на картинке - plot.fill даёт неудовлетворительный результат, как я с ним не мучился, а between я не знаю, как тут применить.
>>1971379 Кстати этому пацанчику с экстремальными названиями функциями нужно запилить игру на пайгейме где функция хуй реально будет отрисовывать хуй, а функция пизда - пизду. ну и полирнуть функцией фак для запуска процесса.
>>1971736 >Поясните, питонисту нужен ли линукс? Уметь с ним работать нужно любому разработчику. Использовать в качестве основной операционной системы - нет.
Прмерно за сколько времени можно стать джуном по питону? Уделять готов 2-3 часа в день. Имеются базовые знания программирования. И можете посоветовать гайл или что то подобное? Что вообще должен знать джун?
>>1971749 А что подразумевается под "имением работать"? Часто вижу это требования в вакансиях. Если я через терминал могу спуллить код с гитхаба и подредактировать его в nano - я уже умею пользоваться линуксом или ещё нет?
>>1971751 >Если я через терминал могу спуллить код с гитхаба и подредактировать его в nano - я уже умею пользоваться линуксом или ещё нет? В принципе да, если не пугаешься консоли и способен быстро учиться. Работают с линуксом в основном девопсы, а разрабам хватит основ.
>>1971751 Это называется на уровне пользователя, то есть ты можешь более-менее спокойно пользоваться базовыми возможностями командной строки, ходить по каталогам, копировать-удалять, архивировать-разархивировать, фильтровать вывод, редактировать файлы (не обязательно vim), там команды find, grep, top, ps, kill. Запуск команд из командной строки. Плюс установка софта через apt, работа с ssh, ну и понимание каталогов /etc, /var, /opt.
В общем что ты в этом более-менее плаваешь, и с нужной командой быстро разберёшься при необходимости.
Админские навыки это уже другое.
Бывает ведь народ, который может работать исключительно в окнах винды (может даже довольно прилично, с хорошим пониманием на админском уровне), командная строка даже видны для них мрак, соответственно если они попадают в линуксовое окружение и необходимость работать через консоль, они просто рассыпаются.
>>1971318 >Альфач пишет те имена функций, которые хочет Истинная правда. Вот делает чувак модуль logging для стандартной библиотеки питона. Не портирует либо под питон, а именно чисто питонячья стандартная библиотека.
>>1971772 Ну так-то командная строка шинды это та ещё хуйня - или убогий cmd из времен дос, или норкоманский павершелл. Можно получить отвращение к такому способу работы с системой.
>>1971800 У меня кстати подгорает, подскажите, в чем проблема сделать logging.info(*list), почему нужно блять передавать либо f string, либо str(str(a)+str(b)), либо формат, нет бы сделать как в принте, идеал же
Впервые задеплоил проект на сервер и даже с доменным именем, заинтересовало что за магия происходит, когда вводишь домен в браузере, мы бежим в днс, оттуда получаем айпи, а уже на nginxe он просто денаит все подключения, пока явно не пропишешь сервер нейм? Нгинкс ведь никак не сообщает днсу о том что у него в конфиге появилась эта строка. Кстати вопрос, я сегодня часа 1,5 ебался с gunicorn сокетом, в итоге забил и просто на локалхосте запустил, ебля с сокетом вообще нужна?
>>1971851 Но по сути он тупо делает запрос к вебсерверу, точнее делает запрос на порт, а уже если ътот хост есть в роутерах нгинска, то запрос проходит, верно?
>>1971134 Это понятно. А сам фреймворк есть шаблон какой-то? Логин идёт через вебдрайаер пакет? Я просто в этом особо не шарю. Спасибо. Есть ли есть какая-то ссылка на репо или гайд было бы круто.
>>1971900 Всё работает на tcp/ip. Трафик в интернете идёт по ip адресам, tcp соединения устанавливаются по ip адресам.
Твой компьютер устанавливает tcp соединение с сервером, с nginx. На этот момент nginx знает только твой ip адрес. Как соединение установлено, так идёт общение по http протоколу.
В заголовке http пакета, что высылается на сервер, есть поле Host: www.some.host.net и другие поля, потом пустая строка, и дальше какие-то данные, например POST данные. nginx смотрит на это поле Host, и дальше смотрит свои конфиги, что делать с этим хостом. Конфиги хранятся обычно в каталоге /etc/nginx/site-avaible
там есть секции server { listen 80; listen 443 ssl; server_name my_server.com; } которые отвечают за настройки разных вебсерверов, которые обслуживает nginx. Вот там и прописывается, как обслуживать конкретный сервер.
В принципе ты можешь любой домен прописать, а у себя на локальной машине переопределить для него DNS. То есть твой nginx может обслуживать google.com, но тебе надо будет ещё сделать запись в файле hosts (есть и linux, и в windows), чтобы со своего компьютера ты по имени гугла попал на твой сервер, а не оригинальный гугловский. Правда только по http, по https не получится, потому что браузер уже электронные подписи проверяет.
Там же, в настройках одного из серверов, ты можешь прописать listen 80 default_server; listen [::]:80 default_server;
этот блок настроек будет отвечать за случай, когда ты заходешь напрямую по ip адресу, либо по доменному имени, которое в настройках забыл прописать.
>>1971840 Создаёшь экземпляр объекта logger = logging.getLogger() переписываешь методы где подаёшь *args на вход. Вот и сделал. Есть же обертки logging которые и сразу окрашивают строки для StreamHandler или формат сразу в JSON.
Аноны, есть теоретический вопрос: Есть веб-сайт, с base auth(на нжинксе), на сайт захожу под хттпс(соответственно по доменному имени). Первый вход норм, все работает, но затем, на 3-4 запрос к серверу(начинаю ходить по ссылкам на веб-сайте), начинается бесконечная загрузка в бровзере и в результате ошибка, что соединение разорвано. Если захожу на сайт по ИП, то все норм. На сервере связка Nginx+certbot/flask. В какую сторону смотреть и как гуглить проблему?
>>1967018 (OP) >>1962060 (OP) Сап аноны. Много раз пытался вкатываться в python впрочем это мог бы быть любой другой язык и постоянно сталкиваюсь с одной и той же проблемой.
Я не вижу практического применения навыкам. Дохожу до той границы, когда материал уже довольно сложен для понимания, и требует усилий для освоения ну во всяком случае для меня , а куда это всё применить непонятно. Ну вот я причитал три книги, уже знаю основные конструкции языка, но всё ещё не пойму где это может пригодится, могу только сидеть и писать условные калькуляторы круглыми сутками.
>>1972053 эээ..пук-среньк в этом и кроется основная проблема, я непонимаю где переход, вот от этих всех назначить переменную-кинуть экспешен-написать функцию в сделать что-нибудь полезное.
>>1972072 >>1972073 Возможно я что-то не то читаю. Сколько книг не открывал, в них алгоритмизация-констркции языка. Как перейти от этого к прикладным задачам решительно не понимаю. Вот я высрал условный скрипт в консоли, на этом мои полномочия всё.
>>1972033 У тебя экзистенциальный кризис или вкат негладко проходит? Возможно тебе просто надо уже перестать поглощать материал и ебошить практику. Только не калькуляторы, а что-нибудь посложнее. Веб-сервис, гуи приложение, сложное консольное приложение, спарсить что-нибудь, csv банковской выписки обработать. Правильно тетрис посоветовали, арканоид можешь ещё заебашить.
> причитал три книги А, ну да, бросай читать, хватит уже, пора кодить.
>>1971908 Ох, спасибо, я даже забыл о том что там соединения происходят, много чего уточнил. Вообще почему-то теории продвинутой в интернете не так много, одни объяснения для мимочелов
>>1971967 Так это вручную делать, еще и на каждом проекте, мое возмущение о том что в модуле эта очевидная возможность нереализована, я из-за этого раньше понять не мог почему json из ответа не логируется, оказалось нужно передавать строго строку и только одну
>>1972033 А я вот перешел на новый уровень как раз и только стал осознавать как часто приходится юзать базу, обычные работы со строками юзаю постоянно, преобразования типов, структуры данных, тоже думал юзлесс хуйня, а на практике все очень нужно, даже потоки оказались не бесполезными как я думал в питоне
>>1972096 Ты начни гуглить классику просто, типа как сделать тетрис на питоне, посмотри библиотеки, которые используются, я так полагаю проблема в том, что ты не понимаешь как пользователь может взаимодействовать с кодом, ответ: веб приложения, гуи, консоль, выбери то что хочешь, изучи условно как в консоле передавать флаги и аргументы и вот у тебя уже консольное приложение, ставь цель какую-то, типо спарсить информацию о 100500 тайтлах с какого-нибудь сайта, посмотри как это решается, почитай про асинхронность умловную и сделай парсер, а потом все эти знания на самом деле пригодяться на настоящей практике
>>1972225 > как перейти Практика практика практика. У тебя сейчас ситуация как у многих айтишников, хорошо читают на английском, но говорить совсем не умеют. Вот чтобы научиться говорить, нужно начать говорить.
Насчёт полезности это сложный вопрос. Обычно тренируются на заведомо бессмысленных пет-проектах, которые сделать просто по приколу, потому что можешь. А вот дальше многие и за всю жизнь неспособны разродиться чем-то полезным собственной задумки, и просто тупо работают по найму/контрибутят в чей-то софт, так что это норм.
Кто шарит, написал бота в телеграмме с клавиатурой, сначала он отвечал на /info, выводил на экран клавиатуру в сообщении, после нажатия на ДА появлялись кнопки под полем ввода, но они уже не выводили никакой инфы, хотя должны. А при второй попытке написать боту, он вообще перестал что-либо отвечать. Вопрос: в чем ошибка-то вообще
Народ... Django.. Есть модель вида - (город, адрес, номер дома, слаг). Хотелось бы получать слаг вида - /город/адрес-номер, слагифай формирует все - город-адрес-номер. Хотелось что бы при обращение lockalhost:8000/город фильтровать адреса по городам. Подскажите как лучше и красивей это сделать, через функцию или класс контролер
Периодически листаю разные проекты на гитхабе для самообразования. Иногда куски кода нравятся как написаны. Прямо. хочется сохранить. Пока ничего не придумал, кроме как пихать в блокнот с подписью, что это и откуда взято. Но это никак не структурировано.
Никто не сталкивался? Кто как хранит, если хранит?
>>1972839 Вернее было бы так спросить: почему abs() здесь при вызове скрипта из консоли возвращает ноль, а при тестировании того же куска кода в интерпретаторе - нужное значение? ЯННП.
>>1972708 >Надо код писать >Надо команды выполнять Перекатывался на Node, там голова болит от зависимостей и размера node_modules, бросай этот сраный Питон.
Как щас дела с веб разработкой на пистоне под винду? Докер в каком состоянии? Есть ли аналоги pyenv? Как вкатился на работу, пересел на убунту. 3 месяца уже сижу и все никак не могу привыкнуть, хочу вернутся обратно.
>>1972779 а, я думал может ты на постоянной основе мутишь. что почитать это в инете есть инфа, советовать не могу. прост с классами удобнее повторно использовать код
>>1972941 Это вообще разная хуйня. reverse модифицирует список, -1 копирует итераблю в обратном порядке. Есть ещё reversed, который итератор в обратном порядке. Последнее лучше всего, если тебе не нужна именно копия.
>>1972907 Докер нативный на hyper-v, но нужна Pro версия. pipenv точно работает, но poetry в разы лучше, обязательно наверни. Чем убунту не нравится тебе я хуй знает, а частенько деплою bare metal на ubuntu LTS и соответственно на ней и сижу. Чего не хватает на линуксе? Может подскажу аналоги.
Анон объясни, что происходит. Личинка админа в моем лице, хочет учить питон для скриптов. Начал смотреть видосы на ютубе как чел пишет скрипты, так вот там чел задает пустую переменную files = [] И добавляет метод, который предполагает туда сбор названий файлов которые находит цикл. Далее он хочет примернить к каждому элементу записанному в files другой метод через цикл и внезапно он пишет просто конструкцию вроде for file in files: При этом никакой переменной file до этого не создавалось. Мне непонятно как интерпретатор сам понимает, что file это каждый отдельный элемент добавленный в files, если ранее в коде это никак не обозначено. Я раньше немного php ковырял, когда открываю код на пыхе хотя-бы понятно примерно что происходит, а код на питоне выглядит как какая-то ебучая магия.
>>1973281 Потому что это конструкция языка, которая работает определенным образом. На каждом витке цикла к текущему элементу цепляется алиас. Вообще, если что-то не понятно, то идеальный вариант это смотреть документацию по синтаксису, там обьясненен именно синтаксис и все его возможные элементы, а не что тебе хуй в книжке или видяшке пожелал изложить. Например, для фор https://docs.python.org/3/reference/compound_stmts.html#the-for-statement
>>1973281 это не переменная это список, сначал он в список кладет, потом изменяет. >При этом никакой переменной file до этого не создавалось. это локальная переменная создается в скоупе итератора на каждом проходе, существует только внутри = текущему проходу итератора по объекту, я питон тоже не знаю.
>>1973529 >это локальная переменная создается в скоупе итератора на каждом проходе Ну смотри, у тебя есть files, в который записываются строки. Потом эта переменная передается в конструкцию for file in files files имеет вид: hui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txthui.txt В пыхе тебе нужно с помощью регулярного выражения задать по каким критериям ты будешь вытягивать строки. Здесь же получается, каждый hui.txt сам вытягивается как file.
files имеет вид ['hui.txt','hui.txt','hui.txt','hui.txt','hui.txt','hui.txt','hui.txt','hui.txt','hui.txt'] (и это не строка, а список) Кстати, не матерись Думаю, теперь тебе понятно, откуда в file будет hui.txt Если бы files было как ты написал, то там по букве в file клалось.
>>1973557 >Если бы files было как ты написал, то там по букве в file клалось. если по строке то надо писать реализацию как итерировать, в зависимости от того какое представление строк в языке.
>>1973557 >и это не строка, а список Я тоже так думаю, просто в пыхе , насколько я понял\помню, если ты собираешь названия файлов в переменную они по умолчанию записываются как string, и у тебя выходит что-то вида 'hui.txt' . 'hui.txt' .'hui.txt' .'hui.txt' А тут выходит какой-то список, при этом это даже не array. Ну я говорю, что мои познания в коде на уровне шимпанзе, поэтому я не понимаю как это работает.
>>1973281 for file in files: это можно написать иначе
file = None # бесполезное объявление, чтобы тебе было привычнее files_iter = iter(files) while True: ..try: ....file = next(files_iter) ..except StopIteration: ....break ..# тело цикла
Так понятнее? Попробуй print(vars()) в любом месте кода написать. Увидишь что переменные это банальный словарь имя-значение. Их не нужно объявлять заранее, сразу присваиваешь x = 5 и понеслось.
>>1973590 Они есть, class, def, компрехеншены образуют скоупы. В питоне не принято писать портянки из одной функции на 1000 строк. Единственное неудобство это загрязнение модульного скоупа предвычислениями, но это тоже решается либо функцией, либо del.
2 дня кряхтел мозгами как реализовать функцию, а сегодня наконец сел и написал и когда все сработало я минут 5 не мог перестать расплываться от счастья. Аноны, вы тоже получаете дикий кайф от проганья? Это проходит со временем?
>>1973779 Я именно об этом и говорил. В луа есть do block похожий, в js циклы и такие же блоки образуют скоуп. В питоне ещё есть with, который не совсем про скоупы, но выполняет часть семантики скоупов в других языках. Возможность написать n вне цикла, а потом внутри цикла, это же поощрение говёного кодстайла, тебе ещё выяснять придётся какой это n. Если кому-то сильно зудит что переменная не освобождается, есть del.
Нашел на гите такой вот роадмап по пайтону. https://github.com/GnuriaN/Python-Roadmap Что думаете? Меня смущает, что там чел советует курсы. Насколько я слышал, курсы по программированию это что-то вроде бизнес тренингов. Я ранее код не писал, собственно вопрос, лучше по книгам учиться?
>>1973993 >Книги не научат тебя бест практик и не будут дрочить по pep8, да и в целом по дзену питона. А курсы научат? Я думаю лучший способ конечно найти ментора, но не думаю, что кто-то захочет просто так тратить на меня время.
>>1973993 >по дзену питона Бесполезная хуита, которая сопротивляется удобным фишкам. Из-за гвидо съебал от этих тупых ивалидов, кто давясь слюной защищал дзен. Сроду не следовал этому. Как удобнее/эффективнее/проще/нужно по ситуации - так и делаю
>>1973959 Очень хлипкий. У го действительно хороший роадмап, хотя и устареет скоро. А здесь расписывается несколько абзацев какуд среду разработки поставить. Еще, блять, советует сразу две идеи держать. Ну нахуя? Актуальные веб фреймворки, брокеры очередей, орм - где всё это и это только под веб. https://github.com/Alikhll/golang-developer-roadmap
>>1974048 Хочу уговорить в проекте не поддерживать x32 версию, потому что лень. Но аргументов особых нет. А тут глянул на github action который питон устанавливает, в нем, например, уже забили болт на x32. Вот мне и интересно стало, как вообще с этим дело обстоит.
Захотел разбить большую функцию на несколько, возникла проблема: в каждой микро функции нужно несколько одних и тех же переменных, причем одна функция конвеером затрагивает другие и приходится одно и то же передавать, как это решать, это сильно плохо? Использовать объекты, чтобы передавать только его и его полям обращаться просто? Если передавать словарь, то кажется не очень красиво будет. Либо это значит, что я хуйню понаписал и надо переписывать все?
>>1974232 Ну никто не запрещает. После рефакторинга так и вышло. 2 функции принимают один и тот же аргумент. Можно конечно консолидировать в один метод, но нахера?
>>1974232 >Использовать объекты, чтобы передавать только его и его полям обращаться просто? Эти функции сделать его методами и в конце каждого метода возвращать self, тогда можно будет строить цепочки методов уровня GentlemanUdachi.ukral().vipil().v_turmu().
>>1974049 >Сроду не следовал этому. Как удобнее/эффективнее/проще/нужно по ситуации - так и делаю Если ты что-то пилишь для себя, то вопросов ноль. Но это большая боль поддерживать чей-то код, который не следовал дзену.
Дзен - это устная договоренность между всеми кодерами работающим с эти языком. Никто конечно и в жизни не запрещает никому вести себя как мудак, но это моветон. Для этого есть другие языки.
По этому при собесах я отдам предпочтение тому, кто прошел курсы, чем тому, кто вкатился именно в питон по книгам. Код намного приятнее читать. И уж лучше такого джуна доучу, чем переучивать книжного. Это конечно не абсолют, и там и там есть нормальные и не нормальные, но примерно 80 на 20 по моим субьективным наблюдениям.
>>1974422 >По этому при собесах я отдам предпочтение тому, кто прошел курсы Ты хоть чуть чуть эти курсы видел изнутри? Куча народу, препод даун с зп 30к рублей и абсолютно похуистичное отношение, когда нихуя непонятно.
>>1967018 (OP) Анон, правильно ли я понимаю, что "Дронов Владимир - Django Практика создания Web-сайтов на Python" это кал, а не книга и вкатываться с её помощью бессмысленно?
>>1974422 In [1]: data = [1, 3, 5, 7, 9, 11, 13, 15] In [2]: print(list(filter(lambda x: (x % 3 == 0), data))) Тебе наверно очень трудно будет прочитать то, что выше? И ты создашь отдельный список, куда в итерации будешь пихать результат?
Аноны, посоветуйте альтернативу Хероку для апи и бд. Эта хуета вымораживает постоянными ошибками, не смотря на хуеву кучу тестов и абсолютное отсутствие причин для возникновения таковых. Платно, бесплатно, поебать, лишь бы не связываться с этим дерьмом.
Анчоусы, на pytest пытаюсь сделать фикстуру, чтобы по включению одной кнопки (булин) можно было печать или не печатать. Пример. Есть юнит тест, который возвращает в stdout что-то. Есть конфигурация теста, где есть настройка типа printout - True. Нужно в конфтест файле прописать такую ботву, что если настройка Фалс, то не печатает, а если тру, то печатает. Как такое запилить?
>>1974491 >print(list(filter(lambda x: (x % 3 == 0), data))) Пока filter возвращал список, а не итератор, я именно так и писал, но на сегодняшний день print([x for x in data if x % 3 == 0]) и ближе к PEP8, и лаконичнее. Конструкция "x for x in data" конечно способна вызвать реакцию "ачё вообще)", но это дело привычки. Как list(filter()). Главное обсудить с коллегами, как писать, и закрыть вопрос.
>>1974804 Если знаешь можешь помочь? Нужно чтобы бот каждый определенный день присылал уведомление и в то же время можно было запрашивать у него другие функции, для этого нужна многопоточность, да? Я просто с ней еще не связывался, учусь только, поэтому не шарю
>>1974422 > Если ты что-то пилишь для себя, то вопросов ноль. Ну, это, кстати, до тех пор, пока в первый раз про какой-нибудь мини-проектец позабудешь, а потом откроешь его через месяцок-полтора с отвисшей челюстью. > print(list(filter(lambda x: (x % 3 == 0), data))) Вот это, вот, вообще хрестоматийный пример того, как не нужно использовать пайтон.
>>1974849 >Напишите функцию, выводящую список целых чисел от 1 до 100, но вместо каждого числа, кратного 3, она должна выводить «Fizz», а вместо каждого числа, кратного 5, выводить «Buzz». Вместо чисел, кратных и 3, 5, программа должна выводить «FizzBuzz»; все остальные числа должны выводиться без изменений. [(lambda n: { 1: n, 6: "Fizz", 10: "Buzz", 0: "FizzBuzz" }[n4%15])(n+1) for n in range(100)] Сосай)))
>>1974422 ну кстати да, прикол курсов в том что там именно с самого начала заставляют учить хороший тон, чтобы не было всякого пиздеца хотя даже курсы не помогают часто. некоторые кодят так, словно блядь они ебашат от балды, никакой логики, структуры. просто набор рандомного кода, который работает, но непонятно как и при этом еще может выкидывать всякие побочные эффекты ебовые, лол
>>1973281 file это переменная в листе files в данную итерацию, т.е. если у тебя первая итерация то file равно первой переменной из files,вторая итерация-вторая переменная и т.д., тоже самое работает со строками и т.д., с числами используется range.
>>1975109 >прикол курсов в том что там именно с самого начала заставляют учить хороший тон Речь про какие-то конкретные курсы или о ситуации в целом? Я вот вкатывался, просто изучая популярные репозитории с множеством звездочек на гитхабе, лол. Да, конечно это нихуя не гарант чистого, структурированного кода, но если у проекта много контрибуторов и он популярный, то скорее всего разрабы используют какой-то общий для всех кодстайл и пепы. И вкатывался я сразу в веб на aiohttp/fastapi/sanic, а не с православных джанги/фласка. Вот недавно скачал курс по этой самой джанге. От otus, вроде. Ну полная хуйня на мой взгляд, сразу же не понравилось. Вроде 20 год, свежачок, а ведущие тратят часов 10-15 на устаревшие практики из древнего мира, типа фуллстека на одном фреймворке в монорепе с деплоем через ручную загрузку файлов на сервер. Никакого докера и прочих дев тулзов; хотя по идее, к этому почти сразу нужно приучать. Так вот кстати и не могу подружиться ни с джангой, ни с её рест частью - отторгает. Работу щас немного проблемно искать из-за этого.
>>1975250 нет, прост они дрочат академически а не ебошат отсебятину типа -я так делую ёпта, и ты так делай. >>1975265 ну так курсы тебя не познакомят с опытом разработки. они дают теорию и направление, а опыт разработки уже самостоятельно будешь получать. например чел пояснил какими путями можно реализовать программу и какие есть паттерны. и даются задания на реализацию. оценка идет по результату работы. То есть никто не мешает тебе конечно напердолить как хочешь, хоть в 1000 строк пиздануть вместо 100. но это уже будет твой опыт личный. А если не слушать что говорят и делать как сам хочешь - можно привыкнуть и хуярить горы непонятного кода на постоянной основе, такой себе опыт разработки. к тому же, как говорят, на собесах как раз таки проверяют как ты хуяришь код, типа в конторах часто есть свои порядки как писать, и если ты ебашишь от балды то это неприемлемо. ну это конечно мое мнение с дивана, может я неправ.
>>1975300 Ну в курсере тоже можешь обращаться в телеграм там и т.п. или на форуме спрашивать. там кстати есть и задания которые сокурсники оценивают. Но там обычно от балды ставят сразу зачеты, ибо им лень проверять, лол.
>>1975300 Ага, по личному желанию перебрать тонны говнокода, вести лекции, слушать вопросы долбоебов вместо того, что бы в конторе код писать и все наивысшего качества
>>1975338 Есть такая черта как твердолобость. Друг, никого не хочу оскорблять, но попробуй посмотреть на разные вещи, во первых под разных углами, а во вторых отличной от твоей точки зрения. Тем более ты работаешь в той области, где каждый год приходится изучать что-то новое, чтобы оставаться на плаву.
Привет, мне тут помощь нужна, буду очень признателен, если подскажите. Есть бот на библиотеке telebot, который парсит новости с сайта с помощью bs4. Моя задумка в том, чтобы записывать url новостей, которые бот спарсил, в отдельный текстовый документ, это я сделал. Но в случае их наличия в документе он должен не выводить их, а выводить только новости, которых ещё не было. В случае же полного отсутствия новостей с новым url бот должен вывести сообщение о том, что новостей нет. Целый день голову ломаю, ничего не могу придумать. Даже какая-то новодка бы была очень полезна, только недавно начал учить язык. Вот так сейчас выглядит отрывок кода:
>>1975351 Хорошо, покажи мне хоть один курс с преподавателями не-долбоебами, которые не смогли вкатится и не при какой-то фирме, которая выпускников потом себе берет.
>>1975407 Для этого лучше годится тот же sqlite. А для твоего варианта, делаешь comps_news словарем и ключом url. Потом просто делаешь comps_news.keys() - news_note и получаешь сет новых, по нему итерируешь и достаешь из словаря.
Есть пара файлов file1.py и file2.py В одном из них хочу сделать относительный импорт from .file1 import function1
Но получаю ошибку ImportError: attempted relative import with no known parent package
Если бы я делал from file1 import function1 Все бы работало.
Перечитал первые ссылки в гугле и так и не понял как это работает. Пробовал создать файл __init__.py но проблему это не решает. Пробовал делать точку входа if __name__ == '__main__':
То ли, надо какую-то структуру проекта указать.
Объясните пожалуйста, что нужно сделать чтобы заработал относительный импорт.
>>1975540 Попробуй читать, что написано. Просьба не о красивом языке, а о красивом стиле. Говнокода от вьетнам-стайл до 8"Б"-стайл на питоне - полон гитхаб.
>>1967018 (OP) Блять анончики я наверное совсем тупой раз не могу настроить вскод. Крч смотрите ситуацию, скачиваю вскод, скачиваю питон.exe , потом в вскоде устанавливаю питонское расширение и как бы все. потом ввожу условно код типа пика и во встроенной консоли ничего не появляется, ни запроса на введение икса ни чего то еще, то есть программа как бы запускается там виддно в терминале но какие то действия нельзя выполнить, объясните пожалуйста что я вообще не так делаю инб4: учишься кодить
>>1975565 Ладно, я дегенерат надо было вывести принт функции, но с другой стороны почему в видеоуроке который я смотрел пользуясь другим редактором не надо вводить print и он сам запрашивает число а в вскоде надо ух ебать мне времени понадобилось чтобы допереть до этой мелочи
петян, есть 50000 вызовов функции числодробилки, она вроде там местами через numpy ебашит. в среднем выполняется по 15 милисекунд за вызов. всё про всё минут 10-15 занимает. какая распараллелизация вычислений нынче в моде? cuda и всякий gpu я не могу себе позволить, так что майнить моцарта буду на cpu
>>1975654 Да по процессу на ядро, ничего не изменилось. 15 миллисекунд на вызов, numpy "местами" - кажется, сейчас выгоднее потратить время на оптимизацию (подойдет ли numba?). Быстрый код на питоне - это такой код, который как можно реже и на как можно больше долгое время отдает управление коду не на питоне.
>>1975583 Потому что в видеоуроке редактор (IDLE) после запуска файла переносит тебя в режим REPL, в котором ты вводишь команду, а она сразу же исполняется. Это интерактивный режим для набросков и быстрых тестов, который например включается, когда ты запускаешь питон из командной строки.
В VSCode включается исполнение файла, где ты сам контролируешь, когда просить у пользователя ввод (функция input) и когда делать вывод (функция print). После того как программа завершается, интерпретатор выключается, процесс завершается. В интерактивном режиме такого не происходит, и выход нужно запросить отдельно (закрыть окно, нажать комбинацию клавиш, вызвать специальную функцию и т. д.)
>>1967018 (OP) Знатоки, подскажите если знаете - этот https://ideone.com/f3kWZ4 код нормально выполняется на сайте, но довольно странно выполняется в убунте. В убунте получаю вот такой результат:
>>1975565 легко, у тебя скачан питон? если да зайди в настройки и выбери интерпритатор, в винде лежит в %appdata%, после перехода в аппдату переходишь в каталог выше, там либо в локал либо в другой папке папка питона,тебе нужен python.exe
Ой челы, да полная хуетень все эти ваши чистые коды, паттерны хуятерны, не ебите голову этим говном, учите лучше пепы Чем чаще я смотрю исходники популярных либ, тем больше убеждаюсь в этом Какой нибудь SOLID ещё ок, но это достаточно интуитивная вещь
Приветствую всех. Меня тут жизнь зафорсила на изучение питона и мне понравилось. Хочу для удовольствия сделать несложное приложение с интерфейсом, работающее на Windows. Через что это делается, что мне для этого нужно знать кроме базового синтаксиса питона? Я понимаю, что этот язык обычно используется для других дел, но сейчас интересно именно с таким поебаться. Спасибо!
>>1975410 Далее идет простыня текста человека, которому заплатили за рекламу. Можно не читать.
Яндекс выпускает годных студентов, более того, часть наставников - это действующие сотрудники. Но лишь малая часть студентов устраивается в саму компанию.
Более того, у них неплохой роадмэп по обучению, с тренажером, ревьюверами, наставниками, с портфолио и дедлайнами во время обучения. В обучении так же входит командный проект, где дают тебе пощупать гит и вот это вот всё. Работа с докер, у бэков курс по алгоритмам итд. Вся переписка студентов проходит в слаке.
А в конце HR будут давать тебе фидбэк по твоим собесам, будут вылизывать твое резюме до тех пор, пока ты не устроишься. Я не знаю откуда они вылезли, но по мне так всё идеально. Не знаю как на практике.
>>1976200 >а корочку получить в каком-нибудь говне типа СИНЕРГИИ Достаточно любой заочной дистанционной вышки В синергии говорят часто кидают на последних курсах
>>1976224 Ну, я и подразумевал заочные дистанционные вышки, синергия просто как пример совсем уж лютой параши. Раз уж общество требует от тебя корочку, то можно её просто где-нибудь пассивно получить. Всё равно в России не существует централизованного высшего образования по направлению разработки. Чистая математика - может быть, вполне. Учитывая достижения на олимпиадах различных. Но "айти образование" в РФ - это пиздец.
>>1976200 Выше уже писалось, что питонистам важно, чтобы import this соблюдался. Быстрее научить с нуля писать читабельный, технологичный код, чем переучивать уже набившего руку спеца. В общем наверно холиварная тема, но я согласен с предыдущими сообщениями на эту тему. Те, кто сумел по книгам прийти к дзену, еще большее уважение.
>>1976389 >import this Там все настолько расплывчато и со столь свободной трактовкой, что при обсуждении кода выйдет победителем самый гуманитарный среди всех разработчиков.
>>1967018 (OP) Как на Пистоне смержить 2 отсортированных массива? (чтоб получился другой отсортированный массив). Есть дефолтное решение как на скрине, а в либах есть че-то подобное?
>>1976466 На какую дополнительную? sort сработает быстрее только потому что он на си реализован, и собственный алгоритм слияния будет тормозить из-за того, что интерпретатор питона вместо скомпилированного кода. При больших числах это сказывает и f начинает догонять g. В первой строчке количество элементов, во второй время выполнения - код на третьем пике.
А если прикрутить нумбу, то собственный алгоритм обгоняет без каких-либо шансов твой sort, потому что sort тут не нужен от слова совсем.
На самом деле я не верю что в питоне нет функции для слияния сортированных массивов которая уже как sort скомпилирована - а я просто её не знаю.
Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь. Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию питоньего кода - PEP8, чтобы от зубов отскакивало. Когда напишешь свою первую имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent. Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce. Отсос хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты
>>1967018 (OP) Поясните за setup.py Когда он нужен? Я ведь могу просто добавить нужную мне версию либы в requirements.txt и потом установить все через pip install -r requirements.txt
>>1976638 Вот чтобы ты мог "просто добавить нужную версию либы в requirements.txt и потом установить все через pip install -r requirements.txt" разработчику этой самой либы может понадобиться setup.py.
>>1976243 >>1976224 Что за синергия и почему кидают? >>1976134 У яндекса курсы прикольные, но мне не понравилась тема что на тренажере у них например ты написал код, и он блядь работает. но проверку не проходит. Я один раз охуел не понимал как такое возможно. потом оказалось что нужно было писать путь к файлу на чтение, как указано в задании. при том что блядь без указания пути в коде файл читался прекрасно. Вот это ОЧЕНЬ ХУЕВО, уровень низкий.
>>1976938 >Что за синергия и почему кидают? Вузик самого паршивого качества, где никто нихуя не делает. Кидают потому, что на последнем курсе тебе просто могут не выдать диплом/отчислить/спиздить деньги
>>1976986 У них просто направления не аккредитованы или как это называется, причем направление киберспорт что забавно аккредитовано, страшно подумать какие направления хуже чисто если по названию судить. А вуз частный а не государственный
>>1976991 А. я такие вузы кстати помню были в начале нулевых, у нас даже был вузик, состоявший полностью из пидорнутых с подобного универа преподов, а декан был бывшим директором такого вуза. их пидорнули как раз потому что не было у них никаких аккредитаций и лицензий.
Господа, столкнулся со странной проблемой. На одной виндовой машине использую скомпилированные pyinstaller'ом скрипты, и в какой-то момент они перестали работать. Вылезает ошибка
Я как бы не полный дурак, читать умею. Все права выставлены правильно, запуск от имени администратора не помогает. Смущает то, что при запуске .py-файла все отрабатывает хорошо. Что за ебаный нахуй?
сап, двач хочу написать свой интерпретатор для fim++ на питоне в ходе размышлений понял, что мне надо как то создавать функции. Функции самые простые. можно, конечно, прибегнуть к кодогенерации в отдельном файле, но это какой-то костыль. потом я вспомнил, что все в питоне есть объект, и начал копать в класс function, который должен быть ключом к решению моей задачи. Так вот, у меня несколько вопросов. 1) где можно посмотреть исходник этого класса 2) может быть, я снова занимаюсь хуйней, и у этого класса есть какой-то супер конструктор, в который можно передать код функции и он вернет экземпляр? 3)пока копался в этом классе, нашел конструктор этого класса, но вызывается он максимально неудобно: def test(): pass; test.__class__ . Вопрос: можно ли сделать это другим способом?
по сути, мне нужно посмотреть на исходники, дальше, наверное, я сам разберусь, но может кто-нибудь уже решал такую задачу
>>1977003 >в ходе размышлений понял, что мне надо как то создавать функции ... Через def функции создаются, ты о чем вообще?
>>1977025 Нет, это поднимает другие вопросы. Какой к херам eval и compile? Ты отменного говнокода что ли навернуть решил? Функция это объекта класса у которого определены методы __call__ и __get__ - пили и модифицируй как тебе угодно
>>1977030 Учил джангу. Вкатился на Торнаду и аиохттп. Для себя пилю на sanic/fastapi. Скоро буду менять галеру, вообще похуй на какой фреймворк - все однохуйственно
>>1977029 да я понимаю это, а еще я опечатался, не eval, а exec. я хотел создавать функции на лету, но, возможно, это плохая идея. да и через exec тоже какая-то хуета получается. наверное стоит сначала создать все функции, а потом уже исполнять программу. в проектировании компиляторов, интерпретаторов я не силен вообще, мне в унике дали таск такой, приходится что-то придумывать
>>1976596 >Скажите, на сколько достоверна эта паста: Известная паста, но очень старая. Религию из PEP8 делать не надо. Tornado/Gevent устарели, вместо gevent сейчас asyncio. Вместо Tornado другие асинхронные фреймворки.
А хайлоад и технологии это как раз всякие Apache Hadoop и другие модные слова, вот их надо изучать и понимать.
Подскажите, парни: есть список списков. Его нужно интегрировать в словарь так чтобы вложенный список стал парой "ключ:значение" и каждый первый элемент внутри вложенного списка стал ключом. Как корректней это сделать? Например: есть условный список списков: main_list [ [word1, word2], [word3, word4], [number1, word5] ] нужно чтобы он стал словарём: main_dict { 'word1': 'word2', 'word3': 'word4', number1: 'word5' } пик_рандом
>>1977341 Странно, у меня выдаёт такую ошибку. Первый элемент недостаточной длинны? ValueError: dictionary update sequence element #0 has length 0; 2 is required
Пытаюсь разобраться и накатать парсер конфига: import re import json
filepathw = "/home/test.json" filepath = "/etc/nginx/conf.d/hosting.conf" data = [] dom = None result = None parser_dict = {}
with open(filepath, 'r') as conf_line: for conf_lines in conf_line: description = conf_lines.strip().split(None, 1) dom = description data.append(dom) parser_dict = dict(data) print(parser_dict)
with open(filepathw, 'w') as file_write: json.dump(parser_dict, file_write, indent = 4)
В чем суть переноса скобок отдельно? Знаю что во всяких других языках это норма. Но выглядит нечитабельно же. Почему многие их пишут как в нижнем варианте?
>>1977343 Значит у тебя список не такой, как ты указал в прошлом посте.
>>1977350 И код твой довольно бессмысленный, если ты json файл не прикрепляешь, не говоря уже про то, что ты никак не используешь то что у тебя json файл, а не просто файл.
Если у тебя пустая строка в начале файла, то он всегда будет на ней падать. Или если там фигурная скобочка и больше ничего нет.
У меня ноль идей, почему ты не написал print(data) и не посмотрел что за кашу ты там считываешь, а вот писать список вручную в посте >>1977339 тебе не лень.
>>1975875 Недавно в радиоте этот солид обсирали, как раз за то что каждый его по-своему понимает и за то что применять его хоть как-то можно разве что в жаве. Паттерны хуйня. Можешь считать что property, classmethod, декоратор, дескриптор — это тоже паттерны. Они у каждого языка свои. В хаскеле всякие лифтинги с линзами паттерны. Те паттерны про которые все слышали по сути все из жавы или шарпа.
>>1977410 Код с третьей картинки же. t1=time() ... t2=time() return t2-t1
Там есть модуль timeit - используй лучше его. Я просто не питонист и было впадлу вникать как тут измеряют производительность нормальные люди, или как передать в timeit не просто функцию, а ещё и аргументы к ней без строки - потому просто большие числа поставил, чтобы время выполнения было сопоставимо с точность time() Если бы я писал что-то на питоне - я бы настроил под него kcachegrind, просто потому что мне оче нравится картинки из него.
>>1977339 > чтобы вложенный список стал парой "ключ:значение" и каждый первый элемент внутри вложенного списка стал ключом {item[0]: item[1:] for item in main_list}
Веду проект на DjangoCMS. Через Filezilla скачал main.css, внёс небольшие правки, загрузил обратно и теперь проект выдаёт 502 на всех страницах. Что делать?
Кароч, я нуфаня, только прочитал первую книжку по питону, и решил в качестве проверки знаний выполнить CS50 лабу(https://cs50.harvard.edu/college/2021/spring/labs/6/). Все написал сам, кроме вывода (ну и формулы расчёта вероятности). И вот с выводом чёт меня заклинило. key=lambda team: winners[team] Что конкретно эта лямбда делает? Ну, те я понял, что она сортирует ключи по их value, вместо алфавитного порядка, но может мне кто объяснить как это работает? Алсо, поч дебагер отказывается видеть файл? Сам по себе скрипт прекрасно отрабатывает, но вот дебагер VSCode работать отказывается.
>>1976538 > если прикрутить нумбу Можно, в принципе, что угодно прикрутить - вопрос целесообразности. Если речь идёт о каких-то двух несчастных массивах в пределах тысяч элементов, не вижу никакого смысла использовать что-то, кроме sorted() или ".sort". Дальше уже можно задуматься.
Ребят такой вопрос, нужно сделать сайт что то на подобие R-keepera, Что нужно сделать что чтобы можно было заходить сразу под 4 пользователями, Кассир, Оффициант, Администратор, и Бармен. И все работало в режиме реального времени, например если официант сделал заказ - то заказ пришел кассиру сразу, а он пробил заказ на кассе и заказ отправился бармену на готовку например. Можно ли реализовать такое в Django и как такое делать? Через многопоточность? Есть советы что почитать по этому поводу
Предыдущий:
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: 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/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется
— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
Исходник: https://dumpz.org/bASGKD8cCFDf