Это копия, сохраненная 4 июня 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>1977853 (OP)
Литература:
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
тут есть кто делает игры на питоне по типу говна три в ряд или например олдскульные рпг?
Если ты решил делать игры на питоне, то остановись и подумай, все библиотеки питона для игр такое себе. Лучше уж выбрать юнити или другой движок и писать на c
640x640, 0:34
Слишком проста по отзывам? Если с алгоритмами до этого не сталкивался, то простоты там точно не будет.
Вот сдвенная странница, обычная и разворот
ну я имел ввиду игры просто по приколу, не для коммерции
Здравствуйте, такой вопрос возник, вот щас дошел до изучения сортировок и вроде все понятно кроме одной вещи, а как на экран то результат вывести?
То есть вот, сортировка Хоара, она получает какой то список, че то там сортирует, а как увидеть то результат соритровки в том же самом например вскоде
Объясните пожалуйста, просто уже вроде как какую лекцию смотрю и нигде вообще не объясняется как вообще либо увидеть результат
for 0 to len(return) + принт по индексу +', '
Не тролю, у меня нихуя не получается и я не понимаю почему, то есть первый раз когда я вставил оно отсортировалось, начал еще раз пробовать начал выдавать вот такую ошибку
Ну т.е. как сделать, чтобы при вызове функции запускался счетчик, дальше идёт запрос к бд, дальше функция ожидает ответа и переключается на счетчик. Если счетчик насчитал за время ожидание, допустим, 10-15 минут, то принтит варнинг.
Ну не стукай, я убрал, все равно не работает
"напрямую" это ведь ты имел ввиду что я в самой функции список написал?
>>1990453
переменные в функции локальные, точка входа получает только ссылки или подготовленные данные по типу func(a. 11, t, 55)
nums в тексте это примерно proc.main.var.nums
nums в функции это proc.main.func.name[nums]
разный уровень вложености.
>Учить программирование по функциональщине и скриптовом языке, всеравно что пытаться водить боинг видя вчера только руль машины.
Этого двачну, сначала надо низкоуровневого говна пожрать. Но вкатышам хрен объяснишь.
У функции не переменные на входе, а ссылки, уже внутри разные уровни вложенности и доступа, все локальные не доступны из вне, и точка выхода только в ретурн.
Создай еще один экзепляр, просто функциональщики не могут в написание нормального кода, и логично чтобы
A = func(B) и A = func()->(B) A=func(* B). отличались.
Новички думают или создается копия, а оригинал сохраняется переменной или операциия происходит с самой переменной по типу B:= func(B)
url1= “http://“
url2= “servis-huervis”
url3= “.com”
url4= “.pidor”
Url5= “https://“
Вот из таких комбинации грубо говоря нужно сделать один тест. Как это параметризировать?
В идеале, если это можно какую-то фикстуру запилить, скажем if url3 ==“.com” то делай это. И тд.
Я произвожу некую операцию, которая занимает долгое время (запрос в базу например), как мне поставить таймаут на эту операцию, чтобы если он истек то выскочило некое исключение, которое потом можно было бы обработать?
Про то что на входе не надо ничего писать я и с первого раза понял, а еще у меня методом тыка получилось понять отчего TypeError возникал
>>1990463
>объяснишь
Справедливости ради, особо никто и не пытается объяснять, а те кто пытаются пишут настолько сложно что хуй разберешь что они тебе посоветовали, порой создается впечатление что программисты выебываются своим знанием технических терминов и стараются как можно больше ими выражаться прям как 12 летние девочки из твитора у которых зарубежных слов в посте больше чем русских
>Учить программирование по функциональщине и скриптовом языке, всеравно что пытаться водить боинг видя вчера только руль машины.
И функциональщина, и скриптовые языки довольно естественны.
Просто функциональщине надо иначе учить и иные задачи на ней решать.
Языки вроде питона тоже понятнее, чем Си-Ява. В последний слишком много с самого начала инженерной хрени непонятного назначения.
#include <stdio.h>
int main(void) {
printf("hello world \n");
return 0;
}
Вот тут, что такое include, что такое stdio, что за магия, int, main, void, return?
Чуть дальше начинается магия с выделением памяти и т.п., и т.п.
Правда для бэкграунда в это полезно погрузиться.
Но я бы сказал, что питон как первый язык очень-очень хорошее решение. Вот JS, PHP так себе варианты, лучше не надо.
В строке 3 нужно return nums, а не return. У тебя же в первом посте правильно было.
Ку, делал около года назад "Жизнь" на pygame
До этого еще всякую дичь на том же pygame делал
разобрался, нужно было через переменную сделать
С пыхи всегда есть смысл пересаживаться
Последние 10 лет небось занимался лишь дрочевом tpl-шаблонов со вставками жкьюри да косплеем жавовского спринга, устраивая из него каргокульт?
Если тебе это интересно, то очевидно стоит попробовать. Но будь готов к тому, что при лучше раскладе уйдёт около полугода на вкат джунобомжом.
Плиз хелп!
Убери мутабельную переменную из дефолтного значения. Это первое. И никогда так не делай. Она инициализируется 1 раз и если вызовов функции будет два, то ты охуеешь искать где баг, так как предыдущий вызов будет влиять на следующий.
Второе, ты когда функцию вызвваешь для списка из 1 числа, то возвращаешь None. А питон складывать None со списком не умеет. На это питон и ругается. А вот эти долбаебы советчики я вообще в ахуе
>>1990444
>>1990434
Но вот этот дебил просто пиздец. Язык у него через раз работает, пиздец. Мозги у тебя через раз работают просто >>1990446
Потом я добавил функцию main, которая вызывает connection внутри test, и оно заработало: https://ideone.com/z1yujK
Почему не работал мой вариант? Я думал, что если возвращаю через return результат подключения (conn), то могу использовать его как аргумент в следующей функции.
Пиздос, тебе сейчас фантазер уже 1 написал про "войти в айти за полгода". Кроме того, что это обесценивание знаний, так еще и просто неправда. В лучшем случае, если повезёт года полтора. В среднем на два года расчитывай. Сюда докидывай от месяц до трёх на поиск работы(в зависимости от региона и размера города).
Бля, тут все глухо. Даже объяснять бессмысленно. Попробуй с чего попроще понять. Ты просто не понимаешь как работают функции
Я пробовал читать/смотреть гайды, везде пишут/говорят, что вот, мол, хуе-мое, вот функция, возвращаем ее результат, и теперь мы можем этот результат использовать дальше. И никаких main() там не было.
Да, во втором случае я это и сделал. Но я-то думал, что передавая в test - conn как результат функции connection, оно будет работать. И вот я не понимаю, почему это так не работает.
бамп вопросу
Надеюсь ближайшие 5 лет 95% вкатывальщиков, которые параллельно лезут на рынок вместе с мной, будут вот такими, тогда себя не таким отбитым уёбищем ощущаю.
Так в 1 примере ты ничего не передал в test, на 20 строке у тебя вызов функции.
>Я думал, что если возвращаю через return результат подключения (conn), то могу использовать его как аргумент в следующей функции.
Вызовом функции connection() на 11 строке ты "создал" объект подключения в памяти, но не привязал его ни к какой переменной (ссылке).
Потом ты на 20 строке вызываешь функцию test(), которая принимает на вход что-то, в твоём случае объект подключения, но ты ей ничего не передал, поэтому ничего не работает.
Чтобы использовать результат одной функции в другой, нужно этот результат получить, а потом передать в другую функцию. Сходство названий переменных в телах аргументах разных функций ничего не означает - переменные, объявленные внутри функции, живут только внутри этой функции.
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.
Есть эндпоинты, они разные. На них нужно писать тест юниты в пайтесте.
Чтобы не писать кучу одинаковых тестов где меняются лишь юрл нужно что-то придумать.
Пока сделал следующий образом. В файл записал ссылки. Сделал один тест и в этот тест через pytest.paramerize закидываю по одной ссылке. Вроде норм.
Но теперь в эндпоинте поменяли адрес с .com на .net например. Можно ли как-то иначе передавать данные в тест чтобы ссылку можно было порезать и в случае изменения домена проставлять нужный.
Охуеть. От души за пояснение, анон!
>Я правильно понял, что сокеты подходят только, если клиент написан на питоне?
Нет, неправильно
> как код из этого видика переделать, чтобы это все крутилось в браузере?
Видеву не смотрел, но судя по превью, там речь идет о голых tcp-сокетах, это не те сокеты, что ты ищешь. Тебе нужны вебсокеты, используй их. Сервер можешь на питоне пилить, а клиента, раз клиент в браузере, на джаваскрипте.
host:port/api/user/{id}
Вот пример эндпоинта. Например шлёшь GET api/user/1 и получаешь запись из БД с id 1.
Типичное общение бэка и фронта по rest api
Вопрос: Есть что-нибудь полегче? Или пох юзать этого инстабота?
>ЛОЛ, тут в дваче расшаривал игры?
Не, боюсь диванона и травли храню петы на гитхабе
>как оно тебе?
Было весело делать, вообще делал эту игру только потому что нарандомил её в programming challenges
pygame довольно прост сам по себе, если делаешь что-то небольшое
Сложнее было делать лаунчен на PyQt пикрил который кстати сука при темной теме GTK делает шрифт Qt невидимым, потому что я еблан не поправил конфиг
По итогу я не знаю как лаунчер в целом работает, просто гуглил, читал мануал и подстраивал чужой код под себя
>что еще за дичь мутил?
Смотря о чем вопрос, в целом на пистоне много всякой дичи делал, веб-приложухи, скрипты для автоматизации каких-то задач в ОС
Если про другие игры на pygame, то делал alien invaders, по гайду из одной книги python crush course, но это супер давно было, тоже ничего сложного по сути, пытался сделать платформер потом, но ничего из этого не вышло
Если про игры вообще, то еще в шараге была задача сделать тот же alien invaders но уже на ассемблере
Вот это реально треш был, там мозги кипели жестко, зато теперь понимаю как вообще все устроено на уровне железа
BTW, после шараги начал вкатываться, не справился с требованиями к web ждунам, потому что там была какая-то ебейшая математика и 100500 фреймворков и вот уже год работаю в банке, чищу вилкой данные для дата-сатанистов, строю etl'ки
Нет. Вот попробуй с этого начать. Ты пропустил самую важную часть программирования
Бля, что у тебя на эндпоинты подаётся и возвращается, что ответ отовсюду одинаковый? Или это последствия гениальной архитектуры?
Братюни спасибо за позитивные слова, я как бы не планирую моментально стать профикодером, рассчитываю на работу примерно через 1,5 года, то есть 18 месяцев на вкатывание.
Пока начал с Яндекс практикума, и хочу составить список литературы для понимания основ, слышал про некого Савина как он?
Библиотеку глянул, ну нихуя не понял, смог только вытащить структуру словарём. Но наверное же есть методы чтоб кокретный кусок только доставать, а не копаться в словарях тройного вложения.
И вопрос вопрос номер два. Если есть вложеный словарь, можно сразщу получить доступ в N вложение, если знаешь ключи, или только в цикле перебирать?
Нету, ты строку приводишь к словарю. Потом с ним и работаешь
Как вообще для вката jetbrains academy + leetcode + свой аналог двощей на джанге? Плюс ещё Кормена наебнуть и что-нибудь по проектированию рестухи. Из опыта в ит стажировочка по системной АНАЛитике и 3 курс вузика по прикладной информатике. Плюс пара хаков выигранных. Хватит такого чтобы каким-нибудь джуном пойти или ещё чего-то наебнуть?
А теперь как понял. Спасибо анон.
json.loads()
json.dumps()
json.load()
json.dump()
Вот и всё, что тебе нужно. Прочитай в инете про них, не займёт и 5-ти минут
К примеру строка qwert
сделать ретёрн
qwert
qwerT
qweRt
qweRT
qwErt
qwErT
и тд
как тебе работа в банке? платят норм?
кем там числишься? младшим баг дата сиентисом или типа того?
Алсо что за шарага была?
По сути брутфорс с использованием словаря паролей.
Только надо ещё не просто из файла брать варианты, а и перебирать регист букв
Передавай жсоном или аргументами командной строки в отдельную программу на другом языке данные и метод который нужно выполнить, лови ее ретурн. Или ты память общую хочешь?
квадриплу грех не ответить
>как тебе работа в банке? платят норм?
Т.к. первая работа, то сравнивать особо не с чем
Понатыканая везде "безопасность" зачастую мешает работать, например мне нужен был один плагин для текстового редактора, так для него нужно завести заявку и ожидать ответа месяц, чтобы админы САМИ тебе его накатили
Также не нравится стек, но я думаю так везде сраное древнючее легаси без внятной документации
З.п. - немного ниже среднего для джунов, но грех жаловаться, потому что я большую часть дня ебланю удаленка, а потом закрываю довольно простые задачи за несколько часов
Если попадается что-то сложное, то спрашиваю помощи и трачу чуть больше времени
>кем там числишься? младшим баг дата сиентисом или типа того?
Не, все довольно банально - "младший разработчик"
>Алсо что за шарага была?
Не самая плохая, но и не самая хорошая
Как мне кажется в них разницы нет, в любом случае на одной шараге далеко не уедешь, если бы я пытался устроиться только с теми знаниями, что получил там, сейчас бы работал в пятер очке
Хотя все же были хорошие преподы, которые делились реально полезными знаниями
я уверен что это не лучшая реализация но оно работает...
Я гуманитарий, в одной школе математика не заходила был троечником . Но когда я перешёл в другую школу, то стал отличником по математике и весь класс у меня списывал, истинна где-то посередине получается, в общем 4. Любимый предмет черчение.
Почему я хочу пойти в ит, Деньги не на первом месте, на первом месте желание уйти из сферы деятельности в которой тружусь сейчас, в общем кардинально поменять профессию, эта идея летала в моей голове очень давно а сейчас уже все, я начинаю ее воплощать, в общем процесс не обратимый, почему выбрал ит- программирование, потому всегда считал программистов некими полубогами, а в теперешней действительности когда технологии и приложения заполонили все сферы деятельности, и подавно, программисты создают новую реальность.
Так же у меня есть дочь, и я бы хотел чтобы она тоже пошла в сферу ит, тк считаю что в ближайшем будущем грубо говоря будет такая альтернатива : либо ты создаёшь машины (роботов, технологии), либо ты обслуживаешь машины, либо машины заменяют тебя.
И так сказать на своём примере прорубить окно в сферу ит для неё.
Такая мотивация.
Программирование морально тяжёлая сфера.
Реальное АйТи и программирование в частности больше не про про созидание, а про то, чтобы с чем-то разобраться и много держать в голове. Причём разбираться с чем-то огромным, кривым, запутанным и противным.
Вот ты смотришь код, тебе надо что-то подправить и доработать. Но для этого надо разобраться в куче тебе непривычного и непонятного, зачем там как-то сделано, почему криво (на это есть причины обычно), как переделать, чтобы было не криво и т.п.
Знатоки, подскажите, почему этот код https://ideone.com/I9qfNc работает так странно. Список my_list объявлен глобально и в обеих функциях мы заводим локальные списки и возвращаем их.
Так почему глобальный список изменяется?
В test_append ты аппендишь ссылки на элементы, это одни и те же списки в итоге. Надо копировать.
корка шараги помогла при устройстве на работу? ты кстати из милионника? пиздец у вас там админы отмороженные!
То есть, если я хочу создавать независимый список списков из частей другого списка со списками мне нужно делать deepcopy его частей?
deepcopy это для всяких сложных вложенных структур, для простого списка достаточно copy или того же [:]
Все окей
def __init__(self, obj):
----self._obj = obj
НО! Я не могу передать self._obj в декоратор как аргумент
@decor(self._obj)
def blabla_function():
----pass
NameError: name 'self' is not defined
Как обойти эту хрень?
У тебя ведь будет доступ к аргументам внутри декоратора, 1й аргумент это self, хуль тебе надо?
Декоратор - внешняя функция, не знает он никаких self, cls и т.д., если только ты не определил его как метод класса, в чем я очень сомневаюсь
Именно так брат. Такие эндпоинты.
>корка шараги помогла при устройстве на работу?
Я не знаю насколько это зашквар по меркам двача, но у меня короче СПО ПТУ
Насколько я узнал из тредов МЫ ВАМ ПЕРЕЗВОНИМ, подобных кандидатов отсеивает автоматический фильтр, так что их хрюши даже не видят, поэтому я поменял своё СПО на высшее в резюме и по итогу меня самого пригласили после пары недель тестовых в интересные мне компании, которые я успешно заваливал
Как только прошел этап созвона по телефону, то сразу залез в резюме и поставил обратно СПО, а т.к. уже приглашен на собес, то похер
В итоге на интервью спросили за высшее, я сказал, что его нет, есть СПО
Они сказали, что окей, пофиг
>ты кстати из милионника?
Простой Иван, город Пекин
>пиздец у вас там админы отмороженные!
Подобная херня везде, где речь идет о бабках
Во всех банках без исключения наверное
Да, это веб-приложение, если что.
> А что за данные и зачем их хранить?
Грубо говоря, несколько десятков тысяч последних результатов вычислений от разных пользователей, чтобы они могли их между собой переиспользовать, а скрипт не делал лишнюю работу.
>>1991477
> 50к - это вообще ни о чем.
От какой планки тогда отталкиваться, миллионы?
>несколько десятков тысяч последних результатов вычислений от разных пользователей
Ага, ну отлично подходит, да.
Лол, что за прикольная картинка?
алсо ты реально из китая? поясни.
пиздато, значит можно пиздеть про вышку.
И кстати, почему заваливал собесы в другие компании?
Она уже спирачена, в принципе, по содержанию выглядит достойно, я пока не читал.
Ещё есть такая книжка, но она попроще https://leanpub.com/insidethepythonvirtualmachine
Алсо, видел на ютубе серию лекций, но они про двойку, не знаю, насколько актуально, для общего развития сгодится, наверное.
>https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Питоногоспода, вкадывающийся ИТТ, а возможности скачать все одним архивом на эту хуйню не завезли? Хочу полистать книжки, выбрать наиболее подходящую, но скачивать по одной займет тысячу лет.
В бд есть FETCH, но я слышал что лучше делать это на стороне приложения. При использовании FETCH в бд, она всё равно запрашивает все данные, но выдает порциями, а првильнее будет запрашивать только нужную часть.
Я думал просто импорт-название файла, но не работает.
Я же создал переменную и она стала глобальной ведь, но в модуле она не существует.
Как исправить код чтобы можно было дотянуться до этой переменной без явного импорта?
Понял, спасибо.
>алсо ты реально из китая? поясни.
На дваче же недавно тема была с автозаменой
тян - кошачья жена
ДС - Пекин
анон - простой Иван город Тверь
и тд
Или этого в тематиках не было, только в /b/?
>И кстати, почему заваливал собесы в другие компании?
Откликался на вакансии типо "знать фласку, пистон, ськуэль и тд." Потом приходило тестовое с докером, нгинксом и другими тулзами, которых указанно не было и я естественно сливался
Еще были ебанутые задания уровня "Рассчитайте коллизию двух сфер и визуализируйте полученные данные, если известно, что на вход будут подаваться примерно следующие данные"
Я конечно понимаю, что нужно уметь обрабатывать ошибки, но я ебал проверку автотестами с 1 попыткой, где ты даже не знаешь, что именно отработало не так
То есть ты пишешь код по мутному ТЗ, отправляешь его, запускаются автотесты - все отработало, окей, беседуем дальше, иначе иди нахуй должны отработать все задачи, которые были даны, без ошибок
Ну и мой самый любимый тип вакансий, которые никого не ищут, а просто смотрят че на рынке творится
Может не питон, а чувак который прохавал питон охуеть как сильно.
>может все
Кто говорит? Инфоцыгане? Проще перечислить то, что он может, чем то, чего не может
Пикрил в помощь
...
Угараешь? Нахрена передавать туда какие-то аргументы (которые все равно физически невозможно передать как тот чувак хочет) если есть работающее решение без этого говна?
Первую попавшуюся пикчу с гугла залил, для общего понимания пойдет
А, то есть ДС?
такое проскакивало в пораше вроде но недолго, буквально несколько дней пофорсили и все.
и то в основном в связи пыня низкий рост редкий волос
Что за вакансии которые никог оне ищут? Это какие то исследовательские агенства?
алсо тесты с автопроверкой это пиздец дичь, ну там при сдаче даже не указывается где ошибка? пиздец они психи.
рад что попал в банк?
Тот чувак это я и есть. И изначально мой декоратор должен был получать число и объект другого класса. Но поебавшись 2 дня, я нашел другой способ. Теперь мой декоратор получает только число.
>и объект другого класса
ВНЕЗАПНО: без задней мысли взял и передал в декоратор, что сложного?
Функция globals тебе список глобальных переменных файла, а не папки.
В любом случае, явный импорт - лучшее решение. Какой бы ни была проблема.
А с помощью чего делают desktop applications на языке пайтон? Хочу сделать одну хуйнюшку для души.
PyQt
Библиотека matplotlib, а также не плохая bokeh
Эвент луп блокирует прибавление нового значения в поле у объекта класса. Как обойти эту проблему?
Код запущен через multiprocessing
Решил запустить асинхронно. Но multiprocessing не давал этого сделать. TypeError: cannot pickle 'coroutine' object sys:1: RuntimeWarning: coroutine 'Test.event_loop' was never awaited
Но в threading все получилось.
Я так и не понял почему.
Потому что "cannot pickle 'coroutine' object" - он же сам говорит
Он не может в бинарный формат корутину перегнать чтоб потом ее десереализовать
Неправильно, пикл это любые маринованные штуки.
Общее пространство памяти, не надо передавать объект в другой процесс ( для передачи его надо запаковать - pickle).
И для трединга другая метода передачи объектов из одной asyncio.loop в другой
>для трединга другая метода передачи объектов из одной asyncio.loop в другой
трединг же независим от asyncio?
Фигасе сколько тонкостей
Начал, как тот торговец-каджит выше, вкатываться в программирование на питоне...
35, 5 лет вахты ведущим инженегром ПТО, в/о теплоэнергетик, программировал в школе на турбопаскале. Сам с микропосёлка в залупе мира.
Повелся на пиздеж отца, что энергетик царь и бог + электростанция под боком.
Пришел к тому, что заебло морозить жопу в ебенях с уральским и прочим быдлом настолько, что уже физически тошнит от тупорезов + потолок по зарплате в моей сфере это 150к~2k$/
Так шо пока сижу на работке, изучаю Питон, прохожу Я.Практикум, хочу заказать на алике ардуино наборчик, собрать какого-нибудь робота с племянником и прикрутить к нему питон, сделать простое приложение на телефоне, чтобы можно было управлять и тд.
Короче, вот такое хобби.
На вахту поехал, потому что нет вариков больше, как поднять тонну бабла за относительно короткий период времени, а это был самый логичный вариант, купил хату в итоге на скопленные рублики...
В общем, хочется сменить сферу и в более перспективную и интересную область перейти, в сфере программирования и робототехники, потому что за этим будущее/настоящее.
Хотя, пока в перспективе из программирования+роботы первое, что на ум приходит это прошивка и ремонт домашних роботов пылесосов)))
ммм, нет, можешь яндекснуть/гуглануть.
Говно и электричество будут всегда. Кому-нибудь всегда надо будет всё это хозяйство обслуживать, а оно с каждым годом всё сложнее и сложнее.
А программу один раз написал, и она после этого работает, ты не нужен становишься.
На какой сам сядешь, на какой девопса посадишь?
Я в процессе вкота в питон, для начала запилил простенького дискорд-бота для практики и теперь думаю что делать дальше. Из того что я уже нагуглил/прочитал в нюфак треде - для того чтобы иметь хоть какие-то шансы на трудоустройство нужно изучить какой-нибудь фреймворк и REST api. Решил начать с фреймворка и выбрал Джангу, но пока гуглил гайды - понял что в некоторых местах мои знания явно проседают. В шапке дохуя книг, но какие из них нужны - непонятно.
Посоветуйте книжку по Джанге и книжку по Ресту, да и вообще разных советов мудрых.
Спасибо, анон. Таки нашел пример с вебсокетами, где клиент шлет запросы из браузера, очень годно. https://www.youtube.com/watch?v=4haMUvUxUJI&list=LL&index=1
Теперь есть еще пара вопросов, если вкратце направишь буду крайне благодарен.
1) Я хочу сделать любую веб игру в которую играет 2 человека, хоть крестики нолики, главное чтобы состояние игры менялось после ходов игроков. Я так понимаю, что состояние игры и очередность хода без проблем будет считаться на сервере, хоть в каком нибудь словаре, а клиенты будут обращаться к серверу, видеть очередность хода и от этого уже можно будет сделать ход или нет и т.д. Как это масштабировать, чтобы одновременно могло несколько сессий проходить, чтоб разные люди могли играть. Тоже самое, только в словаре несколько сессий хранится? Подозреваю, что есть стандартное решение этого вопроса
2) Как проще всего вывести и вести разработку на реальном сервере, чтоб можно было не с локалхоста ебошить, а по нормальному адресу, чтоб можно было корешам скинуть показать что уже получилось, какой самый быстрый / легкий вариант?
Не смотрел, ткнул в пару мест.
На видео чувак реализует руками http протокол. Это как-бы странно, максимум для обучения полезно, чтобы понимать, что такое http протокол.
На практике это работать не будет, у него там очевидно однопоточный вариант, или надо будет ещё треды использовать, или asyncio, или руками делать аналог асинхронности через селекты, но это зверство.
То, что нужно для твоей задачи, это использовать какой-нибудь асинхронный фреймворк. Например aiohttp.
Так ты получишь и возможность с вебсокетами работать, и веб-страницы отдавать. Тебе ведь надо, чтобы твой сервер саму страницу отдал, на которой формы, реализация клиентской части с работой по вебсокетам и т.п.?
>Тоже самое, только в словаре несколько сессий хранится?
Самое простое, ты хранишь id сессии, и словарь объектов-состояний игры. Скажем игровое поле, чей сейчас ход и т.п.
Следующий уровень, это когда ты состояние хранишь в каких-то внешних сервисах, вроде redis, БД или чём-нибудь ещё. Так можно устойчивость и большое масштабирование сделать, но для твоих задач это не нужно.
>какой самый быстрый / легкий вариант?
Вариант только купить себе хостинг на VPS, цена вопроса на уровне 5 долларов в месяц. Можно дешевле что-нибудь найти, но за 5-10 долларов в месяц есть какие-то очень-очень приличные варианты.
Бесплатно такие вещи не очень дают из соображений безопасности.
Где почитать или может есть простой ответ как разбивать проект на файлы и оформлять по человечьи сразу?
Спасибо, я уловил, вот только понятия класс еще не видел(я знаю что это такое, но в "программе" пока не подразумевается что мне стоит париться с этим пока)
Но главное что я понял что это import. Т.е. он сразу поймет что я импортирую из соседнего файла в проекте, а на будущее - если я захочу импортировать из другого проекта - мне надо сначала добавить фаил в проект или можно как-то import ~/Pidoras/musor/proecthuini hyinya.py zashkvarclass? Или так делать не принято из-за неразберихи с файлами и невозможности запустить проект если я забуду отправить все человеку и он не распихает все по директориям так же(или у него вообще винда)?
Я решил открыть рандомную книгу, только не для детей и понял информацию сразу. А эта книга создана дьяволом. Я даже не представляю, как её смогут понять дети.
Там в аннотации не написано что она должна даваться детям в придачу к преподу?
Надо было с сишки начинать, она более понятна для новичков.
Так блять с импортами в питоне пиздец тонкостей дохуя. А функции это прос о функции. Ничего необычного.
Я учу по фану и мне похуй, но я уже вижу что работы "хуила питоновая" не существует как с джавой, например, это либо дрочила цифер у которого плюсом идет ЛЮБОЙ скриптовый язык, либо питон написан десятым языком в требования, либо вообще в позиции "ну было бы не плохо, а вообще нахуй надо". Смотрел по питеру если что. Я не знаю почему я выбрал питон, но я уже чувстую со всех сторон намеки на туповатость этого выбора.
Понял. Бтв почекай вакансии на джангу и фласк. Их вполне себе по количеству. Ну по крайней мере если ты в дс...
ты не очень умный...
уха, шашлык, плов, пельмени, блять...
Пельмени к уху. Кринж то какой.
Это я должен прогать, а потом ещё шеф-поваром на лыжах у костра скакать с гитарой?)
во время
Почему при асинхронном доступе к базе (например aio sqlalchemy) мы совершает await дважды: при запросе в базу и при доставании результата как вот тут:
async with self._connector() as connection:
----query_result = await connection.execute(query)
----rows = await query_result.fetchall()
Чего там даже эвейта внутри не видно https://aiopg.readthedocs.io/en/stable/_modules/aiopg/cursor.html#Cursor.fetchall
> Параметры должны приниматься как в JSON, так и в POST формате параметров запроса.
Аноны, что за POST-формат параметров запроса? Это мне кастомные хэдэры передавать надо?
Рискну предположить, что первый раз ты говоришь базе выполнить операцию, второй раз - получаешь от базы данные
Хм, спасибо. Ни разу в REST с таким не сталкивался
import socket
s = socket.socket()
s.bind(('192.168.0.1', 1488))
Какой бы локальный айпишник не указывал получаю
OSError: [WinError 10049] Требуемый адрес для своего контекста неверен
ЧЯДНТ?
Читаю грохаем алгоритмы>читаем лутца и выполняем задачи оттуда> опционально читаем кнута, параллельно пишем какую-то программу (и тут вопрос, для того чтобы путь от профана до работника был максимально краток, мне нужно акцентироваться на вебе, или можно заниматься приложениями? Хотелось бы конечно второе). Надо учить все так чтобы сразу засесть за работу, а не терять время на условной стройке, так что оклад устроит любой, лишь бы на еду хватало. И вообще сколько времени займет путь от профана до быдлокодера-работника?
Хорошо, я понимаю. Мне нужна хотя бы просто какая-то сверхзадача, чтобы на ней акцентироваться и от нее исходить. Есть какие-нибудь идеи вроде борды5000запросов в секунду как в той пасте?
Поймал себя на мысли, что постоянно возращаюсь к питону, чтобы не начал изучать, за какой бы яп не брался или хотелся бы взяться. В чем подвох?
Он прекрасен, это вершина человеческой мысли, ничего лучше нет и быть не может.
Мне на работе намекнули, что можно подучить питон и скинули ссылку на курс хотя изначально я шел на другие дела в этот проект, я очень скептически отнесся, потому что тяги к самообразованию у меня давно уже не было, но мне невообразимо зашло. Просто влюбился в него с первого взгляда. Продолжаю его изучать и выбиваю себе задачи на питоне, жизнь удалась.
Если это не ирония, то в будущих версиях нас ждет оптимизация, еще более сахарный код, еще более плюшек, case конструкции, хз даже почему его так хейтят, мол для даунов и ничего не может. Веб, приложухи, даже уже микроконтроллеры есть. Как что еще нужно? Чел из видоса мониторил джобы по питону, на хх и прочих, там рили питон топ и больше всего строчек по нему. Даже по моей мухосрани строчек больше на питухоне чем на сях, жаве и прочем, но там практически только веб или всякие академгородки.
Тренировочные задачи, я решаю - изъебываюсь, затолкал все в функции, у меня идет работа с 5 переменными, которые я затолкал в листы, каждая функция либо лямбдой вычитает из оригинального листа количества, либо превращает некоторые элементы в нужные. Смотрю как ее васян со стак оверфлоу делает - тупо переменные +, переменные -, просто последовательный список операций с каждой переменной.
Короче у меня 50 строк, у него 97(с однаковыми отступами по ПЕП) и без комментариев.
Но с другой стороны у него как топор читабельно, у меня тоже(учитывая тупость учебной задачи), и обе задачи проходят проверку edutools
Вот это особо не поясняется кроме ублюдских видео на ютубе косого лысеющего хохла советующего не изобретать велосипед
А веб на питоне сейчас до сих пор пишут на джангоговне или появилось что то нормальное?
мимо нода-тс бэкендер
480x480, 0:10
Статья конечно старая, но я думаю алгоритм обучения от переменных то есть от конкретных библиотек и языков не сильно зависит, а потому можно будет нагуглить новые, если эти устарели. Надеюсь добрый, мудрый, смелый, отзывчивый, великолепный анон скажет в чем я не прав если что
Я: >>1993831
Поглядел мельком, вроде прикольно. Но на вид, как будто это чисто новая мета. Или уже крупные дяди уже в проде используют?
Конечно есть. Напиши свою имиджборду. И чтобы она выдерживала 3000 запросов в минуту.
Это весьма очевидный список, ты его найдешь и в гугле, и если посмотришь программы курсов, там все есть прямо как на хабре. Я сегодня знатно проиграл, захожу на скиллбокс(потому что присылает мне рекламу в вк постоянно), там все эти курсы, вижу курс джанго за 12к, тысяча в месяц, думаю что когда дойду - подумаю стоит ли брать, типа тысяча немного, но я получу анального раба-препода отвечающего на вопросы, открыл этот курс, внизу кнопка - "скачать программу курса", нажимаю - кидает на главную страницу. КУРСЫ ЕБАНЫХ КОМПЬЮТЕРНЫХ МАСТЕРОВ, ПРОФЕССИЯ ВЕБ ДЕВЕЛОПЕР НАХУЙ ГЛЮЧНЫЙ ХУЕВО ОТОБРАЖАЮЩИЙСЯ САЙТ ХУЙНИ СДЕЛАННЫЙ КОНТУЖЕННЫМ ДИЗАЙНЕРОМ И ТАКИМИ ЖЕ ВЕБ МАКАКАМИ ЕБАЛ В РОТ.
И решил что сам когда придет время выучу джанго
>вижу курс джанго за 12к, тысяча в месяц
И вы могли подумать что он на год, а нет, он блядь на полгода. И там все цифры такие, например тестирование мобильных приложений 58800 на 9 месяцев, и это всего 2450 в месяц!
Я не могу это объяснить
>у меня идет работа с 5 переменными, которые я затолкал в листы, каждая функция либо лямбдой вычитает из оригинального листа количества, либо превращает некоторые элементы в нужные.
Нихрена не понятно, что ты имеешь в виду. Смотреть надо. Если ты оптимизируешь строчки тем, что в одной строке делаешь две операции, то это ни разу не оптимизация.
Код должен быть читаемым и сопровождаемым. Не уверен, что это про твой вариант.
>косого лысеющего хохла
Если ты голубоглазая пышноволосая русня, что ты вообще в программирование лезешь? Или в манагеры по продажам, там симпатяшки нужны. А не те, кто что-то умеет.
По идее, оба раза ты реально обращаешься к базе данных, по сети соответственно. Поэтому нужен await, синхронно лучше не делать.
Первым запросом СУБД разбирает запрос и помещает результат куда-то к себе в буферы. Из которого ты можешь запрашивать данные как построчно, так и все вместе. Вторым запросом бы именно выкачиваешь данные из СУБД к себе в процесс.
То есть можно с этим прийти устраиваться?
>>1994096
Где то читал что нанимать препода - гиблое дело, у него ~30-50 учеников и отвечает он дежурными фразами, мол легче самому все это искать, а тому что могут дать на курсах ты один хрен сам научишься
>когда придет время
Звучит как оправдание не находишь? "Не получилось ну и ладно, главное что я старался". Не откладывай в долгий ящик
>голубоглазая пышноволосая русня
Ну не совсем, я голубоглазая пышноволосая полунемчина полу жидяра, может мне можно все таки? Я уже в манагерах и админах клуба был, не хочу больше.
Когда придет время я подразумевал когда я дойду просто до этого, я даже близко не подошел к разработке чего-то
Не верю, что может быть какой-то смысл в дешёвых онлайн курсах.
В живых курсах может быть какой-то прок, там контакт больше, ты видишь препода, он тебя, ты видишь как и что делают другие ученики. С ними можешь что-то обсуждать. Правда такие курсы будут в любом случае дороже стоить, чем 2т.р. в месяц.
В онлайне сложнее это обеспечить в принципе. Как-то можно, но это сложно и дороже будет. Хотя если с тебя много попросят, то не факт, что этим обеспечат.
Тебе в обучении нужна обратная связь, а здесь скорее всего её не будет.
Просто электронных материалов дофига и бесплатных. Тебе не нужно даже ворованные курсы с трекеров качать.
Возьми программу курса и сам изучи нужные темы по этой программе.
Было бы странно, если бы не использовали. Сейчас вообще у пайтоновского веба своеобразный ASGI-ренессанс - думаю, скоро стандартом станет.
Ты долбаеб в строчках оценивать качество кода? Два главных качества кода это поддерживаемость и читаемость. Чтобы оценить насколько все плохо у тебя с этим на данном этапе, напиши проект тысячи на полторы строк. Оставь его на месяцок-два, а потом открой и попробуй внести туда новый функционал. Вот как раза два-три такое придется сделать, так сразу поймёшь, что городить лямбды на ровном месте хуйня затея, что лучше написать топорно, чем хуячить редкоиспользуемые функции и модули, что экономия двух десятков строчек выливается в десятки часов ебли и охуевания от того, что ничего не работает.
> А веб на питоне сейчас до сих пор пишут на джангоговне или появилось что то нормальное?
Что у тебя за проблемы с джангой?
ASGI ренессанс потому что вышла ASGI джанга лол
Если ты пишешь код, для которого нужны комментарии, то ты уже пишешь говнокод. Как минимум, ты заставляешь человека не только поддерживать код, но и поддерживать комментарии. Но это половина беды, вторая половина заключается в том, что говнокод на то и говнокод, что комментарии у тебя будут на 30-40 строк, что не просто не улучшит, а лишь ухудшит читаемость кода.
Но вообще это все лирика, просто напиши петпроект за недельку на тысячи полторы строк. И попробуй его поддерживать новым функционалом раз в месяц-полтора хотя бы три-четыре месяца. Как перепишешь код в пятый-шестой раз, то приходи за азами кодстайла в тред.
>Если ты пишешь код, для которого нужны комментарии, то ты уже пишешь говнокод
Ты бросаешься в крайности. Комментариями надо пользоваться для того, чтобы пояснять, зачем нужен некоторый кусок кода и почему его не надо удалять при рефакторинге. Ну и для пояснения сложных алгоритмов, которые иногда таки приходится писать. Короче - по обстоятельствам.
>пояснять, зачем нужен некоторый кусок кода
Этот кусок кода должен пояснять сам себя. Если он этого не делает, то вместо дрочева комментариев его надо переписать так, чтобы пояснял.
>и почему его не надо удалять при рефакторинге
Для этого должны быть тесты.
>Ну и для пояснения сложных алгоритмов
Если речь о математических алгоритмах, то там максимум нужна ссылка на википедию.
Код сам за себя может пояснять, что он делает. Но он не может пояснять, зачем он это делает.
>Этот кусок кода должен пояснять сам себя
Код сам может пояснять только то, что он делает, а не почему. Это две разные вещи.
>Для этого должны быть тесты.
А если их нет?
>Если речь о математических алгоритмах, то там максимум нужна ссылка на википедию.
Не совсем. Математические алгоритмы обычно заканчиваются подключением нужной библиотеки - тут комментировать не нужно. Я скорее про всякие ебанутые преобразования данных. Они встречаются в основном в датасаенсе, но и в других сферах тоже не исключены.
Это уже документация бизнес-логики или внешнего API, в комментариях сурс-кода такое не пишется и не должно писаться.
>Если у тебя нет ног, то нет смысла обсуждать варианты педикюра.
Юнит-тесты имеются от силы у половины проектов, и тоже нуждаются как в комментариях, так и в поддержке.
Глянул ради интереса сорцы django, aiohttp и fastapi.
FastAPI очень-очень бедно задокументирован, aiohttp средненько с большим упором на docstring, а не комментарии.
Зато вот django просто конкретно закомментирован. А django всегда считался образцом, как надо проектировать, документировать, такое настоящее индустриальное ПО.
>Это уже документация бизнес-логики или внешнего API, в комментариях сурс-кода такое не пишется и не должно писаться.
Любой код реализует какую-то логику, иначе он просто не нужен. Логика может быть неочевидной. Если её оформлять в виде документации, то во-первых, она может быть сильно больше, чем просто код, во-вторых, она будет где-то отдельно, это придётся лезть в документацию. В третьих, в документации часто принято какой-то код или псевдокод приводить для иллюстрации, потому что кодом некоторые вещи проще выразить, чем словами.
Реальная логика действий может быть закопана довольно глубоко. У тебя функция вызывает другие служебные функции для внутреннего применения, не экспортируемые, они другие функции. В них ты закладываешься на некоторые вещи, что у тебя данные конкретного вида, что одно вызывается после другого и т.п. Много магии. Много не понятно, где смотреть. Это реальный код реальных задач.
Я видел народ, который считает, что код должен быть "самодокументированным", но их код обычно ни разу не саодокументирован.
Вообще чаще комментарии не пишут, чем пишут. Но и за код отвечают конкретные люди, кто просто знает что и зачем там без документации. Но это дурной стиль. Хотя в принципе удобно, когда тебя трудно заменить другим человеком.
В первом параграфе ни одно утверждение не следует из предыдущего. Неочевидную логику нужно наоборот описывать как можно проще и на видном месте, а не закапывать в слой комментариев в какой-то жопе.
>Реальная логика действий может быть закопана довольно глубоко
Ну значит откапывай, а не накидывай сверху еще комментариев лопатой.
>Много магии
Убирай магию, а не пиши некрономикон.
>Либо ты говоришь "я комментирую, потому что так правильно,
Тогда ты скажешь что я никчёмный говнокодер, который пишет говнокод, а нормальные проекты так не делают.
Я говорю, что для серьёзных проектов с хорошей репутацией обилие комментариев это норма.
>Ну значит откапывай,
Невозможно сложную логику сделать простой. Примерно как невозможно любую программу уместить в 1000 строчек. Программирование о сложности. Как только проект растёт, растёт и сложность в нём. У тебя всегда есть огромная масса неочевидных моментов, огромная масса допущений.
Я сейчас делаю штуки, где очень много от ETL. Ты работаешь со сложными данными. Я могу не делать какие-то вещи, проверки, закладываться на то, что данные будут нормальными, потому что знаю, что будут нормальными. А если делать непробиваемый код, то там он в разы раздуется и усложнится. Но такие вещи надо комментировать.
Может быть масса решений не очевидных, но удачных. Я делаю что-то не очевидно, чтобы мог поддержать что-то. И вот такие вещи надо комментировать.
>Убирай магию, а не пиши некрономикон.
Когда ты пишешь большие и сложные вещи, с большой и сложной логикой, магия всегда будет. Особенно учитывая, что ты завязан на внешние данные и внешнюю магию.
Python используется в автомобиле Tesla, так что изучай, не парься.
Скоро в каждом утюге будет.
Так это общеизвестный кусок дерьма. Просто один из самых первых фреймов под веб для питона и поэтому много где использовался. Если на питоне до сих пор основа веба это джанго, то слава христу, что я 5 лет назад дропнул этот питон нахуй и вкатился в нормальные технологии.
Веб-фреймворк Django используется в сайтах Instagram[9], Disqus[10], Mozilla[11], The Washington Times, Pinterest, YouTube, Google и др.
https://ru.wikipedia.org/wiki/Django
run_in_executor + ensure_future
Лутц же старый. Порешай задачи, почитай по стандартным библиотекам, почитай кукбуки.
> Ты бросаешься в крайности. Комментариями надо пользоваться для того, чтобы пояснять, зачем нужен некоторый кусок кода
Да, бывает, повторяю, бывает(!!!) иногда ситуация, когда без комментариев не обойтись. Какая-то охуительная схема по подготовке данных к отправке или оптимизация чего-то, когда целенаправленно жертвуют читаемостью в угоду скорости или сложным преобразованиям. Но в общем случае, наличие комментариев говорит о том, что в проекте лютый говнокод и комментарии это попытка хоть немного пролить свет на внутреннюю логику.
> почему его не надо удалять при рефакторинге.
Чего блять? Ты удаляешь все модули, в которых нету чёткого обоснования в комментариях почему их удалять не надо?
> Ну и для пояснения сложных алгоритмов, которые иногда таки приходится писать. Короче - по обстоятельствам.
Я выше написал. Иногда комментарии нужны, да. Но они мягко говоря не панацея
> Так это общеизвестный кусок дерьма.
Держи в курсе. Особенно смешно слышать это от человека, который пишет на ноде.
> Просто один из самых первых фреймов под веб для питона и поэтому много где использовался.
Питон в вебе использовали потому что была джанга, а не наоборот.
> Если на питоне до сих пор основа веба это джанго, то слава христу, что я 5 лет назад дропнул этот питон нахуй и вкатился в нормальные технологии.
> в нормальные технологии
> нода-тс бэкендер
Ага. Понятно. Продолжайте вести наблюдение.
Нужна помощь /pr/. Просьба к вам пройти по ссылке
https://2ch.hk/po/res/42808915.html (М)
И там по ссылке глянуть видео на Идель-Реалиях. Суть в следующем: есть семья. Отец-одиночка и три его сына: музыкант, программист, ихтиолог. Программист пишет код на Python и Java и ему Amazon дал личный грант. А также его взяли контрактором в распределённую команду канадской корпорации из 60 - 70 сотрудников. И там на видео бл скриншот кода. Мы там в теме спорим, действительно ли код адекватный для контрактора или вся семейка (музыкант, программист, ихтиолог) врёт, а код - Hello, World.
я не мэтр, но с SAVE_FILE_TO_AMAZON чот проиграл
Кек. А ноду юзает пейпал, нетфликс, фейсбук, амазон и тот же гугл. Дальше то что?)
>>1994519
Я если честно подумал сперва что ты рофлишь, защищая этот кусок дерьма, но видимо нет.
>Держи в курсе
Говно орм - раз. Отсутствие асинхронности - два. Худшая в мире архитектура - три. Нихуя почти не развивается - четыре. Единственный его плюс - в коробке сразу много чего есть и не надо руками писать лишнее. То бишь, обычный макакинг. А, ну и про типизацию думаю сам допрешь.
В ноде есть божественный libuv, асинхронность, eventloop, прекрасный тайпскрипт и начали появляться нормальные инструменты по типу NestJS где реализована отличная архитектура DDD, охуенная масштабируемость, заточенность под микросервисы, и куча возможностей для кастомизации. Даже если нест не вкатил - нода пиздец как развивается, и можно спокойно без головной боли собрать охуенный кит для себя на основе того же express/koa.
Хотя нахуй я это пишу, если все что осилил джангодебил помимо ковыряния админок на своем помойном фреймворке это
я>Ага. Понятно
Сходи прочилься, сынидзе.
>1994414 (You)
Кек. А ноду юзает пейпал, нетфликс, фейсбук, амазон и тот же гугл. Дальше то что?)
Ничего)
Загуглил сочетание "джанга питон". Увидел, что пациент бредит. Отписался.
Мы вам перезвоним.
Бля, не так. Атрибуты то понятно - они присвоены экземпляру. Я вызываю методы класса. И они вызываются. хотя в классе, к которому принадлежит экземпляр, их уже нет.
Хороший вопрос на самом деле, вот я пожалуй не знаю как. Вопрос "нахуй такая архитектура нужна" не поднимаем.
Когда ты делаешь
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)
Но не очень симпатично смотрится
>Атрибуты то понятно - они присвоены экземпляру. Я вызываю методы класса. И они вызываются. хотя в классе, к которому принадлежит экземпляр, их уже нет.
Методы на самом деле такие же атрибуты. Там работает механизм MRO.
Суть в том, что если у объекта нет своего собственного атрибута, либо метода, либо просто другого объекта, то тогда питон смотрит, нет ли такого атрибута у класса этого объекта. Если нет, то смотрит на родительский класс и т.д.
У тебя ведь могут быть не только методы, но и переменные класса, доступные в экземплярах.
>Суть в том, что если у объекта нет своего собственного атрибута, либо метода, либо просто другого объекта, то тогда питон смотрит, нет ли такого атрибута у класса этого объекта. Если нет, то смотрит на родительский класс и т.д.
Я это понимаю. Потому и не понимаю откуда он берёт метод, если класс я удалил уже, а в экземпляре метод не переопределялся.
class Test:
_def Жопа(self):
__print("Ыть")
biba = Test()
class Test: pass
del Test
biba.Жопа()
Почему выполняется метод Жопа()? Он же долже был искаться в классе, а класс уже тютю.
Класс не тю-тю. Он просто недоступен по имени Test. Но в объекте он хранится не по имени, а по ссылке.
То есть после такого у тебя реально в памяти будут оба класса. При этом по имени Test доступен новый класс, а в объекте biba старый класс
Попробуй сделать
print(id(Test), id(biba.__class__))
до и после изменения класса
Спасибо огромное. Причём я так блядь и знал что питон это где-то хранит. Такой же заёб был с перезагрузкой объектов, импортированных через from.
Ещё вопрос. Я правильно понял, что в питоне встроенные операции не ищут метод в экземпляре, а только в классе?
А как без ламбды? Её роль в том, чтобы связать функцию external_method с объектом a
>Я правильно понял, что в питоне встроенные операции не ищут метод в экземпляре, а только в классе?
Хороший вопрос, пожалуй я не знаю, так слёту в доках ответа не вижу, надо бы заботать.
Попробовал, не работает так просто, но мысль возникла, что в питоне функции, начинающиеся с __ обрабатываются иначе. Причём конкретно с встроенными функциями ещё свой механизм, чем с приватными методами, в последних просто замена имени идёт специальным образом, чтобы эту приватность поддержать.
Короче пока не знаю. Но итересный вопрос.
Думаю, всё-таки можно и операторы вроде __call__ и __eq__ каким-нибудь образом переопределить для конкретных объектов, а не для классов в целом.
Если этот метод мы встраиваем в конкретный экземпляр, почему явно не написать его под этот экземпляр? Без аргумента self вовсе.
Может я хуйню конечно сделал, но я только начинающий макакен + уже сам запутался в своём вопросе уровня "как удобнее есть говно зубочисткой".
Я пробовал через консоль idle, смотря что происходит с элементами через __dict__, id, получается ли переопределить разным образом и что происходит при этом.
В принципе и более умные способы существуют.
В доку питона тоже заглянул, там как-то непонятно про это написано. Надо всерьёз влезать, может PEP читать соответствующие.
Лутца мне кажется тебе надо или обновить, или какую-нибудь другую книжку взять. В твоём скрине упор на питон-2, это морально устарело, всё, что касается объектной модели, там радикально переделали. В плане кишок там вообще всё очень сильно переделали.
Только голову себе ломать вот этими разными версиями. В общем лучше смотреть книги, где именно про питон-3, может с отсылкой иногда к тому, как было в питон-2. Сам когда-то очень давно такое читал, норм а потом пошёл на работу, где был питон-2, вот это не норм
>В общем лучше смотреть книги, где именно про питон-3, может с отсылкой иногда к тому, как было в питон-2.
Так у Лутца так и есть же.
Это если ты пишешь метод с нуля. А если у тебя есть функция-метод, которые ты хочешь привязать к конкретному объекту?
Ок, понял. Спасибо.
>А если у тебя есть функция-метод, которые ты хочешь привязать к конкретному объекту?
То мне пора в дурку.
В твоём скрине явно речь идёт о питон-2, с отсылкой к тому, что в питон-3 уже несколько иначе. Тебя учат в первую очередь второму питону.
Питон-2 надо просто забыть, как страшный сон. Ну полезно некоторые вещи представлять оттуда, чтобы знать, откуда ноги растут. Но не более.
Особенно все эти классы старого стиля.
Ненене. Книжка про 3, просто он много рассказывает про то как было и что делать, если вы ещё сидите на 2 или переходите.
>А если у тебя есть функция-метод, которые ты хочешь привязать к конкретному объекту?
Задача изначально была оторванная от реальности, но всё же: как может так получиться, что у меня уже есть готовый метод, который принимает аргумент self?
>как может так получиться, что у меня уже есть готовый метод, который принимает аргумент self?
Легко в общем-то. Ты можешь пытаться использовать метод из другого класса для своего объекта. Либо метод, сделанный чтобы его в качестве MixIn использовать. Это как раз нормально.
Понял.
И нужно поставить скрипт на паузу time.sleep(60) и попробовать повторить перевыполнить функцию пока не получится нормально передать запрос.
Хочу написать обработчик ошибок.
Проблема в том, что скрипт из разных модулей, есть класс, в классе эвент-луп со своей логикой и вызовом разных функций которые принимают разные аргументы. Эти функции, иногда завершаются ошибкой.
Отлавливать и писать логи ошибок я научился, код для этого лежит в отдельном модуле.
Получается следующее:
Я вижу что "Ошибка в функция_нейм". Я даже могу вызвать эту функция_нейм() но я не знаю как получить те самые аргументы для этой функции, которые передались как-то в эвент-лупе класса, да еще и в другом модуле.
Есть мысль заколхозить в классе переменную которая будет хранить аргументы от последней вызываемой функции, чтобы их можно было потом использовать для передачи. Но это выглядит как-то слишком костыльно, как мне кажется.
Какие есть варианты более подходящи для моей ситуации?
Ссори если написал запутано
Параметр key в sorted должен быть функцией, которая получает на вход элемент сортируемой последовательности, а возвращает значение, которое будет использоваться для сортировки, функция-ключ может быть и лямбдой. Я так понял, тебе надо отсортировать именно список размеров, а не словарь date, ведь там только один элемент, собственно sizes, так что в итоге получается как-то так:
sizes = sorted(data['sizes'], key=lambda size: size['height'], reverse=True)
Спасибо, ты мне очень помог.
Нихера не понял. Если у тебя asyncio и один процесс интерпретатора, то что ты не можешь получить из одной области памяти?
Ты делаешь запрос, есть какой-то payload и тебе надо повторить запрос с измененным payload?
Скинул бы ссылку на git, так хоть можно понять о чем речь идет
Нихрена не понятно, но скорее всего тебе надо реализовать "менеджер заданий".
У тебя есть или отдельная asyncio-задача, или отдельный тред, которые занимаются тем, что выполняют специфичные задачи. Задачи они получают в виде словаря с какими-то параметрами. Для этого они случают очередь.
Соответственно, если у тебя произошёл сбой, ты всё это контролируешь в одном месте и можешь перезапустить сбойное задание. А тому, кто вызвал, думать об этом не надо.
Самый общий паттерн.
В данном случае, это может и так, только вот в общем случае это может не сработать. Чтобы сортировать коллекцию, элементы которой принадлежат типу T, (ну, или функция-ключ возвращает значение типа T), необходимо и достаточно, чтобы у этого типа T были реализованы операции сравнения, при этом, реализация каких-либо других операций, например, операции вычитания, для этого типа T вовсе не требуется для выполнения сортировки, то есть, существование параметр reverse более чем оправданно.
Полностью согласен, но придется ответить духотой на духоту: операция вычитания и операция обращения знака это разные операции.
Хочу сделать пет в несколько этапов, что бы все вспомнить
1) Сервис для получения курсов валют раз в 10 минут, на который можно было бы подписаться и который отсылал бы дифы на подключившиеся сервисы + либа-клиент для него
2) Реализация простого rpc-сервера, который можно было бы превратить в любой нужный сервис просто добавили методы
3) Деплой на gitlab без выхода в сеть
4) Деплой на амазон с выходом в сеть через бесплатный аккаунт
Как еще можно поиграться с кроликом?
Не понял вопроса. Мне нужна программа для расчетов, эта функция высчитывает проценты, что непонятного? Единственное, что мне было нужно - заставить скрипт работать и я сам с этим справился. Не понимаю вообще, зачем ты что-то мне пишешь, дружок.
Испытал те же чувства, что и тот аноним. Сложно словами описать. Ну типа ты пишешь примитивные вещи и при первой же ошибке пишешь на двач, вместо того чтобы подумать и погуглить.
В функции print разделитель по умолчанию - пробел, поэтому в строке результат не нужен пробел после двоеточия, у тебя получается два пробела подряд в выводе.
Лучше писать int(input())
Sum по-английски пишется с одной m
Press any key будет работать не так, как должно работать, а ждать, пока ты нажмёшь enter
Не знаю, зачем я это пишу, все равно из тебя ничего путного не выйдет
>Sum по-английски пишется с одной m
Здесь ты не совсем прав, в том смысле, что sum всё-таки базовая встроенная функция питона и использовать такие имена переменных крайне дурной тон. Поэтому summ довольно общепринято.
> Испытал те же чувства, что и тот аноним.
И с чего ты взял, что меня ебут ваши чувства, дядь? Ты аустист что-ли?
>Сложно словами описать.
Понимаю, бывает такое, когда у тебя вместо мозга раковая опухоль.
Дальше твой высер препарировать мне просто лень. Охуеть, посмел создать два поста в ниибаца важном треде, отвлекаю наверное от чего-то важного? Тебя ебать только отчим должен, но никак не мои "примитивные вещи".
Тл;др
Нахуй иди долбоеб и советы свои в задницу засунь, а я буду делать что захочу и где захочу.
Ты, анон, не обижайся, но смотрится так, как будто ты первый-второй день изучаешь программирование с нуля, посмотрел урок, попытался написать, и решил сюда что-то кинуть. Может потому, что скучно.
Но людям не очень прикольно отвечать на вопросы такого уровня. И совсем не хочется, чтобы только на таком уровне обсуждения были.
Дам тебе дельный совет. Пользуйся питоновской idle, думаю ты знаешь, что это такое. Там ты можешь каждую операцию более-менее оттестировать, каждую конструкцию проверить. Это сильная сторона питона и помогает быстро прокачать скиллы.
REST, JSON API
Попробуй по HTTP. Тебе понравится
Ух, как же тебя разворотило! Надеюсь, никогда не вкатишься, не хочу с истеричными мартышками в одном айти работать.
Никак, упрешься в прожорливость erlang
Почему нет? Можно делать приватные репозитории, бесплатно
Создаешь лист с проксями, при каждом запросе дергаешь рандомом или если можно последовательно, то через itertools.cycle
https://docs.aiohttp.org/en/stable/client_advanced.html?highlight=proxy#proxy-support
Не вкачусь, это моё хобби.
>>1996497
На что обижаться? На то, что вы настолько охуевшие, что нельзя вопрос задать и, сука, самому на него ответить?
Это не со мной что-то не так, раз вы не можете пройти мимо пусть даже самого тупого на свете, но уже закрытого, блядь вопроса со своим неебически важным мнением.
Вот мне действительно не стоило больше писать итт, кормлю последний раз.
Изучаю пайтон (не как основное ремесло, а как вспомогательный инструмент).
Хочу сделать на нем какой-нибудь пет проджект.
Идеи есть, но суть не в этом.
Что мне вообще сделать, сайт на джанге или десктоп на PyQt (или аналогах)?
Хоть и не планирую писать сайты промышленно, склоняюсь к джанге, потому что она хотя бы на слуху. С другой стороны, для сайтов еще кучу всего надо знать. Десктоп будет проще, наверное, но десктоп на пайтоне кажется совсем мертвой темой (извините ради бога, если ошибаюсь).
Помогите определиться.
В принципе клепать фронты на питоне можно, но зачем? Логичнее было бы написать HTTP сервак.
Да мне именно для практики питона, не то чтобы я мечтаю делать сайты или приложения.
Ну запили тогда рисовалку фракталов и рендерь её прям в консоль. Прям в ту у которой 16 цветов и 80x25 размер экрана.
Я бы веб-приложение пилил, клиентскую часть можно запустить без боли везде где есть браузер, серверную часть можно запустить хоть на утюге, хоть на другой стороне глобуса. Всяких UI-kit сотни, интерфейс сразу будет выглядеть прилично. Можно использовать возможности браузера, push-сообщения, pwa и все такое. Без js не обойтись, но зачем на одном языке зацикливаться.
Чем тебе консоль с фракталом не осязаемое? Ей очень даже можно с кем-нибудь поделиться.
Ну типа
def test():
__a = 5
__b = 6
__c = 7
__return a,b,c
порядок возврата в этой хуете не гарантирован, это же дефайн сишка с костылями, если хочешь то берешь и в массив суешь
и вообще тебе скорее нада глобалки тащить или создавать пустышки, после передавать в функцию и менять через глобалку.
Это я понимаю, я другое имею в виду - как по-православному скрейпить эти самые прокси-то? Просто как-то не верится, что для такой задачи нету какой-то стандартной тулзы.
Оно слишком просто пишется, что бы иметь стандартную тулзу, у тебя по сути есть просто словарь c доступами, которые тебе нужно выбрать по определенному признаку.
Хуй знает чел, я хоть и начинающий, но слышал, что глобалки зло, и нехуй их использовать.
____def step():
________nonlocal start
________res = start
________start += 1
________return res
____return iter(step, stop)
Не понимаю, почему эта конструкция работает, как итератор. Мы же в iter() передаем функцию, а не итерируемый объект, или внутри range сохраняется состояние start?
>>1997506
Нет, так тут фишка же в чём: если поток пользователей через прокси пропускать, то лист с этими прокси должен иметь вменяемую степень валидности, то есть, количество мёртвых или медленных прокси должно быть сведено к минимуму, а желательно вообще к нулю. Поэтому странно, что нету каких-то общеупотребимых инструментов/сервисов под пайтон, которые бы автоматизировали эту фильтрацию.
Так-то, конечно, можно и самому это написать, но, понятное дело, лень.
Да, я вот только на такие сервисы и наталкивался. Обдиралово натуральное.
Наверное, придётся свою либу писать.
https://2ch.hk/pr/res/1989943.html#1997629 (М)
вон чел хочет писать самодельную библиотеку для запроса к апи по списк прокси. напиши свою реализацию. нафиг нужны всякие вебы да десктопы.
веб делай, задеплоить можно без проблем и доступ будет откуда угодно, джанга я думаю более задокументированная, чем десктоп либы, да и информации на стековерфлоу побольше будет, а для веба особо знать ничего не надо, ты же для собеса готовишься, поэтому протоколы, бд и прочее тебе и не нужны, по сути будешь по гайдам делать обертку для своих функций
не пользуйся глобалами, порядок гарантирован, хз откуда взял тот чел про то что это не гарантированно
Описание кортежа прочитай в доках. Всё он вернёт упорядоченно. Это до 3.6 версии была "фича", что возвращаемый словарь был неупорядоченный, а не кортеж.
>UI-kit
Это набор готовых графических элементов в едином стиле. Скорее всего ты слышал про twitter bootstrap, но есть еще много других. Чем пользоваться не подскажу, я в них не разбираюсь. Сам использую vuetify, потому как фронт на vuejs, мне норм.
В дебаг моде посмотри значение step, хули гадать
НУ НАПИСАНА ЖЕ:
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;
>Обдиралово натуральное
Ну так нужно выгружать список проксей постоянно из разных источников и проверять их актуальность, хули ты хотел?
например спокойно копирую из блокнота, что угодно и вставляю. Все работает без ошибок.
В итоге хочется видеть, что-то похожее на replit.com Делишься ссылкой. По ссылке сразу запускается программа.
На иврите балакает жид. Ничего не ясно.
50к первый месяц, мск, для 19 лет просто великолепно, еще и удаленка, постараюсь с учебой совмещать. На проекте вроде сейчас фласк, алхимия и ребит используются, хотя я больше по джанге, думаю разберусь
Спасибо :3
Ну посмотри на стандартные базовые типы вроде листа-дикта-стринга.
Ты просто и элегантно пользуешься ими как объектами. А теперь представь это со свом в три раза проще.
Просто посмотри на библиотеки которые используешь и поймешь что все программирование на питоне по большей части это ооп, типа метод гет у сессии, метод джоин у строк, гет у словарей и т.д и даже когда ты принтишь вызывается метод объекта __str__
Лучше вкатывайся в ооп как можно скорее, чтобы потом говна не пожрать, как я. 5 лет писал на сикуле процедуры и функции, а как в сисярп и питухон залез, так до сих пор ебусь с классами, конструкторами и методами.
Есть сторонняя система, обеспечивающая кусок бизнес процессов. Она интегрирована с другими приложениями предприятия через самописный рест апи. И апи и другие приложения написаны на питоне. Вопрос: какие есть лучшие практики, для того чтобы формализовать структуры данных, которыми апи общается со своими потребителями?
Пока что я пришел к отдельному пакету, в котором эти структуры описаны как frozen dataclass. То есть апи из этого пакета взял датакласс, инициализировал и бросил в сериалайзер, консьюмер апи взял ответ апи, кинул его в конструктор датакласса и гарантированно не будет ошибок.
Проблема в том, что теперь нужно поддерживать и деплоить еще один пакет.
Как можно сделать проще?
Никак, по сути у тебя есть SDK для апи написано. Можно заебаться с каким нибудь универсальным протоколом типа протобафа или любого другого с кодогенерацией, что бы описывать все в одном файле, но это тоже такое себе.
Ок, спасибо.
Если допустим мне надо один единственый запрос отправить если смысл корячить для этого sqlalchemy? А если два? Где эта граница, когда уже надо имплементировать?
Не ясен хуй, проще пиздык-хуяк-и_в_продакшен. Но как правильно?
Меня не обоссут за то что я для одного запросы алхимию тащу?
Нужно учитывать, насколько сильно проект будет изменяться в будущем, чтобы те, кто будет его дальше писать, не охуели.
>Меня не обоссут за то что я для одного запросы алхимию тащу
Менеджерам и прочим кабанчикам все равно, лишь бы работало, остальным наверное даже лучше, придется разбирать говнокод только на питоне.
Запиши его в файлик и оттудова бери
Разрозненно если только 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(). Дохрена изменений в каждом выпуске, уже заебали если честно. Девы какие-то ебанутые.
Peewee легковеснее, если не нужна асинхронка. Да и синтаксис там получше. Алхимия в бенчах везде на дне.
Pydantic
>в бенчах
К реальной жизни бенчмарки отношения не имеют. Если профилировать среднестатистическое приложение, то 90% времени там уйдет не на орм, а на системный ввод-вывод, так что можно поначалу не ломать голову над выбором. Ну а если ты уверен, что у тебя сразу будет хайлоад, то там уже будет другая архитектура приложения, заточенная на масштабирование.
Как-то читал статью каких-то чехов, которые взяли затестили веб-фреймворки питона не в вакууме, а в обычных условиях, с обращениями к бд, и вышло что супер-йоба-быстрый фастапи выдал ~20 рпс, а медленный устаревший джанго - где-то 15. Экономия на спичках.
Пустой лист создается при определении, а не при каждом вызове функции. После любых модификаций он уже не будет пустым.
> лист создается при определении, а не при каждом вызове функции
А почему это именно так работает? Я понимаю, что это как-то связано с изменяемостью/неизменяемостью типа, но все равно не могу логику уловить.
А какие еще неочевидные вещи знаете, которые любят на собесах спрашивать?
Области видимости
> Я понимаю, что это как-то связано с изменяемостью/неизменяемостью типа, но все равно не могу логику уловить.
Просто мутируемый тип можно собственно смутировать, а немутируемый ты просто заменишь в текущей области видимости на время вызова функции.
Почему определяется только раз, а не на каждом вызове - хуй знает.
Если нужен оракл, то бери Алхимию, в чем проблема? Оракл уже другая нагрузка. PG, MySQL для дешмана, тут peewee зайдет. Если база дешман, значит и нагрузок таких нет
Асинхронка не про скорость, а про отказ от task managers.
FastAPI надо уметь запускать, когда Джанго хуяк хуяк и а продакшен с оверхедом.
Gunicorn uvicorn workers нужны и быстрый uvloop, видел бенч такой именно и там Джанго дали пососать.
Алсо, ещё выкатывают tortoise ORM, тоже охуенная тема, но версия там 0.17.* ещё 2 года до готового релиза.
Многопоточность это и есть параллельное программирование?
Чем отличается асиннхронность от многопточности? Стабильностью?
И где это можно заюзать, это все про веб? Или питон может и десктоп-моб?
И если дрочить джангу-фласк, там все это есть? или надо дрочить aiotop?
{
"a": "1",
"b": "1",
"c": {
{
"c11":"3",
"c12":"4"
}
}
}
>Асинхронка не про скорость, а про отказ от task managers.
Нет, менеджить таски ты спокойно и в питонячьем asyncio может, и вообще суть не про менеджмент, оно и в ГОвяших гринтредах есть, а про конкурентную многозадачность в рамках одного системного треда.
Аноны, раз уж так пошло, я видимо выбрал хуевый курс, где толком не поясняется значимость классов.
Я прошел его, на вопросы ответил, как их билдить, инит-хуит знаю, но как это в общую программу записать, и главное зачем не могу уловить.
Есть ли какой-то адекватный источник, желательно объемный, типа книги по ООП и классам, их методам, функциям, коллам, а то я пытаюсь монстрячить какую-то херню и понимаю что он меант ту би с классами, а не просто в линию с деревьями иф елиф ваил.
Классы это просто структуры данных с забиндеными на них методами. Представь, что у тебя есть словарик с данными, с которым ты часто юзаешь определенную функцию. Для удобства работы с ними ты объединяешь их в одну модель.
Да это я могу и вики прочитать и в мануале.
Мне нужно всякую логику их использования, как вызывать методы(?) класса дальше в программе и почему я не могу просто понаписать десятки функций
Ну например, сделал ты запрос через requests или aiohttp и тебе пришел экземпляр класса Response у которого есть готовые методы, а внутри него лежат определенные данные. Если писать все на функциях то тебе нужно помнить для какого именно класса оно предназначается и импортировать их при этом не проебав перезапись имен потому что названия действий могут быть одинаковы в разных контекстах. Еще классы дают доступ к ООП, когда ты можешь четко определить интерфейс хотя в питоне можно так и для функций обычных сделать и отнаследовать сам класс для его модификации.
Потому что когда у тебя в программе внезапно появятся сущности 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); Занимаясь бесполезной хуетой.
Однажды ты придешь к тому, что все это надо как-то организовать, чтобы иметь удобный способ структурировать код, и внезапно придешь к тому или иному виду ООП.
Когда же ты откроешь для себя, что определенные сущности могут иметь одинаковое или отчасти похожее поведение и откроешь для себя композицию или наследование, то вообще ахуеешь.
>Чем отличается асиннхронность от многопточности? Стабильностью?
Ну ёбана смари. Вот есть у тебя шлюха, которую надо повыаебать. У неё три дырки, а хуй у тебя только один. Многопоточность, это когда ты как ебанутый поочереди вставляешь в каждую дырку. А асинхолнность, это когода говоришь, что я тебя буду ебать две секунды в пизду, а потом две в сраку и тд.
Это невалидный жсон. Должен быть ключ, тогда добавляешь ключ со значением. Если нет ключа, то это массив с квадратными скобками, добавляешь как в список.
А где это можно применить? Не для написания же скриптов это надо. Для веба? В джанге и фласке есть такая реализация асиннхронности? Или это только про торнадо? Или только для десктопа?
Спасибо. Еще порылся на стаковервлоу, вроде работает
В вебе, в sql. Когда отправил запрос и пока ждёшь ответа, не сидишь мнёшь вялого, а посылаешь ещё запросов, пока тебе ответят.
Я подразумевал Django+Celery
Сап, анонсы, а как с помощью скрипта на пистоне узнать версию pip, например?
Типа, ну вот пишу я print('pip - v'), но ничего не происходит. Как это делается? Как запустить через пайтон команды как для консоли? Например, скрипт, скачивающий какие-то пакеты?
За день?
Зависит от сайта, где то одного запроса с извлечением тегов хватит, а где-то аутизм с селениумом с обязательным логином, гуглокапчей и прочим говном
А что, есть что-то, что может селениум, чего не может бутифулсоап?
Как только ты захочешь парсить нормальный сайт, там будет защита от таких умников, чекающая, заходишь ли ты с браузера, для чего нужен силениум. Ещё более солидные сайты и с силениумом особо не попарсишь, марин трафик я пытался как-то парсить, так там такая защита анальная, что пришлось забить на это дело. Но васянский сайт без проблем спарсишь и с супом, да.
Любые жс подгрузки, суп умеет работать только если тебе сразу по запросу выдают хтмл с нужной инфой.
В 90% для всяких жс-защит от парсинга, остальное всякие сверханальные рендеры на клиенте.
Прочитай для начала "Совершенный код".
Потом позакапывайся в туториалы по языку на официальном сайте, разберись досконально, как работает язык, на котором ты пишешь.
Потом почитай Clean Architecture, попробуй спроектировать какой нибудь сервис с т.з. чистой архитектуры. Когда станет получаться, можешь считать, что ты уже на правильном пути. Плюс, ты должен стараться писать код на работе так, чтобы к тебе было меньше претензий со стороны qa.
Ну и наконец, алгоритмы тоже надо по чуть-чуть прокачивать. Попробуй задачки на литкоде порешать.
Ночью все-таки взялся за этот сайт. Вроде серьезная контора, продают свое ПО и довольно недешево, но все данные которые мне нужны лежат в открытом доступе на сайте. Ограничение на запросы с одного айпи есть, но если зарегаться и оплатить подписку за 100500 рублей то ограничение частично снимают. Я уже хотел было забить, но зарегистрировался (без оплаты) ради интереса, и сделал удивительное для себя открытие. У этих додов просто создает субдомен типа твое_имя.site.ru а там таких субдоменов дохуя естественно, все ищутся в любом сервисе поиска поддоменов. Я думал сначала подставлять те, что живые, у которых еще лимит не кончился, но потом нашел вообще охуительный субдомен API.site.ru на запросы к которому вообще нет никаких ограничений. Короче я начал писать на бутифулсоп, надеюсь получится.
и что они ему сделают? Думаешь из конторы рога и залупы, его вычаслят по ип и набьют ебальник?
Спасибо, схоронил
У тебя обычный def, а должен быть async def. Странно, что тебе IDE об этом не орет.
>совершенный код
Более мерзкой книги по кодингу я не видел, автор льет воду в виде мотивационное залупы 90% текста, все полезные идеи умещаются несколько статей.
Он прост обосновывает, что не с потолка взял.
"У функций должны быть понятные имена, это подтверждает внутреннее исследование в компании Zaloopa Inc. в 1989 году, где после внедрения человекочитаемых имен число самоубийств программистов сократилось на 6%".
А дядя Боб напишет то же самое, но с мотивацией "я на этом еще в 70-е года на pdp-11 погорел, так что верьте".
Не объединяй join'ом. Вставляй в f-string
Так больше на джаву похоже. Как будто энтерпрайз.
len для стандартных типов берется из отдельной переменной внутри сишки, для них всегда О(1)
1. Алгоритм работает.
2. Алгоритм работает недостаточно быстро.
3. Алгоритм исследован профайлером и установлено бутылочное горлышко.
Если ты не на пункте три, тебя не должно ебать, насколько быстро работает len в питоне.
Брутфорс
Разделяй и властвуй
Динамическое програмирование
Жадный алгоритм
Поиск с возратом, аля бектрекинг
Локальный поиск
Трансформируй и властвуй.
Есть еще что-нибудь?
При сложении строк с помощью "+", при каждом сложении будет создаваться промежуточная строка, например, выражение "собака"+" "+"грызет"+" "+"кость" создаст целых четыре строки: "собака ", "собака грызет", "собака грызет ", "собака грызет кость".
А " ".join(["собака", "грызет", "кость"]) берет все строки, что ему дают, и сразу выделит необходимый размер памяти и создаст новою строку только один раз, сразу создаст "собака грызет кость".
А какой из этих вариантов легче читается? Покажи большой проект, где джойнами склеивают строки.
722x456, 0:37
Он заставляет их пороться в некотором роде?
>Если ты не на пункте три, тебя не должно ебать, насколько быстро работает len в питоне.
Это ты не совсем прав, тебя должно волновать, какая сложность у какой из операций. Например если сложность O(N), то это как бы очень нехорошо.
Вот скажем как тест на вхождение в список vs тест на вхождение в множество или как ключ в словарь.
В случае len() всё просто, уже ответил анон, работает за O(1). Поэтому заводить прочие переменные не нужно.
Через сигналы
Извините, я совсем не опытный, но мне кажется, что из очереди сначала считывают, а потом узнают все параметры...
Ясное дело что не на сухую продолжил. Но рили, вот стали снимать очень ясно, структурировано. Видимо сами научились. Или я стал старше-умней. Осталось дело за малым, просто найти работу) погромистом. Но это самое простое же.
Блокировать save если created_at старше недели?
>Но самое интересное, что норм видосы, наши и бурж стали снимать только щас, причем так понятно, что я ваще все понимаю о чем пиздят. Даже про ооп.
А можно примеры видосов?
Мимо вкатывальщик
Кстати, пиши python 2021 или также только ооп. И смотри все подряд. Я так и делаю. По ооп дохуя уже просмотрел, становится ясно уже. И на кодворзе по ооп каты щелкал. Уже шарю за поля, методы, инстансы и тд и тп.
По самому питону можно смотреть все что за час, далее, ооп. Еще можно мнопоточность и асиннхронсть смотреть. Про джангу также кстати, год только писать 2021 и все. Там выведет куда надо.
Ну вот например https://www.youtube.com/watch?v=-pEs-Bss8Wc&t=2223s индус норм поясняет за ооп. Все ясно четко и понятно.
1. Много ли вы знали(прочитали там книг по Python, алгоритмам + изучали годные курсы + решали задачки каждый день), когда приходили устраиваться на работу программистом ?
2. Могли ли вы применить Python для решения проблем на ПК/в реале ?
3. Можно ли делать норм софт на пк (исп. Python+...?; примеры есть?) ?
4. Можно ли делать норм(не тормознутые) приложения/игры(2d, 3d, online) для Android (исп. Python+...?; примеры есть?) ?
Или Android Development в основном для Java/Kotlin ?
5. Для Python актуальны пункты /3./4./ ?
Или есть пути разработки проще/правильней для 2021 ?
80000 строк в текстовом файле 2.
Нужно вычленить в файл 3 все полностью совпадающие у файлов 1 и 2 строки,
а в файл 4 совпадающие частично.
Частично - значит, что строка файла 1 имеет вид XXXX-YYYY-NN, а строка файла 2 имеет вид XXXX0-YYYY-ZZ или наоборот. Если найдены такие строки, то они должны быть идентифицированы как частично совпадающие и выгружены рядом друг с другом в файл 4.
Подскажите, может есть какие-то библиотеки, работающие с большим количеством строк? Мое решение работает для небольшого количества, но спотыкается на больших файлах, игнорируя некоторые дубликаты.
1) я начинал не с питона и питон не был основным языком.
2) да
3) Можно. Из того, чем пользуюсь я - торрент-система Deluge. Полноценный торрент клиент с gui, внешне по нему не скажешь, что он на питоне сделан.
5) ХЗ, но в целом мне кажется, что скорее нет, чем да. То есть питон плохо заточен под GUI приложения, под настольные приложения в целом. Для сервисных и серверных приложений да, для обработки данных да, но под десктоп бедновато как-то.
Вопрос в том, какие задачи тебе интересны. Хочешь разрабатывать игры и подобные вещи - ищи другую платформу. На питоне такие вещи стоит делать только если ты фанат питона.
Нудство по п.1. Программирование != знание языка. Тебе больше надо понимать технологии и уметь программировать. Особенно если речь не идёт о тяжёлых индустриальных языках вроде C++ STL, Java.
>Частично - значит, что строка файла 1 имеет вид XXXX-YYYY-NN, а строка файла 2 имеет вид XXXX0-YYYY-ZZ или наоборот.
Нужно подробнее. Самое главное тут формально описать функцию сравнения и может быть придумать какие-то инварианты, которые общие для двух строк (условно YYYY-NN часть строки).
Задача с идентичными строками проста. Ты хранишь строки полностью в множествах или как ключи в словарях и сравниваешь. Это будет работать быстро. Если у тебя всего 100 тысяч строк по 1000 символов, то расход памяти по современным меркам небольшой, чтобы думать об оптимизациях и сложных алгоритмах.
Вторая задача сложнее. Идея может быть такой, что ты хранишь какие-то хеш признаки, которые одинаковые для двух похожих строк. И у тебя хеш-таблица, по которой ты поиск производишь и уже точное сравнение для строк с этим признаком.
1 - залить файлы в сикульные таблицы, посчитать от строк хэш и заджонить, всё это можно и в пандасе сделать, объемы маленькие, в крайнем случае можно разбить на чанки
2 - нужны списки возможных масок частичного совпадения, дальше всё тоже самое, что 1, только при сравнении применять функцию, которая будет маски сравнивать
Добавлю ещё, если строки всегда имеют одинаковый вид и 2 разделителя, то можно разбить их на столбцы, для 2 случая так даже быстрее будет
Из каждой строчки берешь эти самые XXXX-YYYY и пихаешь в словарь ключем, внутри список с полным значениями.
Потом обрабатываешь проверяемый файл так же, если ли в словаре, и есть ли полное значение, соответственно частичное и полное совпадение.
Первая задача изящно решается через метод intersection() типа данных set, а вторую я отказываюсь решать, пока она нормально не поставлена.
>>2001736
>>2001741
>>2001744
Всем спасибо за наводки. Уже примерно набросал что-то близкое к решению.
Но еще вопрос такой: изначально строк было 500000, после выравнивания регистра и new_list = [elem for elem, _ in groupby(orig_list)] осталось всего 80000 строк. Насколько этому решению можно доверять? Не могло оно удалить лишнего?
Тфу, забыл пояснить, что изначально хотел оставить только уникальные значения в файлах 1 и 2 для дальнейшего сравнения, тк. строки в них тоже дублировались.
помогити, я не помню, зачем это написал
попробуй if else
Думаю, когда нужно составить строку из нескольких переменных, лучше использовать что-то вроде f-strings, а там где прям список строк, причем, возможно, генерируемый в ходе исполнения программы, то там, кончено, лучше join.
Что касается проектов, можем взять любой крупный питоновский проект на гитхабе, например django, flask, sphinx, tensorflow, sqlalchemy, или еще какой-нибудь, и поискать там склеивание строк джоином, там их достаточно много.
Вообще, это такая рекомендация есть, для склеивания большого количества строк предпочитать джоин.
https://wiki.python.org/moin/PythonSpeed/PerformanceTips#String_Concatenation
Можешь брать целые куски кода и копировать если совсем не понимаешь, главное либо запомнить принцип, либо разобраться потом почему и как, чтобы через время ты мог не подглядывать ни в синтаксис, ни в решения(я первые пол года постоянно сидел с вкладками с методами словарей и списков, когда скопировал 100 раз .append() я запомнил)
Но в овносном их делят на линейные, ветвление и циклические. Я так понимаю по логике. И по способу решения,
брутфорс
разделение на подзадачи
динамическое программирование, типо кэширование
жадные алги
бектрекинг
локальный поиск
и трансформация.
Помимо этого что еще нужно знать?
И такой вопрос. Где-то читал про основные понятия, пермутация... трататация и еще что-то. Это к чему относится? Чую что тоже важно.
Генератор собак
Напиши программу для придумывания задач.
>Помимо этого что еще нужно знать?
Ты уже спрашивал. Тебе в первую очередь надо понимать сами алгоритмы, а не пытаться их классификации придумывать.
Я вот не понимаю, что это такое:
>бектрекинг
>локальный поиск
>и трансформация.
Это какая-то твоя классификация. И не понимаю, зачем мне вообще уметь классифицировать по каким-то неведомым классификациям.
Ты можешь придумать и реализовать алгоритм для конкретных задач? Хорошо. Не можешь? Плохо. Причём алгоритмы это слишком широкая область, чтобы в такие классификации их загонять.
Ты реально какой-то хернёй занимаешься.
>понятия, пермутация
pertumation = перестановка
Ты уж или по английски пиши, или по русски, а этого треша не надо. И ХЗ, как это классифицировать, и ХЗ, зачем это вообще классифицировать.
Алгоритмы о том, как получить все возможные перестановки, например. Кстати там есть разные варианты.
Добра.
Попробуй fastapi
Нахуй ты их купил? Я понимаю еще лутца( и то идиотизм), все книги надо пролистывать(конкретно лутца,т.к. там душная книга но много инфы, увидел то что не знаешь гуглишь для лучшего объяснения), единственную которую можно читануть если 0 - укус питона.
Допустим, у меня есть файл example1.py в котором я выписываю определение функции с еще кое-какими данными и возвращаю ее результат (return result), в result лежит список.
Далее, я хочу задействовать этот список из result в функции из другого файла - example2.py. Например хочу превратить этот result в стрингу и конкатенировать ее с чем-нибудь еще или сделать из нее сет и так далее.
from example1 import func1
def funktsia2():
И вот тут я завис.
Это норма, это развитие ютуба и общего поля подачи информации, твои деды были вынуждены читать очень нудные книги, ковырять платы своими крабулями, писать какую-то мутнейшую залупу. Потом был период когда задрот-индус просто 2 часа кодил с невероятной скоростью называя это мануалом. А теперь найти полноценные обучающие видео, с пошаговостью, с источниками, с конкретными примерами применения, с объяснением математики если она используется - очень просто и этого добра навалом. Сейчас курсы гарвардов и МИТов уже очень хорошо сделаны(и бесплатны, только если хочешь диплом бумажный купить надо платить), есть всякие сайты типа бриллианс для совсем уж детей(но неплохо по ним изучать косвенную хуйню типа логики, начальной робототехники или инженерии), есть кодеварс где ты натурально качаешь своего эльфа 80го уровня и пиздишься с другими эльфами качая его за очки полученные решением микрозаданий на своем языке, и можно посмотреть у представителей какого языка самый длинный хуй, клан джавы накидал клану сиплюсов ололо, а завтра все поменяется, мы будем отомщены.
Я не представляю зачем современные люди вообще покупают курсы за деньги, это просто ебланство(ну и лень, и отмазы, и тупость, и непонимание принципов обучения и что нужно работодателю)
Есть пикрил. Нужно подставлять значения из списка без комы в конце. Как эту ебучую кому убрать?
В списке - куча datetime по которым нужно отдельно выгружать данные, потому и цикл.
да, если сможешь сперва адаптировать чужой код то это нормально.
потом придрочишся и уже сможешь писать свой.
а так в программировании юзают чужой код постоянно.
Собственно почему один из главных скиллов кодера это писать понятный другим код - потому что код пишут один раз, а читают дохуя раз и дохуя людей.
И есть ли в этом вопросе отличия между WSGI и ASGI серверами/фреймворками?
Эрик Мэтиз — то, что нужно, хорошая книжка. А вообще, раз уж у тебя 2 книги, то обе и читай, в чём проблема-то?
for thread in threads:
....thread.start()
for thread in threads:
....thread.join()
Тралов получается в районе 30 каждый просто делает апи звонок на статус.
Через ThreadPoolExecutor красиивее, а вообще лучше учи asyncio
Ну для того, кто даже логику первого порядка освоить не смог, конечно странная
Gunicorn создает указанное количество дубликатов при запуске и они работают вместе сразу. Дальше запросы балансируются между ними nginx'ом, например. asgi создает на запрос отдельную асинхронную корутину
Как-то так. А что у тебя не работает?
>обязательно ли это ебошить всегда через дикшинари
Если пользуешься встроенным json декодером из модуля requests, то да - это то, что он возвращает. Хотя, строго говоря, он может вернуть список словарей, а не один словарь. Попробуй посмотреть, например, на результат requests.get('https://api.github.com/events').json()
Посмотри на ютубе видосики про SOLID на любом языке. Мне помогает.
А можешь ссылку на какой-нибудь проект на гитхабе скинуть? Чтобы там интерфейсы были.
Круто, спасибо.
Это копия, сохраненная 4 июня 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.