Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: 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
>>1990004 Если ты решил делать игры на питоне, то остановись и подумай, все библиотеки питона для игр такое себе. Лучше уж выбрать юнити или другой движок и писать на c
Годная литература по алгоритмам никогда не устаревает я правильно понимаю? Посоветуйте пожалуйста. Грохаем алгоритмы слишком проста по отзывам. не бейте
Решил тут почитать мангу, а у нее страницы сдвоенные, но не все. И некоторые сдвоенные на самом деле развороты. Как написать скрипт, который бы разделял одну картинки на две, при условии что сдвоенные картинки имеют ширину большую чем высоту, и белую полосу в середине?
>>1989943 (OP) Здравствуйте, такой вопрос возник, вот щас дошел до изучения сортировок и вроде все понятно кроме одной вещи, а как на экран то результат вывести? То есть вот, сортировка Хоара, она получает какой то список, че то там сортирует, а как увидеть то результат соритровки в том же самом например вскоде Объясните пожалуйста, просто уже вроде как какую лекцию смотрю и нигде вообще не объясняется как вообще либо увидеть результат
Привет тред. Я правильно понял, что сокеты подходят только, если клиент написан на питоне? А если делаешь сайт, то они не подойдут, ведь клиент то не на питоне будет написан, а будет слать запросы к серверу из браузера? Тупой вопрос, но я в работе веб приложений что-то совсем нихуя не понимаю. https://www.youtube.com/watch?v=3UOyky9sEQY к примеру как код из этого видика переделать, чтобы это все крутилось в браузере?
>>1990394 Не тролю, у меня нихуя не получается и я не понимаю почему, то есть первый раз когда я вставил оно отсортировалось, начал еще раз пробовать начал выдавать вот такую ошибку
Есть функция, которая возвращает данные из бд логов (индексы и партицирование уже настроены). Проблема в том, что иногда скрипт долго висит из-за выполнения этой функции, т.к. на каких-то итерациях из очереди запрос может выполняться по 15-20 минут. Как мне внутри функции добавить асинхронный счетчик времени? Ну т.е. как сделать, чтобы при вызове функции запускался счетчик, дальше идёт запрос к бд, дальше функция ожидает ответа и переключается на счетчик. Если счетчик насчитал за время ожидание, допустим, 10-15 минут, то принтит варнинг.
>>1990444 Так и сделал, он ту же самую ошибку выдает, хотя в самый первый раз оно почему то сработало >>1990446 Но как же... я же думал что лучший ЯП эвар... на самом деле ничего не думал, но впервые столкнулся с тем что сначала вроде работало, а щас перестало , хотя ничего по сути не изменилось
Учить программирование по функциональщине и скриптовом языке, всеравно что пытаться водить боинг видя вчера только руль машины. >>1990453 переменные в функции локальные, точка входа получает только ссылки или подготовленные данные по типу func(a. 11, t, 55) nums в тексте это примерно proc.main.var.nums nums в функции это proc.main.func.name[nums] разный уровень вложености.
>>1990459 >Учить программирование по функциональщине и скриптовом языке, всеравно что пытаться водить боинг видя вчера только руль машины. Этого двачну, сначала надо низкоуровневого говна пожрать. Но вкатышам хрен объяснишь.
>>1990462 У функции не переменные на входе, а ссылки, уже внутри разные уровни вложенности и доступа, все локальные не доступны из вне, и точка выхода только в ретурн.
Создай еще один экзепляр, просто функциональщики не могут в написание нормального кода, и логично чтобы A = func(B) и A = func()->(B) A=func(* B). отличались. Новички думают или создается копия, а оригинал сохраняется переменной или операциия происходит с самой переменной по типу B:= func(B)
Всем привет! Имеется. Как в пайтесте параматрищировать API ендпоинты? Допустим есть 5 разных видов эндоинтов, на который нужно написать один тест. url1= “http://“ url2= “servis-huervis” url3= “.com” url4= “.pidor” Url5= “https://“
Вот из таких комбинации грубо говоря нужно сделать один тест. Как это параметризировать? В идеале, если это можно какую-то фикстуру запилить, скажем if url3 ==“.com” то делай это. И тд.
>>1989943 (OP) Я произвожу некую операцию, которая занимает долгое время (запрос в базу например), как мне поставить таймаут на эту операцию, чтобы если он истек то выскочило некое исключение, которое потом можно было бы обработать?
>>1990470 Про то что на входе не надо ничего писать я и с первого раза понял, а еще у меня методом тыка получилось понять отчего TypeError возникал >>1990463 >объяснишь Справедливости ради, особо никто и не пытается объяснять, а те кто пытаются пишут настолько сложно что хуй разберешь что они тебе посоветовали, порой создается впечатление что программисты выебываются своим знанием технических терминов и стараются как можно больше ими выражаться прям как 12 летние девочки из твитора у которых зарубежных слов в посте больше чем русских
>>1990459 >Учить программирование по функциональщине и скриптовом языке, всеравно что пытаться водить боинг видя вчера только руль машины. И функциональщина, и скриптовые языки довольно естественны.
Просто функциональщине надо иначе учить и иные задачи на ней решать.
Языки вроде питона тоже понятнее, чем Си-Ява. В последний слишком много с самого начала инженерной хрени непонятного назначения.
#include <stdio.h> int main(void) { printf("hello world \n"); return 0; } Вот тут, что такое include, что такое stdio, что за магия, int, main, void, return?
Чуть дальше начинается магия с выделением памяти и т.п., и т.п.
Правда для бэкграунда в это полезно погрузиться.
Но я бы сказал, что питон как первый язык очень-очень хорошее решение. Вот JS, PHP так себе варианты, лучше не надо.
>>1990586 Последние 10 лет небось занимался лишь дрочевом tpl-шаблонов со вставками жкьюри да косплеем жавовского спринга, устраивая из него каргокульт?
Как вообще для вката jetbrains academy + leetcode + свой аналог двощей на джанге? Плюс ещё Кормена наебнуть и что-нибудь по проектированию рестухи. Из опыта в ит стажировочка по системной АНАЛитике и 3 курс вузика по прикладной информатике. Плюс пара хаков выигранных. Хватит такого чтобы каким-нибудь джуном пойти или ещё чего-то наебнуть?
>>1990604 Если тебе это интересно, то очевидно стоит попробовать. Но будь готов к тому, что при лучше раскладе уйдёт около полугода на вкат джунобомжом.
>>1990429 Убери мутабельную переменную из дефолтного значения. Это первое. И никогда так не делай. Она инициализируется 1 раз и если вызовов функции будет два, то ты охуеешь искать где баг, так как предыдущий вызов будет влиять на следующий. Второе, ты когда функцию вызвваешь для списка из 1 числа, то возвращаешь None. А питон складывать None со списком не умеет. На это питон и ругается. А вот эти долбаебы советчики я вообще в ахуе >>1990444 >>1990434 Но вот этот дебил просто пиздец. Язык у него через раз работает, пиздец. Мозги у тебя через раз работают просто >>1990446
Потихоньку учу питон, вкатываюсь в функции. Попробовал подключиться к рабочей базе данных, и сначала не получалось, потому что код был такой: https://ideone.com/XaTPfr
Потом я добавил функцию main, которая вызывает connection внутри test, и оно заработало: https://ideone.com/z1yujK
Почему не работал мой вариант? Я думал, что если возвращаю через return результат подключения (conn), то могу использовать его как аргумент в следующей функции.
>>1990604 Пиздос, тебе сейчас фантазер уже 1 написал про "войти в айти за полгода". Кроме того, что это обесценивание знаний, так еще и просто неправда. В лучшем случае, если повезёт года полтора. В среднем на два года расчитывай. Сюда докидывай от месяц до трёх на поиск работы(в зависимости от региона и размера города).
>>1990653 Я пробовал читать/смотреть гайды, везде пишут/говорят, что вот, мол, хуе-мое, вот функция, возвращаем ее результат, и теперь мы можем этот результат использовать дальше. И никаких main() там не было.
>>1990670 Да, во втором случае я это и сделал. Но я-то думал, что передавая в test - conn как результат функции connection, оно будет работать. И вот я не понимаю, почему это так не работает.
>>1990649 Надеюсь ближайшие 5 лет 95% вкатывальщиков, которые параллельно лезут на рынок вместе с мной, будут вот такими, тогда себя не таким отбитым уёбищем ощущаю.
>>1990683 >Я думал, что если возвращаю через return результат подключения (conn), то могу использовать его как аргумент в следующей функции. Вызовом функции connection() на 11 строке ты "создал" объект подключения в памяти, но не привязал его ни к какой переменной (ссылке). Потом ты на 20 строке вызываешь функцию test(), которая принимает на вход что-то, в твоём случае объект подключения, но ты ей ничего не передал, поэтому ничего не работает.
>>1990649 Чтобы использовать результат одной функции в другой, нужно этот результат получить, а потом передать в другую функцию. Сходство названий переменных в телах аргументах разных функций ничего не означает - переменные, объявленные внутри функции, живут только внутри этой функции.
def f1(): x = 0; return x def f2(): x = 1; return x def g(x): return x + 1 print(g(10)) # 11, не 1 и не 2
Чтобы использовать возвращаемое значение одной функции, ее явно нужно передать в другую функцию:
result = f1() print(g(result))
Или сокращенно print(g(f1())).
В твоем случае, в строке 11 создается и тут же выбрасывается объект соединения (т. к. ты не сохранил результат работы функции ни в какую переменную и никуда не передал). В строке 20 функция тест отказывается запускаться, потому что ты не передал туда никакого значения conn.
Что почитать: LEGB rule - алгоритм поиска переменной в питоне; lexical scope.
>>1990646 Есть эндпоинты, они разные. На них нужно писать тест юниты в пайтесте. Чтобы не писать кучу одинаковых тестов где меняются лишь юрл нужно что-то придумать. Пока сделал следующий образом. В файл записал ссылки. Сделал один тест и в этот тест через pytest.paramerize закидываю по одной ссылке. Вроде норм. Но теперь в эндпоинте поменяли адрес с .com на .net например. Можно ли как-то иначе передавать данные в тест чтобы ссылку можно было порезать и в случае изменения домена проставлять нужный.
>>1990415 >Я правильно понял, что сокеты подходят только, если клиент написан на питоне? Нет, неправильно > как код из этого видика переделать, чтобы это все крутилось в браузере? Видеву не смотрел, но судя по превью, там речь идет о голых tcp-сокетах, это не те сокеты, что ты ищешь. Тебе нужны вебсокеты, используй их. Сервер можешь на питоне пилить, а клиента, раз клиент в браузере, на джаваскрипте.
Аноны, кто работал с Instagram? Хочу себе сделать скрипт для автоматического постинга веселых картинок. Есть библиотека instabot. У нее в зависимостях numpy!!!1 и еще куча всякого. Вопрос: Есть что-нибудь полегче? Или пох юзать этого инстабота?
>>1990673 >ЛОЛ, тут в дваче расшаривал игры? Не, боюсь диванона и травли храню петы на гитхабе >как оно тебе? Было весело делать, вообще делал эту игру только потому что нарандомил её в programming challenges pygame довольно прост сам по себе, если делаешь что-то небольшое Сложнее было делать лаунчен на PyQt пикрилкоторый кстати сука при темной теме GTK делает шрифт Qt невидимым, потому что я еблан не поправил конфиг По итогу я не знаю как лаунчер в целом работает, просто гуглил, читал мануал и подстраивал чужой код под себя >что еще за дичь мутил? Смотря о чем вопрос, в целом на пистоне много всякой дичи делал, веб-приложухи, скрипты для автоматизации каких-то задач в ОС Если про другие игры на pygame, то делал alien invaders, по гайду из одной книги python crush course, но это супер давно было, тоже ничего сложного по сути, пытался сделать платформер потом, но ничего из этого не вышло Если про игры вообще, то еще в шараге была задача сделать тот же alien invaders но уже на ассемблере Вот это реально треш был, там мозги кипели жестко, зато теперь понимаю как вообще все устроено на уровне железа
BTW, после шараги начал вкатываться, не справился с требованиями к web ждунам, потому что там была какая-то ебейшая математика и 100500 фреймворков и вот уже год работаю в банке, чищу вилкой данные для дата-сатанистов, строю etl'ки
>>1990651 Братюни спасибо за позитивные слова, я как бы не планирую моментально стать профикодером, рассчитываю на работу примерно через 1,5 года, то есть 18 месяцев на вкатывание.
Пока начал с Яндекс практикума, и хочу составить список литературы для понимания основ, слышал про некого Савина как он?
>>1990586 >>1991010 Чел, а можешь подробнее о себе? Какое у тебя образование? Как математика в школе давалась? Есть ли хоть какой-то интерес к программированию и информационным технологиями или просто хочешь работать за 300к?
Анчоусы, подскажите , как работать с json. Библиотеку глянул, ну нихуя не понял, смог только вытащить структуру словарём. Но наверное же есть методы чтоб кокретный кусок только доставать, а не копаться в словарях тройного вложения.
И вопрос вопрос номер два. Если есть вложеный словарь, можно сразщу получить доступ в N вложение, если знаешь ключи, или только в цикле перебирать?
Дублирую вопрос... Как вообще для вката jetbrains academy + leetcode + свой аналог двощей на джанге? Плюс ещё Кормена наебнуть и что-нибудь по проектированию рестухи. Из опыта в ит стажировочка по системной АНАЛитике и 3 курс вузика по прикладной информатике. Плюс пара хаков выигранных. Хватит такого чтобы каким-нибудь джуном пойти или ещё чего-то наебнуть?
Можно ли в питоне написать код на любом япе и вставить как модуль, как это будет выглядеть, сильно сложно? На уровне пит компилятора должно же быть что-то что будет все это понимать и переводить. Нет?
>>1991119 Передавай жсоном или аргументами командной строки в отдельную программу на другом языке данные и метод который нужно выполнить, лови ее ретурн. Или ты память общую хочешь?
>>1991111 квадриплу грех не ответить >как тебе работа в банке? платят норм? Т.к. первая работа, то сравнивать особо не с чем Понатыканая везде "безопасность" зачастую мешает работать, например мне нужен был один плагин для текстового редактора, так для него нужно завести заявку и ожидать ответа месяц, чтобы админы САМИ тебе его накатили Также не нравится стек, но я думаю так везде сраное древнючее легаси без внятной документации З.п. - немного ниже среднего для джунов, но грех жаловаться, потому что я большую часть дня ебланю удаленка, а потом закрываю довольно простые задачи за несколько часов Если попадается что-то сложное, то спрашиваю помощи и трачу чуть больше времени >кем там числишься? младшим баг дата сиентисом или типа того? Не, все довольно банально - "младший разработчик" >Алсо что за шарага была? Не самая плохая, но и не самая хорошая Как мне кажется в них разницы нет, в любом случае на одной шараге далеко не уедешь, если бы я пытался устроиться только с теми знаниями, что получил там, сейчас бы работал в пятер очке Хотя все же были хорошие преподы, которые делились реально полезными знаниями
>>1991029 Я гуманитарий, в одной школе математика не заходила был троечником . Но когда я перешёл в другую школу, то стал отличником по математике и весь класс у меня списывал, истинна где-то посередине получается, в общем 4. Любимый предмет черчение.
Почему я хочу пойти в ит, Деньги не на первом месте, на первом месте желание уйти из сферы деятельности в которой тружусь сейчас, в общем кардинально поменять профессию, эта идея летала в моей голове очень давно а сейчас уже все, я начинаю ее воплощать, в общем процесс не обратимый, почему выбрал ит- программирование, потому всегда считал программистов некими полубогами, а в теперешней действительности когда технологии и приложения заполонили все сферы деятельности, и подавно, программисты создают новую реальность.
Так же у меня есть дочь, и я бы хотел чтобы она тоже пошла в сферу ит, тк считаю что в ближайшем будущем грубо говоря будет такая альтернатива : либо ты создаёшь машины (роботов, технологии), либо ты обслуживаешь машины, либо машины заменяют тебя. И так сказать на своём примере прорубить окно в сферу ит для неё.
>>1991255 Программирование морально тяжёлая сфера.
Реальное АйТи и программирование в частности больше не про про созидание, а про то, чтобы с чем-то разобраться и много держать в голове. Причём разбираться с чем-то огромным, кривым, запутанным и противным.
Вот ты смотришь код, тебе надо что-то подправить и доработать. Но для этого надо разобраться в куче тебе непривычного и непонятного, зачем там как-то сделано, почему криво (на это есть причины обычно), как переделать, чтобы было не криво и т.п.
>>1989943 (OP) Знатоки, подскажите, почему этот код https://ideone.com/I9qfNc работает так странно. Список my_list объявлен глобально и в обеих функциях мы заводим локальные списки и возвращаем их. Так почему глобальный список изменяется?
>>1991320 Декоратор - внешняя функция, не знает он никаких self, cls и т.д., если только ты не определил его как метод класса, в чем я очень сомневаюсь
Как вообще для вката jetbrains academy + leetcode + свой аналог двощей? Плюс ещё Кормена наебнуть и что-нибудь по проектированию рестухи. Из опыта в ит стажировочка по системной АНАЛитике и 3 курс вузика по прикладной информатике. Плюс пара хаков выигранных. Хватит такого чтобы каким-нибудь джуном пойти или ещё чего-то наебнуть?
>>1991301 >корка шараги помогла при устройстве на работу? Я не знаю насколько это зашквар по меркам двача, но у меня короче СПО ПТУ Насколько я узнал из тредов МЫ ВАМ ПЕРЕЗВОНИМ, подобных кандидатов отсеивает автоматический фильтр, так что их хрюши даже не видят, поэтому я поменял своё СПО на высшее в резюме и по итогу меня самого пригласили после пары недель тестовых в интересные мне компании, которые я успешно заваливал
Как только прошел этап созвона по телефону, то сразу залез в резюме и поставил обратно СПО, а т.к. уже приглашен на собес, то похер В итоге на интервью спросили за высшее, я сказал, что его нет, есть СПО Они сказали, что окей, пофиг
>ты кстати из милионника? Простой Иван, город Пекин
>пиздец у вас там админы отмороженные! Подобная херня везде, где речь идет о бабках Во всех банках без исключения наверное
Парни, есть запрос в базу который выполняется около десятка секунд, потому что собирает больно много данных, как правильно сделать "листалку" (пагинацию) чтобы запрос выдавал данные лишь кусками и база нагружалась меньше?
>>1991468 > А что за данные и зачем их хранить? Грубо говоря, несколько десятков тысяч последних результатов вычислений от разных пользователей, чтобы они могли их между собой переиспользовать, а скрипт не делал лишнюю работу.
>>1991477 > 50к - это вообще ни о чем. От какой планки тогда отталкиваться, миллионы?
>>1991366 Лол, что за прикольная картинка? алсо ты реально из китая? поясни. пиздато, значит можно пиздеть про вышку. И кстати, почему заваливал собесы в другие компании?
Читал кто (а может и имеет цифровую копию) CPython Internals: Your Guide to the Python 3 Interpreter / Anthony Shaw , стоит внимания или есть ресурс получше для копания во внутренностях?
>>1991499 Она уже спирачена, в принципе, по содержанию выглядит достойно, я пока не читал. Ещё есть такая книжка, но она попроще https://leanpub.com/insidethepythonvirtualmachine Алсо, видел на ютубе серию лекций, но они про двойку, не знаю, насколько актуально, для общего развития сгодится, наверное.
>>1991596 В бд есть FETCH, но я слышал что лучше делать это на стороне приложения. При использовании FETCH в бд, она всё равно запрашивает все данные, но выдает порциями, а првильнее будет запрашивать только нужную часть.
Если уже умею прогерить на другом яп то достаточно ли будет прочтения документации чтобы прохавать за синтаксис и либу языка? Или посоветуйте чего чтобы максимально быстро вкатиться.
>>1991492 >алсо ты реально из китая? поясни. На дваче же недавно тема была с автозаменой тян - кошачья жена ДС - Пекин анон - простой Иван город Тверь и тд Или этого в тематиках не было, только в /b/?
>И кстати, почему заваливал собесы в другие компании? Откликался на вакансии типо "знать фласку, пистон, ськуэль и тд." Потом приходило тестовое с докером, нгинксом и другими тулзами, которых указанно не было и я естественно сливался Еще были ебанутые задания уровня "Рассчитайте коллизию двух сфер и визуализируйте полученные данные, если известно, что на вход будут подаваться примерно следующие данные" Я конечно понимаю, что нужно уметь обрабатывать ошибки, но я ебал проверку автотестами с 1 попыткой, где ты даже не знаешь, что именно отработало не так То есть ты пишешь код по мутному ТЗ, отправляешь его, запускаются автотесты - все отработало, окей, беседуем дальше, иначе иди нахуй должны отработать все задачи, которые были даны, без ошибок Ну и мой самый любимый тип вакансий, которые никого не ищут, а просто смотрят че на рынке творится
>>1991644 ... Угараешь? Нахрена передавать туда какие-то аргументы (которые все равно физически невозможно передать как тот чувак хочет) если есть работающее решение без этого говна?
>>1991668 А, то есть ДС? такое проскакивало в пораше вроде но недолго, буквально несколько дней пофорсили и все. и то в основном в связи пыня низкий рост редкий волос Что за вакансии которые никог оне ищут? Это какие то исследовательские агенства? алсо тесты с автопроверкой это пиздец дичь, ну там при сдаче даже не указывается где ошибка? пиздец они психи. рад что попал в банк?
>>1991692 Тот чувак это я и есть. И изначально мой декоратор должен был получать число и объект другого класса. Но поебавшись 2 дня, я нашел другой способ. Теперь мой декоратор получает только число.
>>1991664 Функция globals тебе список глобальных переменных файла, а не папки. В любом случае, явный импорт - лучшее решение. Какой бы ни была проблема.
Уважаемые питонисты, прошу совета. Мне нужно визуализировать около 20Гб данных, записанных в бинарники. Теперь собственно сам вопрос, что для этой цели лучше использовать? Пока что выбор пал на язык R, но может есть какие нибудь библиотеки для питона?
Решил запустить асинхронно. Но multiprocessing не давал этого сделать. TypeError: cannot pickle 'coroutine' object sys:1: RuntimeWarning: coroutine 'Test.event_loop' was never awaited
Но в threading все получилось. Я так и не понял почему.
>>1992086 Потому что "cannot pickle 'coroutine' object" - он же сам говорит Он не может в бинарный формат корутину перегнать чтоб потом ее десереализовать
>>1992108 Общее пространство памяти, не надо передавать объект в другой процесс ( для передачи его надо запаковать - pickle). И для трединга другая метода передачи объектов из одной asyncio.loop в другой
Всем привет. Начал, как тот торговец-каджит выше, вкатываться в программирование на питоне... 35, 5 лет вахты ведущим инженегром ПТО, в/о теплоэнергетик, программировал в школе на турбопаскале. Сам с микропосёлка в залупе мира. Повелся на пиздеж отца, что энергетик царь и бог + электростанция под боком. Пришел к тому, что заебло морозить жопу в ебенях с уральским и прочим быдлом настолько, что уже физически тошнит от тупорезов + потолок по зарплате в моей сфере это 150к~2k$/ Так шо пока сижу на работке, изучаю Питон, прохожу Я.Практикум, хочу заказать на алике ардуино наборчик, собрать какого-нибудь робота с племянником и прикрутить к нему питон, сделать простое приложение на телефоне, чтобы можно было управлять и тд. Короче, вот такое хобби.
На вахту поехал, потому что нет вариков больше, как поднять тонну бабла за относительно короткий период времени, а это был самый логичный вариант, купил хату в итоге на скопленные рублики... В общем, хочется сменить сферу и в более перспективную и интересную область перейти, в сфере программирования и робототехники, потому что за этим будущее/настоящее. Хотя, пока в перспективе из программирования+роботы первое, что на ум приходит это прошивка и ремонт домашних роботов пылесосов)))
Лутц выбесил. Про сраное импортирование столько воды налил, что пиздец. Раза в два больше, чем про функции. При чём функции как раз надо разжёвывать в деталях с кучей примеров, но он оче кратко всё описал и побежал дальше. А ебаные каталоги и импортирование модулей у него размазано на миллиард абзацев, при чём часто повторяя одно и тоже. Сука. Там вся инфа на 2-3 страницы от силы.
Сап питонач. Я в процессе вкота в питон, для начала запилил простенького дискорд-бота для практики и теперь думаю что делать дальше. Из того что я уже нагуглил/прочитал в нюфак треде - для того чтобы иметь хоть какие-то шансы на трудоустройство нужно изучить какой-нибудь фреймворк и REST api. Решил начать с фреймворка и выбрал Джангу, но пока гуглил гайды - понял что в некоторых местах мои знания явно проседают. В шапке дохуя книг, но какие из них нужны - непонятно.
Посоветуйте книжку по Джанге и книжку по Ресту, да и вообще разных советов мудрых.
>>1990847 Спасибо, анон. Таки нашел пример с вебсокетами, где клиент шлет запросы из браузера, очень годно. https://www.youtube.com/watch?v=4haMUvUxUJI&list=LL&index=1 Теперь есть еще пара вопросов, если вкратце направишь буду крайне благодарен. 1) Я хочу сделать любую веб игру в которую играет 2 человека, хоть крестики нолики, главное чтобы состояние игры менялось после ходов игроков. Я так понимаю, что состояние игры и очередность хода без проблем будет считаться на сервере, хоть в каком нибудь словаре, а клиенты будут обращаться к серверу, видеть очередность хода и от этого уже можно будет сделать ход или нет и т.д. Как это масштабировать, чтобы одновременно могло несколько сессий проходить, чтоб разные люди могли играть. Тоже самое, только в словаре несколько сессий хранится? Подозреваю, что есть стандартное решение этого вопроса 2) Как проще всего вывести и вести разработку на реальном сервере, чтоб можно было не с локалхоста ебошить, а по нормальному адресу, чтоб можно было корешам скинуть показать что уже получилось, какой самый быстрый / легкий вариант?
На видео чувак реализует руками http протокол. Это как-бы странно, максимум для обучения полезно, чтобы понимать, что такое http протокол.
На практике это работать не будет, у него там очевидно однопоточный вариант, или надо будет ещё треды использовать, или asyncio, или руками делать аналог асинхронности через селекты, но это зверство.
То, что нужно для твоей задачи, это использовать какой-нибудь асинхронный фреймворк. Например aiohttp.
Так ты получишь и возможность с вебсокетами работать, и веб-страницы отдавать. Тебе ведь надо, чтобы твой сервер саму страницу отдал, на которой формы, реализация клиентской части с работой по вебсокетам и т.п.?
>Тоже самое, только в словаре несколько сессий хранится? Самое простое, ты хранишь id сессии, и словарь объектов-состояний игры. Скажем игровое поле, чей сейчас ход и т.п.
Следующий уровень, это когда ты состояние хранишь в каких-то внешних сервисах, вроде redis, БД или чём-нибудь ещё. Так можно устойчивость и большое масштабирование сделать, но для твоих задач это не нужно.
>какой самый быстрый / легкий вариант? Вариант только купить себе хостинг на VPS, цена вопроса на уровне 5 долларов в месяц. Можно дешевле что-нибудь найти, но за 5-10 долларов в месяц есть какие-то очень-очень приличные варианты.
Бесплатно такие вещи не очень дают из соображений безопасности.
Я делаю учебный проект в котором с каждым шагом накидываются дополнительные задачи. Нигде не пояснено - могу ли я в проекте каждую подзадачу делать в отдельном файле, чтобы титульный у меня только спрашивал какую функцию я хочу запустить и брал их из файлов, так же нигде пока не написал - нормально ли это писать все просто в одну страницу, но лично мне так кажется как-то монструозно. Где почитать или может есть простой ответ как разбивать проект на файлы и оформлять по человечьи сразу?
>>1992985 Спасибо, я уловил, вот только понятия класс еще не видел(я знаю что это такое, но в "программе" пока не подразумевается что мне стоит париться с этим пока) Но главное что я понял что это import. Т.е. он сразу поймет что я импортирую из соседнего файла в проекте, а на будущее - если я захочу импортировать из другого проекта - мне надо сначала добавить фаил в проект или можно как-то import ~/Pidoras/musor/proecthuini hyinya.py zashkvarclass? Или так делать не принято из-за неразберихи с файлами и невозможности запустить проект если я забуду отправить все человеку и он не распихает все по директориям так же(или у него вообще винда)?
>>1993007 Я решил открыть рандомную книгу, только не для детей и понял информацию сразу. А эта книга создана дьяволом. Я даже не представляю, как её смогут понять дети.
>>1993286 Я учу по фану и мне похуй, но я уже вижу что работы "хуила питоновая" не существует как с джавой, например, это либо дрочила цифер у которого плюсом идет ЛЮБОЙ скриптовый язык, либо питон написан десятым языком в требования, либо вообще в позиции "ну было бы не плохо, а вообще нахуй надо". Смотрел по питеру если что. Я не знаю почему я выбрал питон, но я уже чувстую со всех сторон намеки на туповатость этого выбора.
>>1989943 (OP) Почему при асинхронном доступе к базе (например aio sqlalchemy) мы совершает await дважды: при запросе в базу и при доставании результата как вот тут:
async with self._connector() as connection: ----query_result = await connection.execute(query) ----rows = await query_result.fetchall()
Антоны, скажите правильно ли я составил список действий для того чтобы устроиться на работу по программированию? Читаю грохаем алгоритмы>читаем лутца и выполняем задачи оттуда> опционально читаем кнута, параллельно пишем какую-то программу (и тут вопрос, для того чтобы путь от профана до работника был максимально краток, мне нужно акцентироваться на вебе, или можно заниматься приложениями? Хотелось бы конечно второе). Надо учить все так чтобы сразу засесть за работу, а не терять время на условной стройке, так что оклад устроит любой, лишь бы на еду хватало. И вообще сколько времени займет путь от профана до быдлокодера-работника?
>>1993844 Хорошо, я понимаю. Мне нужна хотя бы просто какая-то сверхзадача, чтобы на ней акцентироваться и от нее исходить. Есть какие-нибудь идеи вроде борды5000запросов в секунду как в той пасте?
>>1993889 Он прекрасен, это вершина человеческой мысли, ничего лучше нет и быть не может. Мне на работе намекнули, что можно подучить питон и скинули ссылку на курс хотя изначально я шел на другие дела в этот проект, я очень скептически отнесся, потому что тяги к самообразованию у меня давно уже не было, но мне невообразимо зашло. Просто влюбился в него с первого взгляда. Продолжаю его изучать и выбиваю себе задачи на питоне, жизнь удалась.
>>1993897 Если это не ирония, то в будущих версиях нас ждет оптимизация, еще более сахарный код, еще более плюшек, case конструкции, хз даже почему его так хейтят, мол для даунов и ничего не может. Веб, приложухи, даже уже микроконтроллеры есть. Как что еще нужно? Чел из видоса мониторил джобы по питону, на хх и прочих, там рили питон топ и больше всего строчек по нему. Даже по моей мухосрани строчек больше на питухоне чем на сях, жаве и прочем, но там практически только веб или всякие академгородки.
Как понять что я не пишу хуйню? Тренировочные задачи, я решаю - изъебываюсь, затолкал все в функции, у меня идет работа с 5 переменными, которые я затолкал в листы, каждая функция либо лямбдой вычитает из оригинального листа количества, либо превращает некоторые элементы в нужные. Смотрю как ее васян со стак оверфлоу делает - тупо переменные +, переменные -, просто последовательный список операций с каждой переменной. Короче у меня 50 строк, у него 97(с однаковыми отступами по ПЕП) и без комментариев. Но с другой стороны у него как топор читабельно, у меня тоже(учитывая тупость учебной задачи), и обе задачи проходят проверку edutools Вот это особо не поясняется кроме ублюдских видео на ютубе косого лысеющего хохла советующего не изобретать велосипед
Я тут что то по ностальгии заглянул в ваш тред и стало интересно. А веб на питоне сейчас до сих пор пишут на джангоговне или появилось что то нормальное?
Статья конечно старая, но я думаю алгоритм обучения от переменных то есть от конкретных библиотек и языков не сильно зависит, а потому можно будет нагуглить новые, если эти устарели. Надеюсь добрый, мудрый, смелый, отзывчивый, великолепный анон скажет в чем я не прав если что
>>1994061 Это весьма очевидный список, ты его найдешь и в гугле, и если посмотришь программы курсов, там все есть прямо как на хабре. Я сегодня знатно проиграл, захожу на скиллбокс(потому что присылает мне рекламу в вк постоянно), там все эти курсы, вижу курс джанго за 12к, тысяча в месяц, думаю что когда дойду - подумаю стоит ли брать, типа тысяча немного, но я получу анального раба-препода отвечающего на вопросы, открыл этот курс, внизу кнопка - "скачать программу курса", нажимаю - кидает на главную страницу. КУРСЫ ЕБАНЫХ КОМПЬЮТЕРНЫХ МАСТЕРОВ, ПРОФЕССИЯ ВЕБ ДЕВЕЛОПЕР НАХУЙ ГЛЮЧНЫЙ ХУЕВО ОТОБРАЖАЮЩИЙСЯ САЙТ ХУЙНИ СДЕЛАННЫЙ КОНТУЖЕННЫМ ДИЗАЙНЕРОМ И ТАКИМИ ЖЕ ВЕБ МАКАКАМИ ЕБАЛ В РОТ. И решил что сам когда придет время выучу джанго
>>1994096 >вижу курс джанго за 12к, тысяча в месяц И вы могли подумать что он на год, а нет, он блядь на полгода. И там все цифры такие, например тестирование мобильных приложений 58800 на 9 месяцев, и это всего 2450 в месяц! Я не могу это объяснить
>>1994031 >у меня идет работа с 5 переменными, которые я затолкал в листы, каждая функция либо лямбдой вычитает из оригинального листа количества, либо превращает некоторые элементы в нужные. Нихрена не понятно, что ты имеешь в виду. Смотреть надо. Если ты оптимизируешь строчки тем, что в одной строке делаешь две операции, то это ни разу не оптимизация.
Код должен быть читаемым и сопровождаемым. Не уверен, что это про твой вариант.
>косого лысеющего хохла Если ты голубоглазая пышноволосая русня, что ты вообще в программирование лезешь? Или в манагеры по продажам, там симпатяшки нужны. А не те, кто что-то умеет.
>>1993612 По идее, оба раза ты реально обращаешься к базе данных, по сети соответственно. Поэтому нужен await, синхронно лучше не делать.
Первым запросом СУБД разбирает запрос и помещает результат куда-то к себе в буферы. Из которого ты можешь запрашивать данные как построчно, так и все вместе. Вторым запросом бы именно выкачиваешь данные из СУБД к себе в процесс.
>>1994090 То есть можно с этим прийти устраиваться? >>1994096 Где то читал что нанимать препода - гиблое дело, у него ~30-50 учеников и отвечает он дежурными фразами, мол легче самому все это искать, а тому что могут дать на курсах ты один хрен сам научишься >когда придет время Звучит как оправдание не находишь? "Не получилось ну и ладно, главное что я старался". Не откладывай в долгий ящик
>>1994130 >голубоглазая пышноволосая русня Ну не совсем, я голубоглазая пышноволосая полунемчина полу жидяра, может мне можно все таки? Я уже в манагерах и админах клуба был, не хочу больше.
>>1994134 Не верю, что может быть какой-то смысл в дешёвых онлайн курсах.
В живых курсах может быть какой-то прок, там контакт больше, ты видишь препода, он тебя, ты видишь как и что делают другие ученики. С ними можешь что-то обсуждать. Правда такие курсы будут в любом случае дороже стоить, чем 2т.р. в месяц.
В онлайне сложнее это обеспечить в принципе. Как-то можно, но это сложно и дороже будет. Хотя если с тебя много попросят, то не факт, что этим обеспечат.
Тебе в обучении нужна обратная связь, а здесь скорее всего её не будет.
Просто электронных материалов дофига и бесплатных. Тебе не нужно даже ворованные курсы с трекеров качать.
Возьми программу курса и сам изучи нужные темы по этой программе.
>>1994031 Ты долбаеб в строчках оценивать качество кода? Два главных качества кода это поддерживаемость и читаемость. Чтобы оценить насколько все плохо у тебя с этим на данном этапе, напиши проект тысячи на полторы строк. Оставь его на месяцок-два, а потом открой и попробуй внести туда новый функционал. Вот как раза два-три такое придется сделать, так сразу поймёшь, что городить лямбды на ровном месте хуйня затея, что лучше написать топорно, чем хуячить редкоиспользуемые функции и модули, что экономия двух десятков строчек выливается в десятки часов ебли и охуевания от того, что ничего не работает.
>>1994207 Если ты пишешь код, для которого нужны комментарии, то ты уже пишешь говнокод. Как минимум, ты заставляешь человека не только поддерживать код, но и поддерживать комментарии. Но это половина беды, вторая половина заключается в том, что говнокод на то и говнокод, что комментарии у тебя будут на 30-40 строк, что не просто не улучшит, а лишь ухудшит читаемость кода. Но вообще это все лирика, просто напиши петпроект за недельку на тысячи полторы строк. И попробуй его поддерживать новым функционалом раз в месяц-полтора хотя бы три-четыре месяца. Как перепишешь код в пятый-шестой раз, то приходи за азами кодстайла в тред.
>>1994219 >Если ты пишешь код, для которого нужны комментарии, то ты уже пишешь говнокод Ты бросаешься в крайности. Комментариями надо пользоваться для того, чтобы пояснять, зачем нужен некоторый кусок кода и почему его не надо удалять при рефакторинге. Ну и для пояснения сложных алгоритмов, которые иногда таки приходится писать. Короче - по обстоятельствам.
>>1994244 >пояснять, зачем нужен некоторый кусок кода Этот кусок кода должен пояснять сам себя. Если он этого не делает, то вместо дрочева комментариев его надо переписать так, чтобы пояснял. >и почему его не надо удалять при рефакторинге Для этого должны быть тесты. >Ну и для пояснения сложных алгоритмов Если речь о математических алгоритмах, то там максимум нужна ссылка на википедию.
>>1994254 >Этот кусок кода должен пояснять сам себя Код сам может пояснять только то, что он делает, а не почему. Это две разные вещи. >Для этого должны быть тесты. А если их нет? >Если речь о математических алгоритмах, то там максимум нужна ссылка на википедию. Не совсем. Математические алгоритмы обычно заканчиваются подключением нужной библиотеки - тут комментировать не нужно. Я скорее про всякие ебанутые преобразования данных. Они встречаются в основном в датасаенсе, но и в других сферах тоже не исключены.
>>1994269 >Если у тебя нет ног, то нет смысла обсуждать варианты педикюра. Юнит-тесты имеются от силы у половины проектов, и тоже нуждаются как в комментариях, так и в поддержке.
>>1994266 Глянул ради интереса сорцы django, aiohttp и fastapi.
FastAPI очень-очень бедно задокументирован, aiohttp средненько с большим упором на docstring, а не комментарии.
Зато вот django просто конкретно закомментирован. А django всегда считался образцом, как надо проектировать, документировать, такое настоящее индустриальное ПО.
>>1994266 >Это уже документация бизнес-логики или внешнего API, в комментариях сурс-кода такое не пишется и не должно писаться. Любой код реализует какую-то логику, иначе он просто не нужен. Логика может быть неочевидной. Если её оформлять в виде документации, то во-первых, она может быть сильно больше, чем просто код, во-вторых, она будет где-то отдельно, это придётся лезть в документацию. В третьих, в документации часто принято какой-то код или псевдокод приводить для иллюстрации, потому что кодом некоторые вещи проще выразить, чем словами.
Реальная логика действий может быть закопана довольно глубоко. У тебя функция вызывает другие служебные функции для внутреннего применения, не экспортируемые, они другие функции. В них ты закладываешься на некоторые вещи, что у тебя данные конкретного вида, что одно вызывается после другого и т.п. Много магии. Много не понятно, где смотреть. Это реальный код реальных задач.
Я видел народ, который считает, что код должен быть "самодокументированным", но их код обычно ни разу не саодокументирован.
Вообще чаще комментарии не пишут, чем пишут. Но и за код отвечают конкретные люди, кто просто знает что и зачем там без документации. Но это дурной стиль. Хотя в принципе удобно, когда тебя трудно заменить другим человеком.
>>1994271 Проекты без тестов нуждаются в первую очередь в тестах, а не в педикюре. >>1994273 Либо ты говоришь "я комментирую, потому что так правильно, и вот мои причины думать, что так правильно", либо ты говоришь "я комментирую, потому что в джанге/хуянге так кто-то написал, на причины мне поебать".
>>1994280 В первом параграфе ни одно утверждение не следует из предыдущего. Неочевидную логику нужно наоборот описывать как можно проще и на видном месте, а не закапывать в слой комментариев в какой-то жопе. >Реальная логика действий может быть закопана довольно глубоко Ну значит откапывай, а не накидывай сверху еще комментариев лопатой. >Много магии Убирай магию, а не пиши некрономикон.
>>1994281 >Либо ты говоришь "я комментирую, потому что так правильно, Тогда ты скажешь что я никчёмный говнокодер, который пишет говнокод, а нормальные проекты так не делают.
Я говорю, что для серьёзных проектов с хорошей репутацией обилие комментариев это норма.
>Ну значит откапывай, Невозможно сложную логику сделать простой. Примерно как невозможно любую программу уместить в 1000 строчек. Программирование о сложности. Как только проект растёт, растёт и сложность в нём. У тебя всегда есть огромная масса неочевидных моментов, огромная масса допущений.
Я сейчас делаю штуки, где очень много от ETL. Ты работаешь со сложными данными. Я могу не делать какие-то вещи, проверки, закладываться на то, что данные будут нормальными, потому что знаю, что будут нормальными. А если делать непробиваемый код, то там он в разы раздуется и усложнится. Но такие вещи надо комментировать.
Может быть масса решений не очевидных, но удачных. Я делаю что-то не очевидно, чтобы мог поддержать что-то. И вот такие вещи надо комментировать.
>Убирай магию, а не пиши некрономикон. Когда ты пишешь большие и сложные вещи, с большой и сложной логикой, магия всегда будет. Особенно учитывая, что ты завязан на внешние данные и внешнюю магию.
>>1994195 Так это общеизвестный кусок дерьма. Просто один из самых первых фреймов под веб для питона и поэтому много где использовался. Если на питоне до сих пор основа веба это джанго, то слава христу, что я 5 лет назад дропнул этот питон нахуй и вкатился в нормальные технологии.
>>1994244 > Ты бросаешься в крайности. Комментариями надо пользоваться для того, чтобы пояснять, зачем нужен некоторый кусок кода Да, бывает, повторяю, бывает(!!!) иногда ситуация, когда без комментариев не обойтись. Какая-то охуительная схема по подготовке данных к отправке или оптимизация чего-то, когда целенаправленно жертвуют читаемостью в угоду скорости или сложным преобразованиям. Но в общем случае, наличие комментариев говорит о том, что в проекте лютый говнокод и комментарии это попытка хоть немного пролить свет на внутреннюю логику. > почему его не надо удалять при рефакторинге. Чего блять? Ты удаляешь все модули, в которых нету чёткого обоснования в комментариях почему их удалять не надо? > Ну и для пояснения сложных алгоритмов, которые иногда таки приходится писать. Короче - по обстоятельствам. Я выше написал. Иногда комментарии нужны, да. Но они мягко говоря не панацея
>>1994394 > Так это общеизвестный кусок дерьма. Держи в курсе. Особенно смешно слышать это от человека, который пишет на ноде. > Просто один из самых первых фреймов под веб для питона и поэтому много где использовался. Питон в вебе использовали потому что была джанга, а не наоборот. > Если на питоне до сих пор основа веба это джанго, то слава христу, что я 5 лет назад дропнул этот питон нахуй и вкатился в нормальные технологии. > в нормальные технологии > нода-тс бэкендер Ага. Понятно. Продолжайте вести наблюдение.
И там по ссылке глянуть видео на Идель-Реалиях. Суть в следующем: есть семья. Отец-одиночка и три его сына: музыкант, программист, ихтиолог. Программист пишет код на Python и Java и ему Amazon дал личный грант. А также его взяли контрактором в распределённую команду канадской корпорации из 60 - 70 сотрудников. И там на видео бл скриншот кода. Мы там в теме спорим, действительно ли код адекватный для контрактора или вся семейка (музыкант, программист, ихтиолог) врёт, а код - Hello, World.
>>1994414 Кек. А ноду юзает пейпал, нетфликс, фейсбук, амазон и тот же гугл. Дальше то что?)
>>1994519 Я если честно подумал сперва что ты рофлишь, защищая этот кусок дерьма, но видимо нет.
>Держи в курсе Говно орм - раз. Отсутствие асинхронности - два. Худшая в мире архитектура - три. Нихуя почти не развивается - четыре. Единственный его плюс - в коробке сразу много чего есть и не надо руками писать лишнее. То бишь, обычный макакинг. А, ну и про типизацию думаю сам допрешь.
В ноде есть божественный libuv, асинхронность, eventloop, прекрасный тайпскрипт и начали появляться нормальные инструменты по типу NestJS где реализована отличная архитектура DDD, охуенная масштабируемость, заточенность под микросервисы, и куча возможностей для кастомизации. Даже если нест не вкатил - нода пиздец как развивается, и можно спокойно без головной боли собрать охуенный кит для себя на основе того же express/koa.
Хотя нахуй я это пишу, если все что осилил джангодебил помимо ковыряния админок на своем помойном фреймворке это я>Ага. Понятно
Создаю класс. Потом его экземпляр. Создаю пустой класс с именем первого класса. Ссылаюсь на атрибуты экземпляра и он их выдаёт, хотя вроде как должен их искать в классе, а их там уже нет.
>>1994593 Бля, не так. Атрибуты то понятно - они присвоены экземпляру. Я вызываю методы класса. И они вызываются. хотя в классе, к которому принадлежит экземпляр, их уже нет.
>>1994595 Хороший вопрос на самом деле, вот я пожалуй не знаю как. Вопрос "нахуй такая архитектура нужна" не поднимаем.
Когда ты делаешь class A: ____pass
a = A()
то запись вида a.foo(value) в случае, когда у объекта a есть свойство foo, то питон берёт значение и делает вызов как обычного callable объекта. Без подстановки a в качестве первого аргумента.
Если нет, то включается механизм mro, и там это, по идее, эквивалент записи A.foo(a, value)
Слёту кривой выход, если у тебе определён def external_method(self, value): ____print(self) ____print(value)
и ты хочешь связать его с a, но не классом A, то можно сделать что-то вроде a.foo = lambda(value): external_method(a, value)
>>1994595 >Атрибуты то понятно - они присвоены экземпляру. Я вызываю методы класса. И они вызываются. хотя в классе, к которому принадлежит экземпляр, их уже нет. Методы на самом деле такие же атрибуты. Там работает механизм MRO.
Суть в том, что если у объекта нет своего собственного атрибута, либо метода, либо просто другого объекта, то тогда питон смотрит, нет ли такого атрибута у класса этого объекта. Если нет, то смотрит на родительский класс и т.д.
У тебя ведь могут быть не только методы, но и переменные класса, доступные в экземплярах.
>>1994614 >Суть в том, что если у объекта нет своего собственного атрибута, либо метода, либо просто другого объекта, то тогда питон смотрит, нет ли такого атрибута у класса этого объекта. Если нет, то смотрит на родительский класс и т.д. Я это понимаю. Потому и не понимаю откуда он берёт метод, если класс я удалил уже, а в экземпляре метод не переопределялся.
class Test: _def Жопа(self): __print("Ыть")
biba = Test()
class Test: pass del Test
biba.Жопа()
Почему выполняется метод Жопа()? Он же долже был искаться в классе, а класс уже тютю.
>>1994618 Класс не тю-тю. Он просто недоступен по имени Test. Но в объекте он хранится не по имени, а по ссылке.
То есть после такого у тебя реально в памяти будут оба класса. При этом по имени Test доступен новый класс, а в объекте biba старый класс Попробуй сделать print(id(Test), id(biba.__class__)) до и после изменения класса
>>1994626 Спасибо огромное. Причём я так блядь и знал что питон это где-то хранит. Такой же заёб был с перезагрузкой объектов, импортированных через from.
Ещё вопрос. Я правильно понял, что в питоне встроенные операции не ищут метод в экземпляре, а только в классе?
>>1994629 >Я правильно понял, что в питоне встроенные операции не ищут метод в экземпляре, а только в классе? Хороший вопрос, пожалуй я не знаю, так слёту в доках ответа не вижу, надо бы заботать.
Попробовал, не работает так просто, но мысль возникла, что в питоне функции, начинающиеся с __ обрабатываются иначе. Причём конкретно с встроенными функциями ещё свой механизм, чем с приватными методами, в последних просто замена имени идёт специальным образом, чтобы эту приватность поддержать.
Короче пока не знаю. Но итересный вопрос.
Думаю, всё-таки можно и операторы вроде __call__ и __eq__ каким-нибудь образом переопределить для конкретных объектов, а не для классов в целом.
>>1994706 Так то вот. Просто Лутц это такое... Вроде понял, а вроде и нихуя не понял. Это "Изучаем питон", 5 издание, том 2, 78 страница.
>>1994706 >Попробовал, не работает так просто Как ты попробовал? Я же ради теста этой параши и затеял всю эту ебатеку с встраиванием метода в экземпляр.
>>1994678 Если этот метод мы встраиваем в конкретный экземпляр, почему явно не написать его под этот экземпляр? Без аргумента self вовсе. Может я хуйню конечно сделал, но я только начинающий макакен + уже сам запутался в своём вопросе уровня "как удобнее есть говно зубочисткой".
>>1994717 Я пробовал через консоль idle, смотря что происходит с элементами через __dict__, id, получается ли переопределить разным образом и что происходит при этом.
В принципе и более умные способы существуют.
В доку питона тоже заглянул, там как-то непонятно про это написано. Надо всерьёз влезать, может PEP читать соответствующие.
Лутца мне кажется тебе надо или обновить, или какую-нибудь другую книжку взять. В твоём скрине упор на питон-2, это морально устарело, всё, что касается объектной модели, там радикально переделали. В плане кишок там вообще всё очень сильно переделали.
Только голову себе ломать вот этими разными версиями. В общем лучше смотреть книги, где именно про питон-3, может с отсылкой иногда к тому, как было в питон-2. Сам когда-то очень давно такое читал, норм а потом пошёл на работу, где был питон-2, вот это не норм
>>1994758 >А если у тебя есть функция-метод, которые ты хочешь привязать к конкретному объекту? Задача изначально была оторванная от реальности, но всё же: как может так получиться, что у меня уже есть готовый метод, который принимает аргумент self?
>>1994796 >как может так получиться, что у меня уже есть готовый метод, который принимает аргумент self? Легко в общем-то. Ты можешь пытаться использовать метод из другого класса для своего объекта. Либо метод, сделанный чтобы его в качестве MixIn использовать. Это как раз нормально.
Случается такое что мой бот из-за проблем с интернетом не может выполнить какой-то запрос. И нужно поставить скрипт на паузу time.sleep(60) и попробовать повторить перевыполнить функцию пока не получится нормально передать запрос. Хочу написать обработчик ошибок.
Проблема в том, что скрипт из разных модулей, есть класс, в классе эвент-луп со своей логикой и вызовом разных функций которые принимают разные аргументы. Эти функции, иногда завершаются ошибкой. Отлавливать и писать логи ошибок я научился, код для этого лежит в отдельном модуле. Получается следующее: Я вижу что "Ошибка в функция_нейм". Я даже могу вызвать эту функция_нейм() но я не знаю как получить те самые аргументы для этой функции, которые передались как-то в эвент-лупе класса, да еще и в другом модуле.
Есть мысль заколхозить в классе переменную которая будет хранить аргументы от последней вызываемой функции, чтобы их можно было потом использовать для передачи. Но это выглядит как-то слишком костыльно, как мне кажется.
Какие есть варианты более подходящи для моей ситуации? Ссори если написал запутано
>>1996215 Параметр key в sorted должен быть функцией, которая получает на вход элемент сортируемой последовательности, а возвращает значение, которое будет использоваться для сортировки, функция-ключ может быть и лямбдой. Я так понял, тебе надо отсортировать именно список размеров, а не словарь date, ведь там только один элемент, собственно sizes, так что в итоге получается как-то так:
>>1996207 Нихера не понял. Если у тебя asyncio и один процесс интерпретатора, то что ты не можешь получить из одной области памяти? Ты делаешь запрос, есть какой-то payload и тебе надо повторить запрос с измененным payload? Скинул бы ссылку на git, так хоть можно понять о чем речь идет
>>1996207 Нихрена не понятно, но скорее всего тебе надо реализовать "менеджер заданий".
У тебя есть или отдельная asyncio-задача, или отдельный тред, которые занимаются тем, что выполняют специфичные задачи. Задачи они получают в виде словаря с какими-то параметрами. Для этого они случают очередь.
Соответственно, если у тебя произошёл сбой, ты всё это контролируешь в одном месте и можешь перезапустить сбойное задание. А тому, кто вызвал, думать об этом не надо.
>>1996268 В данном случае, это может и так, только вот в общем случае это может не сработать. Чтобы сортировать коллекцию, элементы которой принадлежат типу T, (ну, или функция-ключ возвращает значение типа T), необходимо и достаточно, чтобы у этого типа T были реализованы операции сравнения, при этом, реализация каких-либо других операций, например, операции вычитания, для этого типа T вовсе не требуется для выполнения сортировки, то есть, существование параметр reverse более чем оправданно.
Понял, что на работе деградировал и разучился пользоваться нормально реббитом и настраивать CI/CD потому что все уже давно настроено, а добавление микросервиса сведено до написания трех строк Хочу сделать пет в несколько этапов, что бы все вспомнить 1) Сервис для получения курсов валют раз в 10 минут, на который можно было бы подписаться и который отсылал бы дифы на подключившиеся сервисы + либа-клиент для него 2) Реализация простого rpc-сервера, который можно было бы превратить в любой нужный сервис просто добавили методы 3) Деплой на gitlab без выхода в сеть 4) Деплой на амазон с выходом в сеть через бесплатный аккаунт
>>1996137 Не понял вопроса. Мне нужна программа для расчетов, эта функция высчитывает проценты, что непонятного? Единственное, что мне было нужно - заставить скрипт работать и я сам с этим справился. Не понимаю вообще, зачем ты что-то мне пишешь, дружок.
>>1996483 Испытал те же чувства, что и тот аноним. Сложно словами описать. Ну типа ты пишешь примитивные вещи и при первой же ошибке пишешь на двач, вместо того чтобы подумать и погуглить. В функции print разделитель по умолчанию - пробел, поэтому в строке результат не нужен пробел после двоеточия, у тебя получается два пробела подряд в выводе. Лучше писать int(input()) Sum по-английски пишется с одной m Press any key будет работать не так, как должно работать, а ждать, пока ты нажмёшь enter Не знаю, зачем я это пишу, все равно из тебя ничего путного не выйдет
>>1996490 >Sum по-английски пишется с одной m Здесь ты не совсем прав, в том смысле, что sum всё-таки базовая встроенная функция питона и использовать такие имена переменных крайне дурной тон. Поэтому summ довольно общепринято.
>>1996490 > Испытал те же чувства, что и тот аноним. И с чего ты взял, что меня ебут ваши чувства, дядь? Ты аустист что-ли? >Сложно словами описать. Понимаю, бывает такое, когда у тебя вместо мозга раковая опухоль.
Дальше твой высер препарировать мне просто лень. Охуеть, посмел создать два поста в ниибаца важном треде, отвлекаю наверное от чего-то важного? Тебя ебать только отчим должен, но никак не мои "примитивные вещи".
Тл;др Нахуй иди долбоеб и советы свои в задницу засунь, а я буду делать что захочу и где захочу.
>>1996483 Ты, анон, не обижайся, но смотрится так, как будто ты первый-второй день изучаешь программирование с нуля, посмотрел урок, попытался написать, и решил сюда что-то кинуть. Может потому, что скучно.
Но людям не очень прикольно отвечать на вопросы такого уровня. И совсем не хочется, чтобы только на таком уровне обсуждения были.
Дам тебе дельный совет. Пользуйся питоновской idle, думаю ты знаешь, что это такое. Там ты можешь каждую операцию более-менее оттестировать, каждую конструкцию проверить. Это сильная сторона питона и помогает быстро прокачать скиллы.
Пытаюсь в первый проект. Подскажите, что почитать для понимания работы сервиса. Интересует момент общения бэкенда и фронтенда, как передавать информацию между ними.
Нужно за короткую юзеровскую сессию делать где-то 300-400 асинхронных реквестов в один API. Есть какие-то тулзы, которые автоматизировали бы отправку этих реквестов через разные прокси для разных юзеров, чтобы API не заблочил? Или в таких случаях прокси мануально скрейпят?
>>1996497 На что обижаться? На то, что вы настолько охуевшие, что нельзя вопрос задать и, сука, самому на него ответить? Это не со мной что-то не так, раз вы не можете пройти мимо пусть даже самого тупого на свете, но уже закрытого, блядь вопроса со своим неебически важным мнением.
Вот мне действительно не стоило больше писать итт, кормлю последний раз.
Сейчас будет даунский вопрос, сразу предупреждаю. Изучаю пайтон (не как основное ремесло, а как вспомогательный инструмент). Хочу сделать на нем какой-нибудь пет проджект. Идеи есть, но суть не в этом. Что мне вообще сделать, сайт на джанге или десктоп на PyQt (или аналогах)? Хоть и не планирую писать сайты промышленно, склоняюсь к джанге, потому что она хотя бы на слуху. С другой стороны, для сайтов еще кучу всего надо знать. Десктоп будет проще, наверное, но десктоп на пайтоне кажется совсем мертвой темой (извините ради бога, если ошибаюсь). Помогите определиться.
>>1997188 Я бы веб-приложение пилил, клиентскую часть можно запустить без боли везде где есть браузер, серверную часть можно запустить хоть на утюге, хоть на другой стороне глобуса. Всяких UI-kit сотни, интерфейс сразу будет выглядеть прилично. Можно использовать возможности браузера, push-сообщения, pwa и все такое. Без js не обойтись, но зачем на одном языке зацикливаться.
>>1997208 С одной стороны да, а с другой стороны хочется что-то осязаемое, чем потом можно будет и с людьми поделиться. >>1997216 Звучит интересно, js я тоже не против знать для общего развития. >UI-kit Про эти штуки расскажи подробнее, чем пользоваться?
А если из функции возвращать несколько результатов вычислений этой функции, то она всегда вернет их кортежем? Ну типа def test(): __a = 5 __b = 6 __c = 7 __return a,b,c
>>1996746 Это я понимаю, я другое имею в виду - как по-православному скрейпить эти самые прокси-то? Просто как-то не верится, что для такой задачи нету какой-то стандартной тулзы.
>>1997488 Оно слишком просто пишется, что бы иметь стандартную тулзу, у тебя по сути есть просто словарь c доступами, которые тебе нужно выбрать по определенному признаку.
Не понимаю, почему эта конструкция работает, как итератор. Мы же в iter() передаем функцию, а не итерируемый объект, или внутри range сохраняется состояние start?
>>1997502 >>1997506 Нет, так тут фишка же в чём: если поток пользователей через прокси пропускать, то лист с этими прокси должен иметь вменяемую степень валидности, то есть, количество мёртвых или медленных прокси должно быть сведено к минимуму, а желательно вообще к нулю. Поэтому странно, что нету каких-то общеупотребимых инструментов/сервисов под пайтон, которые бы автоматизировали эту фильтрацию. Так-то, конечно, можно и самому это написать, но, понятное дело, лень.
>>1997188 веб делай, задеплоить можно без проблем и доступ будет откуда угодно, джанга я думаю более задокументированная, чем десктоп либы, да и информации на стековерфлоу побольше будет, а для веба особо знать ничего не надо, ты же для собеса готовишься, поэтому протоколы, бд и прочее тебе и не нужны, по сути будешь по гайдам делать обертку для своих функций
>>1997390 Описание кортежа прочитай в доках. Всё он вернёт упорядоченно. Это до 3.6 версии была "фича", что возвращаемый словарь был неупорядоченный, а не кортеж.
>>1997232 >UI-kit Это набор готовых графических элементов в едином стиле. Скорее всего ты слышал про twitter bootstrap, но есть еще много других. Чем пользоваться не подскажу, я в них не разбираюсь. Сам использую vuetify, потому как фронт на vuejs, мне норм.
>>1997578 НУ НАПИСАНА ЖЕ: If the second argument, sentinel, is given, then object must be a callable object. The iterator created in this case will call object with no arguments for each call to its __next__() method;
Посоветуйте видеоуроки по ооп, нашел на ютабе годный курс, прям чел так ясно излагает про атрибуты и методы, прям все так ясно, потом хуяк, когда до самого доходит - платная подписка. Я в ахуе, но если бы досмотрел точно бы разобрался во всем. Но платить не хочется, он там типо только партнерам рассказывает хитрый пидор.
Анончики помогите пжта. Написал простенькую программу. Вначале необходимо ввести текст. В онлайн интерпритаторах можно вводить только одной строкой. Есть ли какое-то просто решение, как можно поделиться с кем то программой, чтобы можно было вводить большой блок текста. В http://pythontutor.com/live.html#mode=edit например спокойно копирую из блокнота, что угодно и вставляю. Все работает без ошибок.
>>1998093 50к первый месяц, мск, для 19 лет просто великолепно, еще и удаленка, постараюсь с учебой совмещать. На проекте вроде сейчас фласк, алхимия и ребит используются, хотя я больше по джанге, думаю разберусь
Ньюкекный вопрос. Дошел до классов, не понимаю нахера это нужно, в моих курсах отвечаю на вопросы правильно, задачки пишу правильно, но все равно нахер не понимаю нахрена это относительно простого присваивания. Я понимаю что в больших программах и принципах ООП это все более нужно, но пока что это просто какой-то кастыль, куски лишнего кода, инит, селфы, скоуп какой-то ради того чтобы сделать то что я пока делаю в три раза проще без всей это лажи.
>>1998170 Ну посмотри на стандартные базовые типы вроде листа-дикта-стринга. Ты просто и элегантно пользуешься ими как объектами. А теперь представь это со свом в три раза проще.
>>1998170 Просто посмотри на библиотеки которые используешь и поймешь что все программирование на питоне по большей части это ооп, типа метод гет у сессии, метод джоин у строк, гет у словарей и т.д и даже когда ты принтишь вызывается метод объекта __str__
>>1998170 Лучше вкатывайся в ооп как можно скорее, чтобы потом говна не пожрать, как я. 5 лет писал на сикуле процедуры и функции, а как в сисярп и питухон залез, так до сих пор ебусь с классами, конструкторами и методами.
Опытные человечки, подскажите. Есть сторонняя система, обеспечивающая кусок бизнес процессов. Она интегрирована с другими приложениями предприятия через самописный рест апи. И апи и другие приложения написаны на питоне. Вопрос: какие есть лучшие практики, для того чтобы формализовать структуры данных, которыми апи общается со своими потребителями? Пока что я пришел к отдельному пакету, в котором эти структуры описаны как frozen dataclass. То есть апи из этого пакета взял датакласс, инициализировал и бросил в сериалайзер, консьюмер апи взял ответ апи, кинул его в конструктор датакласса и гарантированно не будет ошибок. Проблема в том, что теперь нужно поддерживать и деплоить еще один пакет. Как можно сделать проще?
>>1998493 Никак, по сути у тебя есть SDK для апи написано. Можно заебаться с каким нибудь универсальным протоколом типа протобафа или любого другого с кодогенерацией, что бы описывать все в одном файле, но это тоже такое себе.
Аноны какой рассово верный способ работы с sql? Если допустим мне надо один единственый запрос отправить если смысл корячить для этого sqlalchemy? А если два? Где эта граница, когда уже надо имплементировать?
Не ясен хуй, проще пиздык-хуяк-и_в_продакшен. Но как правильно?
Меня не обоссут за то что я для одного запросы алхимию тащу?
>>1998782 Нужно учитывать, насколько сильно проект будет изменяться в будущем, чтобы те, кто будет его дальше писать, не охуели. >Меня не обоссут за то что я для одного запросы алхимию тащу Менеджерам и прочим кабанчикам все равно, лишь бы работало, остальным наверное даже лучше, придется разбирать говнокод только на питоне.
Подскажите где можно читнуть про параллелизм, асинхронность, вот про это все. Про ооп уже изучил. Хочется вот этого модного. Также изучил про парадигмы программирования, про императивное и декларативное.
>>1998803 Разрозненно если только medium.com/hackernoon.com, в Ютубе или на reddit. Потому что с 3.6 библиотека изменилась, из node js пришла uvloop, методы многие поменялись, теперь миксуешь asyncio.method() И loop.method() методы. В 3.9/3.10 вместо loop.run_in_executor(Executor, func(*args)) вообще asyncio.to_thread(). Дохрена изменений в каждом выпуске, уже заебали если честно. Девы какие-то ебанутые.
>>1998833 >в бенчах К реальной жизни бенчмарки отношения не имеют. Если профилировать среднестатистическое приложение, то 90% времени там уйдет не на орм, а на системный ввод-вывод, так что можно поначалу не ломать голову над выбором. Ну а если ты уверен, что у тебя сразу будет хайлоад, то там уже будет другая архитектура приложения, заточенная на масштабирование. Как-то читал статью каких-то чехов, которые взяли затестили веб-фреймворки питона не в вакууме, а в обычных условиях, с обращениями к бд, и вышло что супер-йоба-быстрый фастапи выдал ~20 рпс, а медленный устаревший джанго - где-то 15. Экономия на спичках.
Мне вчера Марк рассказал, что если у функции на питоне дефолтным значением аргумента будет пустой лист [], то это будет работать не так, как ожидается. Правда, он конкретных примеров не привел. Вы слышали что-нибудь про это?
>>1998895 > лист создается при определении, а не при каждом вызове функции А почему это именно так работает? Я понимаю, что это как-то связано с изменяемостью/неизменяемостью типа, но все равно не могу логику уловить. А какие еще неочевидные вещи знаете, которые любят на собесах спрашивать?
>>1998944 > Я понимаю, что это как-то связано с изменяемостью/неизменяемостью типа, но все равно не могу логику уловить. Просто мутируемый тип можно собственно смутировать, а немутируемый ты просто заменишь в текущей области видимости на время вызова функции. Почему определяется только раз, а не на каждом вызове - хуй знает.
>>1998838 Если нужен оракл, то бери Алхимию, в чем проблема? Оракл уже другая нагрузка. PG, MySQL для дешмана, тут peewee зайдет. Если база дешман, значит и нагрузок таких нет
>>1998851 Асинхронка не про скорость, а про отказ от task managers. FastAPI надо уметь запускать, когда Джанго хуяк хуяк и а продакшен с оверхедом. Gunicorn uvicorn workers нужны и быстрый uvloop, видел бенч такой именно и там Джанго дали пососать.
Пару вопросов по Многопоточность это и есть параллельное программирование? Чем отличается асиннхронность от многопточности? Стабильностью? И где это можно заюзать, это все про веб? Или питон может и десктоп-моб? И если дрочить джангу-фласк, там все это есть? или надо дрочить aiotop?
>>1999018 >Асинхронка не про скорость, а про отказ от task managers. Нет, менеджить таски ты спокойно и в питонячьем asyncio может, и вообще суть не про менеджмент, оно и в ГОвяших гринтредах есть, а про конкурентную многозадачность в рамках одного системного треда.
>>1998170 Аноны, раз уж так пошло, я видимо выбрал хуевый курс, где толком не поясняется значимость классов. Я прошел его, на вопросы ответил, как их билдить, инит-хуит знаю, но как это в общую программу записать, и главное зачем не могу уловить. Есть ли какой-то адекватный источник, желательно объемный, типа книги по ООП и классам, их методам, функциям, коллам, а то я пытаюсь монстрячить какую-то херню и понимаю что он меант ту би с классами, а не просто в линию с деревьями иф елиф ваил.
>>1999127 Классы это просто структуры данных с забиндеными на них методами. Представь, что у тебя есть словарик с данными, с которым ты часто юзаешь определенную функцию. Для удобства работы с ними ты объединяешь их в одну модель.
>>1999135 Да это я могу и вики прочитать и в мануале. Мне нужно всякую логику их использования, как вызывать методы(?) класса дальше в программе и почему я не могу просто понаписать десятки функций
>>1999136 Ну например, сделал ты запрос через requests или aiohttp и тебе пришел экземпляр класса Response у которого есть готовые методы, а внутри него лежат определенные данные. Если писать все на функциях то тебе нужно помнить для какого именно класса оно предназначается и импортировать их при этом не проебав перезапись имен потому что названия действий могут быть одинаковы в разных контекстах. Еще классы дают доступ к ООП, когда ты можешь четко определить интерфейс хотя в питоне можно так и для функций обычных сделать и отнаследовать сам класс для его модификации.
>>1999136 Потому что когда у тебя в программе внезапно появятся сущности HttpRequest, BlogPost, Email и NaHui и у каждой из них должен быть метод send, ты начнешь писать десяток функций sendHttpRequest, sendBlogPost, sendEmail, sendNaHui. Когда у тебя таких сущностей станет не 10, а 110, то и функций у тебя будет 110 и все с разными именами. И вместо того, чтобы писать x = new Some(); x.send(); x.elsewhere(); x.nahui(); ты будешь писать x = createSome; sendSome(x); elsewhereSome(x); nahuiSome(x); Занимаясь бесполезной хуетой.
Однажды ты придешь к тому, что все это надо как-то организовать, чтобы иметь удобный способ структурировать код, и внезапно придешь к тому или иному виду ООП.
Когда же ты откроешь для себя, что определенные сущности могут иметь одинаковое или отчасти похожее поведение и откроешь для себя композицию или наследование, то вообще ахуеешь.
>>1999043 >Чем отличается асиннхронность от многопточности? Стабильностью?
Ну ёбана смари. Вот есть у тебя шлюха, которую надо повыаебать. У неё три дырки, а хуй у тебя только один. Многопоточность, это когда ты как ебанутый поочереди вставляешь в каждую дырку. А асинхолнность, это когода говоришь, что я тебя буду ебать две секунды в пизду, а потом две в сраку и тд.
>>1999095 Это невалидный жсон. Должен быть ключ, тогда добавляешь ключ со значением. Если нет ключа, то это массив с квадратными скобками, добавляешь как в список.
>>1999220 А где это можно применить? Не для написания же скриптов это надо. Для веба? В джанге и фласке есть такая реализация асиннхронности? Или это только про торнадо? Или только для десктопа?
Где почитать и разобраться раз и навсегда со всякими ювикорнами, гуникорнами, гиперкорнами, гевентами и прочими единорогами? Какой из них для чего нужен.
Питонята, такая проблема: вот я уже 3 года работаю, основной стек это DRF и Flask, но не знаю как и куда дальше расти. ML не хочу, да и сам веб-стэк мне нравится, но хочу апаться до синьора. Что посоветуете? На работе всё обычно сводиться до построения API для фронта/мобилки, нестандартных задач мало, да и то обычно сводятся до юзания какой-нибудь библиотеки.
Сап, анонсы, а как с помощью скрипта на пистоне узнать версию pip, например?
Типа, ну вот пишу я print('pip - v'), но ничего не происходит. Как это делается? Как запустить через пайтон команды как для консоли? Например, скрипт, скачивающий какие-то пакеты?
>>1999687 Зависит от сайта, где то одного запроса с извлечением тегов хватит, а где-то аутизм с селениумом с обязательным логином, гуглокапчей и прочим говном
>>1999738 Как только ты захочешь парсить нормальный сайт, там будет защита от таких умников, чекающая, заходишь ли ты с браузера, для чего нужен силениум. Ещё более солидные сайты и с силениумом особо не попарсишь, марин трафик я пытался как-то парсить, так там такая защита анальная, что пришлось забить на это дело. Но васянский сайт без проблем спарсишь и с супом, да.
>>1999504 Прочитай для начала "Совершенный код". Потом позакапывайся в туториалы по языку на официальном сайте, разберись досконально, как работает язык, на котором ты пишешь. Потом почитай Clean Architecture, попробуй спроектировать какой нибудь сервис с т.з. чистой архитектуры. Когда станет получаться, можешь считать, что ты уже на правильном пути. Плюс, ты должен стараться писать код на работе так, чтобы к тебе было меньше претензий со стороны qa. Ну и наконец, алгоритмы тоже надо по чуть-чуть прокачивать. Попробуй задачки на литкоде порешать.
У меня довольно тупой вопрос. Есть метод класса, который в том числе через async запрашивает с restapi данные, и вместо того чтобы вернуть результат, он говорит, мол я еще незакончил делать то что в асинке, и нихуя невозвращает.
>>1999750 Ночью все-таки взялся за этот сайт. Вроде серьезная контора, продают свое ПО и довольно недешево, но все данные которые мне нужны лежат в открытом доступе на сайте. Ограничение на запросы с одного айпи есть, но если зарегаться и оплатить подписку за 100500 рублей то ограничение частично снимают. Я уже хотел было забить, но зарегистрировался (без оплаты) ради интереса, и сделал удивительное для себя открытие. У этих додов просто создает субдомен типа твое_имя.site.ru а там таких субдоменов дохуя естественно, все ищутся в любом сервисе поиска поддоменов. Я думал сначала подставлять те, что живые, у которых еще лимит не кончился, но потом нашел вообще охуительный субдомен API.site.ru на запросы к которому вообще нет никаких ограничений. Короче я начал писать на бутифулсоп, надеюсь получится.
>>1999853 >совершенный код Более мерзкой книги по кодингу я не видел, автор льет воду в виде мотивационное залупы 90% текста, все полезные идеи умещаются несколько статей.
>>2000246 Он прост обосновывает, что не с потолка взял. "У функций должны быть понятные имена, это подтверждает внутреннее исследование в компании Zaloopa Inc. в 1989 году, где после внедрения человекочитаемых имен число самоубийств программистов сократилось на 6%". А дядя Боб напишет то же самое, но с мотивацией "я на этом еще в 70-е года на pdp-11 погорел, так что верьте".
Если set() асимптотически пиздатая структура данных, ищущая в себе значения за О(1), то и len(set()) будет работать хорошо? Или же мне лучше хранить размер в отдельной переменной? Предположим я заполняю set с нуля и в цикле каждый раз проверяю условие на его длину.
>>2000481 1. Алгоритм работает. 2. Алгоритм работает недостаточно быстро. 3. Алгоритм исследован профайлером и установлено бутылочное горлышко. Если ты не на пункте три, тебя не должно ебать, насколько быстро работает len в питоне.
>>2000526 При сложении строк с помощью "+", при каждом сложении будет создаваться промежуточная строка, например, выражение "собака"+" "+"грызет"+" "+"кость" создаст целых четыре строки: "собака ", "собака грызет", "собака грызет ", "собака грызет кость". А " ".join(["собака", "грызет", "кость"]) берет все строки, что ему дают, и сразу выделит необходимый размер памяти и создаст новою строку только один раз, сразу создаст "собака грызет кость".
>>2000506 >Если ты не на пункте три, тебя не должно ебать, насколько быстро работает len в питоне. Это ты не совсем прав, тебя должно волновать, какая сложность у какой из операций. Например если сложность O(N), то это как бы очень нехорошо.
Вот скажем как тест на вхождение в список vs тест на вхождение в множество или как ключ в словарь.
В случае len() всё просто, уже ответил анон, работает за O(1). Поэтому заводить прочие переменные не нужно.
Пиздец как забавно, начал как хобби учить питоне лет 5 назад, смотрел ролики, почитал даже лутца. Но самое интересное, что норм видосы, наши и бурж стали снимать только щас, причем так понятно, что я ваще все понимаю о чем пиздят. Даже про ооп. В голове такая ясность. А пару лет назад несли такую хуйню. Но я все равно пытался понять все. И понял.
Что эффективней, завести одну очередь и забирать оттуда по параметрам сообщения, либо завести n очередей и чтобы каждый консьюмер забирал из своей? Много очередей не будут требовать сильно больше памяти\цп?
>>2001429 Ясное дело что не на сухую продолжил. Но рили, вот стали снимать очень ясно, структурировано. Видимо сами научились. Или я стал старше-умней. Осталось дело за малым, просто найти работу) погромистом. Но это самое простое же.
>>2001403 >Но самое интересное, что норм видосы, наши и бурж стали снимать только щас, причем так понятно, что я ваще все понимаю о чем пиздят. Даже про ооп. А можно примеры видосов? Мимо вкатывальщик
>>2001644 Кстати, пиши python 2021 или также только ооп. И смотри все подряд. Я так и делаю. По ооп дохуя уже просмотрел, становится ясно уже. И на кодворзе по ооп каты щелкал. Уже шарю за поля, методы, инстансы и тд и тп. По самому питону можно смотреть все что за час, далее, ооп. Еще можно мнопоточность и асиннхронсть смотреть. Про джангу также кстати, год только писать 2021 и все. Там выведет куда надо.
1. Много ли вы знали(прочитали там книг по Python, алгоритмам + изучали годные курсы + решали задачки каждый день), когда приходили устраиваться на работу программистом ? 2. Могли ли вы применить Python для решения проблем на ПК/в реале ? 3. Можно ли делать норм софт на пк (исп. Python+...?; примеры есть?) ? 4. Можно ли делать норм(не тормознутые) приложения/игры(2d, 3d, online) для Android (исп. Python+...?; примеры есть?) ? Или Android Development в основном для Java/Kotlin ? 5. Для Python актуальны пункты /3./4./ ? Или есть пути разработки проще/правильней для 2021 ?
Есть 60000 строк в текстовом файле 1. 80000 строк в текстовом файле 2. Нужно вычленить в файл 3 все полностью совпадающие у файлов 1 и 2 строки, а в файл 4 совпадающие частично. Частично - значит, что строка файла 1 имеет вид XXXX-YYYY-NN, а строка файла 2 имеет вид XXXX0-YYYY-ZZ или наоборот. Если найдены такие строки, то они должны быть идентифицированы как частично совпадающие и выгружены рядом друг с другом в файл 4. Подскажите, может есть какие-то библиотеки, работающие с большим количеством строк? Мое решение работает для небольшого количества, но спотыкается на больших файлах, игнорируя некоторые дубликаты.
>>2001668 1) я начинал не с питона и питон не был основным языком. 2) да 3) Можно. Из того, чем пользуюсь я - торрент-система Deluge. Полноценный торрент клиент с gui, внешне по нему не скажешь, что он на питоне сделан. 5) ХЗ, но в целом мне кажется, что скорее нет, чем да. То есть питон плохо заточен под GUI приложения, под настольные приложения в целом. Для сервисных и серверных приложений да, для обработки данных да, но под десктоп бедновато как-то.
Вопрос в том, какие задачи тебе интересны. Хочешь разрабатывать игры и подобные вещи - ищи другую платформу. На питоне такие вещи стоит делать только если ты фанат питона.
Нудство по п.1. Программирование != знание языка. Тебе больше надо понимать технологии и уметь программировать. Особенно если речь не идёт о тяжёлых индустриальных языках вроде C++ STL, Java.
>>2001692 >Частично - значит, что строка файла 1 имеет вид XXXX-YYYY-NN, а строка файла 2 имеет вид XXXX0-YYYY-ZZ или наоборот. Нужно подробнее. Самое главное тут формально описать функцию сравнения и может быть придумать какие-то инварианты, которые общие для двух строк (условно YYYY-NN часть строки).
Задача с идентичными строками проста. Ты хранишь строки полностью в множествах или как ключи в словарях и сравниваешь. Это будет работать быстро. Если у тебя всего 100 тысяч строк по 1000 символов, то расход памяти по современным меркам небольшой, чтобы думать об оптимизациях и сложных алгоритмах.
Вторая задача сложнее. Идея может быть такой, что ты хранишь какие-то хеш признаки, которые одинаковые для двух похожих строк. И у тебя хеш-таблица, по которой ты поиск производишь и уже точное сравнение для строк с этим признаком.
>>2001692 1 - залить файлы в сикульные таблицы, посчитать от строк хэш и заджонить, всё это можно и в пандасе сделать, объемы маленькие, в крайнем случае можно разбить на чанки 2 - нужны списки возможных масок частичного совпадения, дальше всё тоже самое, что 1, только при сравнении применять функцию, которая будет маски сравнивать
>>2001692 Из каждой строчки берешь эти самые XXXX-YYYY и пихаешь в словарь ключем, внутри список с полным значениями. Потом обрабатываешь проверяемый файл так же, если ли в словаре, и есть ли полное значение, соответственно частичное и полное совпадение.
Прочитал книгу укус питона, в конце была дана задача "Адресная книга", которую я не смог сделать. В книге меня не сталкивали напрямую с чем-то подобным. Пришлось гуглить и смотреть, как ее сделали другие люди. Правильно ли я понял, что можно тупо нагуглить, понять логику задачи, переписать ее по-своему, и таким образом произойдет обучение, запоминание, как делать подобные задачи? Или этого недостаточно?
>>2001725 >>2001736 >>2001741 >>2001744 Всем спасибо за наводки. Уже примерно набросал что-то близкое к решению. Но еще вопрос такой: изначально строк было 500000, после выравнивания регистра и new_list = [elem for elem, _ in groupby(orig_list)] осталось всего 80000 строк. Насколько этому решению можно доверять? Не могло оно удалить лишнего?
>>2001768 Тфу, забыл пояснить, что изначально хотел оставить только уникальные значения в файлах 1 и 2 для дальнейшего сравнения, тк. строки в них тоже дублировались.
>>2000766 Думаю, когда нужно составить строку из нескольких переменных, лучше использовать что-то вроде f-strings, а там где прям список строк, причем, возможно, генерируемый в ходе исполнения программы, то там, кончено, лучше join.
Что касается проектов, можем взять любой крупный питоновский проект на гитхабе, например django, flask, sphinx, tensorflow, sqlalchemy, или еще какой-нибудь, и поискать там склеивание строк джоином, там их достаточно много.
>>2001757 Можешь брать целые куски кода и копировать если совсем не понимаешь, главное либо запомнить принцип, либо разобраться потом почему и как, чтобы через время ты мог не подглядывать ни в синтаксис, ни в решения(я первые пол года постоянно сидел с вкладками с методами словарей и списков, когда скопировал 100 раз .append() я запомнил)
Насчет алгоритмов. Да есть геометрические и дохуя математические. Но в овносном их делят на линейные, ветвление и циклические. Я так понимаю по логике. И по способу решения, брутфорс разделение на подзадачи динамическое программирование, типо кэширование жадные алги бектрекинг локальный поиск и трансформация.
Помимо этого что еще нужно знать? И такой вопрос. Где-то читал про основные понятия, пермутация... трататация и еще что-то. Это к чему относится? Чую что тоже важно.
>>2002409 >Помимо этого что еще нужно знать? Ты уже спрашивал. Тебе в первую очередь надо понимать сами алгоритмы, а не пытаться их классификации придумывать. Я вот не понимаю, что это такое: >бектрекинг >локальный поиск >и трансформация. Это какая-то твоя классификация. И не понимаю, зачем мне вообще уметь классифицировать по каким-то неведомым классификациям.
Ты можешь придумать и реализовать алгоритм для конкретных задач? Хорошо. Не можешь? Плохо. Причём алгоритмы это слишком широкая область, чтобы в такие классификации их загонять.
Ты реально какой-то хернёй занимаешься.
>понятия, пермутация pertumation = перестановка Ты уж или по английски пиши, или по русски, а этого треша не надо. И ХЗ, как это классифицировать, и ХЗ, зачем это вообще классифицировать.
Алгоритмы о том, как получить все возможные перестановки, например. Кстати там есть разные варианты.
Сап анон. Сейчас пишу небольшую программу, где требуется использовать логин и пасс от сервиса. Я планирую просто положить логин и пасс в тхт-файл, а уже из него забирать это в основной код программы, где происходит логин. Как мне в этом случае передать логин и пароль в качестве переменных в .py-файл? На ум пришло только открывать тхт-файл через with open и забирать оттуда логин и пароль, а потом подставлять их индексом в программу. Но должно быть менее уебанское решение?
>>2002015 Нахуй ты их купил? Я понимаю еще лутца( и то идиотизм), все книги надо пролистывать(конкретно лутца,т.к. там душная книга но много инфы, увидел то что не знаешь гуглишь для лучшего объяснения), единственную которую можно читануть если 0 - укус питона.
Не могу разобраться с переносом результата функции в другой компонент. Допустим, у меня есть файл example1.py в котором я выписываю определение функции с еще кое-какими данными и возвращаю ее результат (return result), в result лежит список. Далее, я хочу задействовать этот список из result в функции из другого файла - example2.py. Например хочу превратить этот result в стрингу и конкатенировать ее с чем-нибудь еще или сделать из нее сет и так далее.
>>2001403 Это норма, это развитие ютуба и общего поля подачи информации, твои деды были вынуждены читать очень нудные книги, ковырять платы своими крабулями, писать какую-то мутнейшую залупу. Потом был период когда задрот-индус просто 2 часа кодил с невероятной скоростью называя это мануалом. А теперь найти полноценные обучающие видео, с пошаговостью, с источниками, с конкретными примерами применения, с объяснением математики если она используется - очень просто и этого добра навалом. Сейчас курсы гарвардов и МИТов уже очень хорошо сделаны(и бесплатны, только если хочешь диплом бумажный купить надо платить), есть всякие сайты типа бриллианс для совсем уж детей(но неплохо по ним изучать косвенную хуйню типа логики, начальной робототехники или инженерии), есть кодеварс где ты натурально качаешь своего эльфа 80го уровня и пиздишься с другими эльфами качая его за очки полученные решением микрозаданий на своем языке, и можно посмотреть у представителей какого языка самый длинный хуй, клан джавы накидал клану сиплюсов ололо, а завтра все поменяется, мы будем отомщены. Я не представляю зачем современные люди вообще покупают курсы за деньги, это просто ебланство(ну и лень, и отмазы, и тупость, и непонимание принципов обучения и что нужно работодателю)
Халп, позязя. Есть пикрил. Нужно подставлять значения из списка без комы в конце. Как эту ебучую кому убрать? В списке - куча datetime по которым нужно отдельно выгружать данные, потому и цикл.
>>2001757 да, если сможешь сперва адаптировать чужой код то это нормально. потом придрочишся и уже сможешь писать свой. а так в программировании юзают чужой код постоянно. Собственно почему один из главных скиллов кодера это писать понятный другим код - потому что код пишут один раз, а читают дохуя раз и дохуя людей.
Что происходит, когда к условному веб-приложению на Flask'е (или на чём-нибудь другом), задеплоенному через какой-нибудь Gunicorn, прилетает запрос от нового пользователя - получается, сервер создаёт в памяти дубликат этого приложения и, как бы, несколько пайтоновских интерпретаторов начинают работать параллельно? Или как это устроено? И есть ли в этом вопросе отличия между WSGI и ASGI серверами/фреймворками?
>>2003277 Gunicorn создает указанное количество дубликатов при запуске и они работают вместе сразу. Дальше запросы балансируются между ними nginx'ом, например. asgi создает на запрос отдельную асинхронную корутину
Где можно понятно почитать про еблю с джейсоном, как вызывать через урл, как печатать и сравнивать нужные строки, обязательно ли это ебошить всегда через дикшинари, почему формат типа a = requests.get(url).json() и дальше я делаю a['заметки о залупах']. Типа я вроде понимаю что джейсон скорее всего в формате дикшинари и есть, ключи и вальи, но бля, делал проект, натыкал как-то и сам не понял нихрена.
Сообщаю, что спиздили high performance python второе издание, там есть экономия на спичках, мультипроцессинг, очереди, асинхронщина и всякие кулстори из жизни.
>>2003819 >обязательно ли это ебошить всегда через дикшинари
Если пользуешься встроенным json декодером из модуля requests, то да - это то, что он возвращает. Хотя, строго говоря, он может вернуть список словарей, а не один словарь. Попробуй посмотреть, например, на результат requests.get('https://api.github.com/events').json()