> но аноны бугуртят Аноны такие аноны. > что это говно мамонта Это не так, уверяю.
Платиновые вопросы: А стоит ли читать Лутца, том номер N? - Мнения в треде разделены. Кто-то за(очень неплохая база даётся), кто-то против(слишком много воды и объём книг убивает всё рвение). В общем - решать тебе, книга вредна не будет, то ты можешь её просто не дочитать и забросить.
А стоит ли читать %книга_нейм%, если там питон версии 2.х? - Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х.
А стоит ли читать %книга_нейм%, если там питон версии 3.х, но <3.6? - Да стоит, если альтернатив свежее нет, данная книга даст базу, с помощью которой ты сможешь дальше продолжить вкат и актуализацию своих знаний.
А как учить джангу? Нахожу только книги по джанге 1.х - У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей.
Как-то так. Ещё куча вопросов с пометкой платина, но ебать мой хуй, на них из раза в раз отвечают.
>>1451745 Дополню. В большинстве не по теме ЧАВО, а от себя
> в ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать Вот, пожалуйста, та же самая программа, но переработанная под язык Python http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
> не умею читать/воспринимать литературу Дальше с такими качествами будет довольно сложно, но есть множество интерактивных курсов / лекций и тд Гугли: coursera, stepik, metanit, Яндекс.ПрактикумРЯЯЯЯЯ, ОНИ ПЛАТНЫЕ (Ответ: сертификат тебе не нужен, изучай бесплатную часть)
> уже много раз начинал, но забрасывал, а теперь не могу читать книги с нуля, куда двигаться? Пробегись по этому списку https://tproger.ru/curriculum/python-how-to-learn-2/, изучи то, чего не знаешь и то, что осталось непонятным, потом начинай делать проекты попутно залезая в гугл. Также можешь полистать книгу intermediate python, она есть на русском
> знаю питон от корки до корки, что делать дальше? Выбирать web, ML, DS, ИБ, изучать и делать пет-проекты
Правда на английском языке. Чётко и красиво изложено, с упором на специфику питона. Документация обновляется, актуальная, но всегда можно переключиться на старые версии.
Для тех, кто более-менее умеет программировать, я бы рекомендовал именно с официальной документации начать, с этого раздела.
>>1451799 Случайно не знаешь, там есть возможность переключения языка Это кто-то специально отобранный переводит? Потому что если нет, то почему бы рядовому анону не перевести всю доку на русский, там нет ничего сложного, даже я со своим intermediate справлюсь
Блять, что я делаю не так? Памагити. Центось7. Поставил python36 + pip При установке пакета, пип предложил обновиться до версии 19х (или 16х, не помню). Обновил пип через сам пип и он почему-то проебался. pip -V pip3 -V нихуя не отдают.
>>1451814 Качественный перевод довольно сложно делать, и этим надо постоянно заниматься, актуализировать по мере обновления англоязычного оригинала. Мне кажется, что сейчас меньше переводят серьёзной документации, чем раньше, всем надоело просто. Очень большой объём, много времени надо, за это не платят.
Я уже привык читать на английском языке, хотя иногда хочется и по-русски что-нибудь почитать. Но чтобы это был нормальный перевод, а не чуть лучше гугл-переводчика.
>>1451920 Да, так и сделал. Правда, теперь у меня почему-то две папки с пиповскими модулями >/usr/local/lib/python3.6/site-packages/ >/usr/lib/python3.6/site-packages/ И при установки через пип, он лепит модуль в /usr/lib/python3.6/site-packages/ А питон ищет модули в /usr/local/lib/python3.6/site-packages/
>>1451919 Насчет гугл переводчика прямо в точку написал. Только что редактировал статьи на MDN'е, потому что глаза режет что-то вроде "веб-обзорщик"
А насчет либы, то я уже говорил, что там нет чего-то прям сложного в плане английского, за вечер можно пару страниц перевести. Тот же самый плюс в ЧСВ и помощь ньюфагам в освоении технологии
Вопрос не совсем по питону. Может кто знает очень годные задания, данные вместе с решениями в формате текста (не интерактивная залупа вроде кодекадеми и прочего)? И при этом не привязанное к языку. Читаю байт оф питон, а в ней задачек нет.
>>1451922 ХЗ, что-то как-то не так встало. Я в эти дебри никогда не лез, работало всегда без проблем.
ПИП должен лепить модули в /usr/lib/python3.X/ У меня там все, в том числе и штатные системные, я правда глобально сейчас почти не ставлю, ставлю локально в virtualenv.
Каталога /usr/lib/python3.6/site-packages вообще нет, там dist-packages есть (у меня на разных убунтах)
>>1451937 Попробуй codewars (там есть возможность просматривать чужие решения с комментариями и пояснениями), задания разделены по уровням сложности и все такое
Немного не по теме, но есть вопрос. Я +-разобрался в питоне(на нужном мне уровне) и возник вопрос, что еще изучить, чтобы иметь хорошую базу? Как я понял, то для веба можно взять js, а потом html+css, чтобы можно было полностью понимать как сделать и мочь сделать сайт. Или же это бесполезно и лучше взять C/C++?
>>1452064 Вообще главное не язык, а технологии, технологии программирования и построения приложений.
Если ты владеешь ООП, параллельным программированием, асинхронным, программированием БД, сетей, и т.п. на одном языке, то освоишь и на другом, а вот с самими методами и практиками надо долго разбираться и осмысливать их.
На чём бы веб-приложения хочешь делать и какого рода?
Для веб, база: 1) HTML+CSS, даже понимать и что-то уметь необходимо, даже если ты на бэке специализируешься. 2) JS аналогично, но JS сам по себе большая тема. Сильно зависит от того, что бы будешь реализовывать. От этого зависит и выбор бэка. Но как минимум надо понимать, как работают приложения на JS. 3) Тебе необходимо понимать, как работает веб, HTTP протокол. Как устроены запросы GET/POST, как данные туда-сюда пересываются, куки, современные технологии ajax и вебсокетов. 4) Вся база по построению сайтов, работа со всякими сессиями во фреймворках, работа с разными видами БД и т.п.
То есть надо понимать, как устроен data flow для каждого типа сайтов, что в какой момент куда пересылается, откуда берутся данные и как преобразуются и т.п.
Это какая-то общая база для всего веб программирования.
Ты просто подумай со стороны задачи. Есть задача полезная, которую надо сделать, которая работает через веб. И подумай, как именно её делать, как именно эта задача работает.
>>1452083 Окей, спасибо большое. В таком случае попробую разобраться в них и попробую свой сайт запилить. Сейчас как раз разбираюсь с БД и как работать с ajax
Пытаюсь в проекте подключить Pool из multiprocessing при попытки вызвать pool.map(self.method,list) выдает ошибку, map() takes from to positional arguments but were given. Сам кусок кода находится в методе класса. Как можно решить проблемму?
>>1452268 Нет, не одинаковые. В первом случае у тебя в текущем пространстве имён появляется имя tkinter. Дальше - tkinter.zalupa(). Во втором - появляются все экспортируемые имена из модуля tkinter. Дальше - просто zalupa().
>>1452268 Разные. В первом ты просто подключаешь модуль, после чего можешь использовать, наприме tkinter.Button() но явно указываешь модуль при вызове функций оттуда.
Во втором случае ты импортируешь всё из модуля в основное пространство имён, и уже используешь Button() без указания модуля. Могут быть конфликты имён из-за этого и не очень понятно, откуда какая функция или класс берётся.
Шалом, братья Я уже не знаю, куда обратиться с этой проблемой. Делаю небольшого бота и столкнулся с какой-то непонятной хуйней. С некоторой вероятностью программа зависает без сообщения об ошибке, во время выполнения следующего 1) Запрашиваю к серверу через http.client.HTTPSConnection Если возникает ошибка: 2) Ловлю исключение 3) Через print вывожу в консоль текущее время и исключение, и отправляю себе вк то же самое лишь с той разницей, что для вк получается новое время
В 22:59 обнаружил, что программа не работает, нажал ctrl-с, программа вместо того, что вырубиться, печатает пойманное исключение socket.timeout: the read operation timed out и время - 10:12, отправляет мне исключение вк со временем 22:59 и продолжает работать как ни в чем не бывало
>>1453045 У тебя проблема с сокетом. Ты установил соединение, но потом оно молча обрывается и ты об этом не знаешь. Твой сокет слушает, то ему никто ничего не высывает и не собирается.
Тебе необходимо контролировать, что сокет жив, либо таймауты как-нибудь настроить, несколько разных способов для этого есть.
>>1451619 (OP) Ку. Когда-то давно юзал питон для парсинга сайтов, язык понравился. Сейчас хочу немного поботоводить в онлине-гамесах типа wow и poe. Насколько хорошо питон подходит для данных задач? Имеет смысл пытаться юзать его в таких целях, или не выёбываться и задрочить какую-нибудь сишку?
>>1453154 По идее это таймаут на коннект. Но у тебя может быть ситуация, когда соединение установлено, а потом молча оборвалось. Это довольно штатная ситуация и её надо отлавливать.
Есть разные способы, или надо выставлять KEEP ALIVE на сокет, это почти не задокументированная магия, или жёстко контролировать таймауты через сигналы, например, это если у тебя обычная синхронная задача. Для этого надо разобраться в логике твоей задачи, когда данные уходят, приходят и т.п., как долго ты можешь без данных быть и т.п.
Профессиональные змеегонятили, на связи вкатившийся два года назад. Есть что почитать по архитектуре? А то делаю сервисы на работе, но не уверен, что делаю это правильно, хочется посмотреть на эталонную реализацию, желательно учитывающая специфику языка.
>>1453330 На позицию мидла взяли через год, даже в проебалтику релокейтнули (я писал тут давно об этом), на старте было 30к в миллионике, сейчас 2200 евро.
>>1453332 А во сколько годгов вкатывался? И сколько по времени уделял на обучение? Сам уже 7 лет подряд начинаю каждую весну учить питон, уже наизусть знаю вводные главы, могу простенькие программы писать, но стоит только на следующий уровень переходить так что-нибудь случается в жизни. А сейчас уже серьезно к этому вопросу подошел, ибо хочу кое-какой проект замутить веселья ради. Но устроиться погромистом уже возраст свой не позволит. И не надо мне тут что и в 45 берут на джуна, это все сказки.
>>1453185 Можешь попробовать, все равно много времени не займет (+- 3 вечера, если шаришь), если будет долго "думать", то попробуй отдельные части, которые больше всего обрабатываются переписать на Cython'е.
>>1453350 Вкотился в 20, неспешно читал книжки по питону с 11 класса до 2 курса (2 штуки, лутц и флюент пайтон), потом приперло найти работу и за месяц прочитал django by example делая примеры оттуда. Уделял по часу не каждый день, потом по 1-2 регулярно в самом конце.
>>1453350 Недавно читал пост на хабре, как чувак в Германии в 40 в java-программисты вкатился, до этого коммерческим программированием не занимаясь. Но он реально серьёзно к обучению подходил, мало кто на такое способен, и всё-таки как-то с ИТ был связан.
Есть один list. Прогнав его через цикл получаю 2 целых числа(индекс элементов из этого листа) которые хочу использовать как индексы, чтобы потом выбрать часть этого-же листа. Выглядит так примерно. Но получаю ошибку. Хелп.
>>1451619 (OP) Есть синхронная программа, в которой происходит много блокировок из-за подгрузки файлов через FTP. Как наиболее оперативно переписать ее через async/await? С асинхронками раньше дела не имел, где подскажут за годный рефакторинг прог?
Позволяет менять дефолтную папку загрузки у вебдрайвера при создании объекта. Мне нужно проделывать ту же самую процедуру многократно для уже созданного. То есть, что-то вроде такого:
>>1453482 А зачем тебе это надо, какую задачу ты решаешь? Одно дело сериализация, другое дело расход памяти, ты должен учитывать, что в объект не хранится целиком, в нём ссылки на другие объекты и т.п.
>>1453476 По-хорошему надо сначала разобраться с асинхронкой, как это в питоне работает. На первом этапе не без магии. Иначе ты не сможешь мало-мальски нормально такую задачу реализовать.
Твоя задача непростая. Тебе надо или использовать асинхронные библиотеки для работы с FTP, я с ними тебе ничего не подскажу, никогда не делал ничего с ftp, или запускать синхронный блокирующий код в отдельном треде, это поддерживается asyncio. Но попутно тебе надо разобраться с тем, как делать асинхронные программы.
Возможно тебе проще не переводить на asyncio, а запустить эти операции в отдельных тредах.
Сап, закончил делать тестовое, имплементация 2-х простых функций пайтон - проходной тест, но не главный инструмент . И для представления результатов необходимо завернуть это всё, предлагают на выбор либо CLI либо докер. Если у кого есть, помогите пожалуйста, дайте пожалуйста максимально подробный мануал как это делать и главное чтобы не упарываться очень.
>>1451922 Не стоит срать пипом в системные папки, делай все через --user хотя бы. А то что в глобальное окружение устанавливается - контролируется пакетным менеджером. Соответственно, обновив пип самим собой, а не центосквским пакетным менеджером, ты все сломал
Как ебнуть значение в dict через кучу ключей, если их еще не существует? Например my_dict[aaa][bbb][ccc][ddd] = val Как бы я знаю сигнатуру словаря: вложенные словари, но я не знаю имена ключей на втором, третьем уровне вложенности, поэтому не могу, например, определить сразу. defaultdict не особо помогает: можно задать только один уровень вложенности. По свей индусской сущности делаю лесенки, что с defaultdict, что на обычном dict. Типа: if my_dict.get(aaa, False): if my_dict.get(bbb, False): ... else: my_dict[aaa] = dict() и в else ветке такая же вложенность. Даже если в функцию с рекурсией запихну, все равно пиздец будет какой-то.
сап, парсултанг. Запрос верный, URL верный - это 100% почему может не работать? тот же самый URL в браузере выдает нужные данные Python 3.7.3 библиотека requests
>>1451619 (OP) Нужна помощь с примером из книги "Укус Питона". 13.1-13.2 там где задача с архивацией, для винды нужно установить штуку из GnuWin32 для того, чтобы можно было из CMD архивировать вот она http://gnuwin32.sourceforge.net/packages/zip.htm Но что-то нефига не получается. Как решить данную проблему, хелп плиз?
>>1453737 Ты можешь написать сам или использовать библиотеку какую-нибудь для работы по принципу xpath Пример либы, не использовал: https://pypi.org/project/dpath/
суть такая, что ты создаёшь пару функций: set_value(dict, path, value) get_value(dict, path, default_value) например set_value(my_dict, '/aaa/bbb/ccc/ddd', val) эта функция сама пройдёт по дереву и создаст необходимые подсловари, это неслжно реализовать.
Но есть и продвинутые решения с большим функционалом, смотри ссылку.
xpath - это аналогичный метод по обработке xml, поиску там данных. Он поддерживает и значительно более сложный условный поиск.
>>1453737 Ну можешь написать свою функцию для данного извращения. Но складывается впечатление, что тебе лучше выбрать другой контейнер для хранения своих данных. И вообще если подумать. У тебя структура подразумевает для данные лежат на нижнем уровне? Те my_dict[aaa][bbb][ccc][ddd] = val, но при этом в my_dict[aaa], my_dict[aaa][bbb] и тд это могут быть только словари? Если да, то не используй несколько ключей, а кортежи, например, не my_dict[aaa][bbb][ccc][ddd] = val, а my_dict(aaa,bbb,ccc,ddd) = val
Меня смущает в задаче 6-10, что каждый элемент списка выходит на новой строке, было бы приятнее чтобы числа шли после <...>there are numbers: <элементы массива через запятую>. Такая же ситуация в 6-9. Понимаю, что у меня такая конструкция, но как бы вы решили данную задачу?
>>1453670 Не могу найти ответ, по-этому снова прошу помощи: У меня 2 функции в скрипте одна выполняется без каких либо параметров типа foo(), для второй нужно задать 2 параметра типа bar(1, 15). Как мне в этом argparse настроить вывод скрипта так, чтобы при запуске скрипта я мог сам ввести: foo() либо bar() с любыми параметрами.
>>1454040 lines = file_object.read().splitlines() и никакого цикола или lines = [line.rstrip('\r\n') for line in file_object] # Можно просто .rstrip(), если на пробелы на концах похуй, или даже вообще .strip().
>>1454115 Минимальный фласк-проект в 3 строчки и 1 файл, джанго в 300 и 10, зато там гораздо меньше своего надо изобретать, все уже придумано и реализовано за тебя.
Аноны, как вы переживаете код-ревью? Сегодня был первый мой опыт(кода меня ревьюили). Желание разбить ебало мудаку зашкаливает. Одинарные кавычки нада, патамуша Ф-стринги плоха(нет, не из-за обратной совместимости) Коментов Нада па-минимуму
>>1454131 Знач смотри братан, советую две книги Ирвин искусство правильно мыслить Бочаров введение в логику Когда осилишь, будешь разъебывать этих лохов тупа по аргументам и фактам, хуй кто тебе скажет ПАТАМУШТА Я ТАК КОЗАЛ, но тут есть одно но, ты тоже должен будешь аргументированно обосновывать свои решения, а для этого нужны знания в предметной области.
>>1454131 > Аноны, как вы переживаете код-ревью? Объясняю, почему ревьювер мудак.
> Одинарные кавычки нада, патамуша Одинарные для технических строк, двойные для человекочитаемых. Если в строке есть какая-то кавычка - противоположные ей.
> Ф-стринги плоха Лолшто?
> Коментов Если описывают очевидное или если можно было вынести кусок кода в функцию с docstring-ом, то да, такого по минимуму.
Писали ли вы на работе собственные простые шаблонизаторы запросов/ORM и с какими проблемами сталкивались? sqlalchemy уже наелся (Почему это говно считают хорошим? Только потому что лучше не завезли?). Хочу сделать обертку над asyncpg в собственном проекте и подумал над тем, стоит ли вообще этим заниматься.
>>1454140 > тоже должен будешь аргументированно обосновывать свои решения Это понятно, но нечего противопоставить неаргументированному наезду. >>1454175 > Если описывают очевидное Угу, очевидно то пофиксил (уровня коменты на действия со стандартной либой). Но я люблю коментить и писать док-стринги к методам/функциям(соответственно кроме описания ещё и назначение переменных + примеры). > Одинарные для технических строк, двойные для человекочитаемых Вот честно, первый раз слышу. Мне как бы и не принципиально что ставить, но я уже привык к ". Проект новый, попенсорсный, но код-стайл есть. Правда он принимался без обсуждения, а, опять таки, "патамушта". >>1454178 Ни по чему. Ф-стринги это ок, по крайней мере для меня, форматирование с ними выглядит гораздо логичней и проще, даже если внутри её вставить какую-то операцию небольшую.
>>1454190 > Почему это говно считают хорошим? N тредов назад было обсуждение, пришли к выводу что алхимия немного говно с такой же документацией. Так же пришли к выводу что ДажнгоОРМ одна из лучших(правда скорость огорчает). Так же не стоит забывать про относительно новую орм - PonyORM. В ней куча ещё недостатков, но её пилят активно. Это по синхронным. С асинхронщиной всё хуже и скуднее. > стоит ли вообще этим заниматься Определённо стоит, как минимум для себя, а как максимум - твой взгляд на орм может кому-то понравиться и "зайти", будут юзать и благодарить.
Питонисты, подскажите, насколько сложно в питоне реализовать "улучшалку" разрешения изображения? Может, есть какие-то готовые библиотеки для таких задач?
>>1454174 Глянул минут 15 первую и ещё пару лекций в случайных местах.
Лекции не для начинающих программировать. В первой начинается с каких-то абстракций тяжеловатых, где-то ещё упор на непривычные термины, всякие тернарные операции и т.п.
Короче для тех, кто хоть немного умеет писать и в состоянии математические лекции слушать. Дальше может быть и содержательно, там какие-то техники программирования показаны, может много полезного есть, но это надо смотреть и вникать.
Как синхронно выполнить корутину внутри init при условии уже запущенного лупа? Во время запуска приложения должен произойти коннект к одному сервису, а клиент к нему асинхронный.
>>1454225 Подумал, что можно при запуске сделать корутину с инициализацией всего, дождаться ее исполнения, а потом приступить к обработке клиентских запросов, я правильно поступлю?
>>1454226 Не понял, что у тебя за init, откуда ты что вызываешь.
Если у тебя функция init синхронная, то ты не можешь из неё вызвать асинхронную функцию и дождаться результата. Ну кроме как совсем через жопу.
И ещё, корутина - это функция, которую можно запустить асинхронно, оформив её в задачу для эвентлупа. Задачу ты можешь оформить синхронно loop.create_task(my_coro(param1, param2)) либо asyncio.create_task(my_coro ....), но это для 3.7
После того, как ты сделаешь, твоя задача улетит в цикл и будет там обрабатываться. Единственная проблема, ты не сможешь дождаться её завершения.
>>1454229 У меня есть инициализация класса, в атрибуты класса нужно засунуть асинхронный клиент, который вызывается только через await и начинать последующую работу только после установки соединения. Думаю просто вынести установку соединения в отдельный асинхронный метод и вызывать его после инициализации класса.
>>1454238 Ты учти, что делать await ты можешь только внутри асинхронной функции или асинхронного, определённой через async def.
await нужен, если тебе надо получить какой-то результат от асинхронной функции, например объект с коннектом.
Надо как-то внимательнее твою задачу разбирать, в частности как клиента реализовывать. У тебя какой-то готовый функционал для этого, или сам пишешь? Если сам, то в asyncio поддерживается несколько разных способов, просто соединение, и реализации через классы Protocol. Возможно тебе надо именно свой протокол реализовать.
>>1454239 >Ты учти, что делать await ты можешь только внутри асинхронной функции или асинхронного, определённой через async def. Я знаю это, но видел примеры синхронного запуска через run_until_complete в синхронной функции.
>Надо как-то внимательнее твою задачу разбирать, в частности как клиента реализовывать. У тебя какой-то готовый функционал для этого, или сам пишешь? Если сам, то в asyncio поддерживается несколько разных способов, просто соединение, и реализации через классы Protocol. Возможно тебе надо именно свой протокол реализовать.
Просто соединение, есть готовая библиотека.
Первый вариант на пике был бы идеален, если бы инициализацию удалось бы провести в __init__, но он не работает.
>>1453737 Кажется, у тебя тут дерево, а ты используешь словари. Просто напиши соответствующий класс, да и все. Ну или реши - действительно ли тебе нужен такой уровень вложенности.
>>1454131 Либо тренируйся терпеть мудаков и выуживать только ценные замечания, либо ищи коллектив, в котором нет таких ьоксиков. Ну еще стоит разобраться в стиле кода компании и писать как все, потому что твой код потом поддерживать другим людям.
Хотя нападки на двойные кавычки и ф-стринги не понимаю.
>>1454291 Кстати, сам когда делал эти упражнения с зип архивами, то использовал архиватор которым пользовался. Попробуй так же сделать, во первых немного отойдешь в сторону от шаблона, плюс чтение сторонней документации и хоть какое-то разнообразие, что тоже плюс.
>>1454206 >Это понятно, но нечего противопоставить неаргументированному наезду. Есть. Скажи ему, что он пидор без аргументов, хули пасть открываешь? Пусть доказывает обратное и он пук среньк сделает и умрет.
>>1454174 Я смотрю сейчас, нравится. Не уверен насчёт результатов, но алгоритмы уровня квадратичных сортировок стали казаться хуйней на две строчки, а не чем-то сложным.
>>1454385 Бездумно копирую всякую хуйню из учебника в редактор, пытаюсь разобраться или не пытаюсь, пишу свой пример, лезу обратно в учебник читать текущую главу.
>>1454393 И вообще, осталось освоить json, тестирование, и дальше пойдут главы с проектами! Скоро очень скоро кровь польется морем я смогу говнячкать свои говнопроекты!
Если есть скрипт, который в своей работе использует данные, которые берет из текстового файла(там файл строк на 1000), то не будет ли более рационально просто забить эти жанные в сам скрипт? Желательно что б вы написали почему жа или нет
>>1454409 Нихуя я не ожидал, хотел заканчивать вообще - до этой части дошел порядком заебанный, уже нихуя не соображал думал, что за хуйня заместо кода, но хотелось таки разобраться перед тем как идти саморазвиваться в сериальчиках.
>>1454395 Хардкодить с точки зрения кодирования всегда дурной стиль. С точки зрения построения гибкого приложения программист должен думать о возможности настройки, адаптации и т.п., для этого константы должны быть вынесены в отдельное места, по-возможности вне кода.
Иногда может быть разумно обратное, когда ты не хочешь, чтобы данные менялись, у тебя, например, код жёстко завязан на какую-то логику данных, нужна защита без лишних проверок от исключительных ситуаций, что данные испорчены и т.п.
Но в целом всё-таки лучше максимально разделять логику и данные, нужно обоснование, чтобы это не делать.
>>1454246 Первый скорее неправильный. Это совершенно синхронный вариант программы, когда ты в своём полностью синхронном коде хочешь вызвать какой-то асинхронный код синхронным способом. Возможно именно это тебе и нужно, конечно, но не уверен.
Главный вопрос в том, что ты будешь делать со своим коннектом дальше. Если у тебя асинхронная библиотека, то и как минимум получение данных там будет асинхронным, скорее всего. Обработка этих данных должна быть выстроена соответственно.
Самым разумным выглядит второй вариант. При этом ты можешь вызов в одну строчку укоротить, сделать client = await MyClass().create_connect() надо только чтобы create_connect возвращал self
>>1454354 Никогда не копируй текст из книги (форума, статьи и проч.) копипастом. ВСЕГДА переписывай вручную. Серьёзно, анон. Заведи себе такую привычку. Это избавит тебе от МНОГИХ проблем в будущем.
>>1454591 Копипастнуть из док нормально для теста, вот когда тебе надо самый первый пример получить, чтобы запустить и посмотреть, что это работает. Надо, чтобы было что-то, что руками можно почувствовать, потрогать, поломать после этого.
Вот как поймёшь, уже потом полезно всё удалить и самому написать, причём не переписывая из доки, а по памяти, по своему пониманию, может быть заглядывая в доку. И даже свой код стоит не копипастить, а заново написать, на этапе обучения. Несколько раз так проделаешь, и потом лучше чувствовать и помнить всё будешь, легче будет.
>>1454414 >Нихуя я не ожидал, хотел заканчивать вообще - до этой части дошел порядком заебанный, уже нихуя не соображал А вот это зря. Не способен разобраться от усталости, так проспись и потом разберёшься, и совсем последнее в таком случае других вопросами долбить.
Тут недавно аноны упоминали какую-то книгу по джанго, не могу найти по поиску. Название то-ли джанго 2, то-ли джанго 2.0. Помню что один купил, а другой скачал ее. Был в книжном местном, ничего подобного не нашел по названию. Если кто знает, то скажите название и автора, а еще лучше файлик, если есть книги.
>>1454587 Так сначала код потирибонькать надо немного, потом уже выдумывать себе задачу и руками свою парашу говнякать, затем лезть обратно в учебник и дочитывать главу, после прочтения в конце главы задачки от автора решать или не решать, ведь я еще на первом этапе сам все сделол, ха!, тем более что в первом издании Эрика Мэттиса во всех примерах пробелы полностью проёбаны - нужно перелопачиать все копипасты с учебника
Здравствуйте, аноны. Решил начать изучать питон. Правда ли, что он очень простой и можно буквально за день набросать первый калькулятор? А еще, что там на рынке с программистами на питоне происходит?
>>1454941 если графический калькулятор то лучше джаваскрипт лол ну там правда не все так просто если брать серии операций, переполнения экрана, большие и маленькие числа и все такое
>>1454941 Ты вопрос задал в 3 ночи. Сейчас уже 3 дня.
Ты можешь просто взять, потратить день и сам понять, простой язык или не очень, можешь ли ты за день калькулятор сделать. Или тебе просто потрепаться хочется?
>>1454941 >А еще, что там на рынке с программистами на питоне происходит? Программистом ты станешь через несколько лет но на самом деле не станешь
>>1454948 Про калькулятор вообще образно было >>1455014 >Программистом ты станешь через несколько лет У меня пока есть такая возможность >но на самом деле не станешь С чего бы это?
Часто замечаю, что вкатывальщики постоянно повторяют все буква в букву по туториалу. Т.е. если написано print('супердлинная строка'), то они напишут полностью всю эту строку внутри принта и.т.д. Это кажется мне странным ибо всегда просто вбивал рандомные 3 символа ибо какая разница что он выведет, если главным является сам факт вывода
Я тут по IDLE прикололся, всякую мелочь даже удобнее показалось писать. И как-то потихоньку VSCode чаще чем Sublime стал запускать. Но тут наверное 9 из 10 используют Pycharm или я не прав?
Сап, двач, только начал вкатываться, учусь по курсу МФТИ. Начал делать простенькие задачки, дошёл до этой: Нарисуйте «бабочку» из окружностей. Используйте функцию, рисующую окружность. Похоже я совсем даун. Код прикрепил.
Сап. Анон, изучающий питон по Python Crash Course, снова в треде. И опять, как в первый раз, задачи из этой книги вводят в ступор. Я сомневаюсь в полной правильности моего решения, есть внутренне желание, что можно сделать лучше. Пока стараюсь не гуглить, а решать в соответствии с пройденным в книге материалом.
Посмотрите, пожалуйста, оцените своим профессиональным взглядом, что улучшили бы, изменили? При этом использовать я могу только минимальные средства. Показывал знакомому, он советовал использовать isdigit, но пока про это в книге ни слова.
Я нуб, совсем. Направьте, плес, мысль в правильную сторону. Мне нужно для лабыотсортировать список с помощью одного из видов сортировок, но не просто отсортировать, а так, чтобы элементы списка начинающиеся на определенный символ не попадали в общую сортировку. Алгоритм сортировки запилил самый простой - пузырьком. Идея была в том, чтобы из общего списка сделать второй список. Отсортировать каждый список, а затем соединить в один. Но как это сделать - не понимаю. Если делать срез, чтобы разбить общий список, то срез делается по элементу, а не первому символу элемента. Халп.
>>1455584 >>1455589 Кажется стало что то получаться: str = ['dd','aa','grob','pidor','porebrik','dvach'] temps = [] q = 0 for w in str: if w >= 'p': temps.append(w) q +=1 print(temps)
>>1455658 >enumerate >>1455658 Тащемта от q действительно никакого толку не оказалось. Добился целей лабы так писал выше - append'om. Так не разобрался как можно удалить из основного списка элементы начинающиеся не с 'p', то сделал второй список, в который вошли элементы, начинающиеся не с 'p'. Ну и объединил два списка: 'pidor', 'porebrik','aa','dd','dvach','grob' Вот такой я говнокодер.
>>1455728 https://habr.com/ru/post/193242/ задавайте любые вопросы как ответ к этому посту, пока кушаю супчик, буду отвечать по мере знаний (можно даже очень тупые на ваш взгляд)
>>1455709 В Джава треде слишком сложно объявить о том, что ты насрал В Си-Сялп-треде можно насрать только с винды В СПП-треде забыл очистить прошлую кучу говна и теперь негде срать В ДЖС треде неправильно преобразовался тип и вместо того чтобы насрать, обоссался В других тредах все настолько мертво, что срать там нет смысла Удивлен как ты насрал в этом треде без конфликтов с прошлым говном и средой для сранья, поздравляю...
>>1455762 Вот скажи мне брат саблимщик ты код как запускаешь? Сейчас сам через плагин repl в новой вкладке, ибо необходимо ручками значения передавать, а через стандартный билд код не дает, но этот репл жутко не нравится тем что вкладке генерит. Может ты мне какую альтернативу подскажешь, а то вскод пока приходится использовать, но там тоже не все радужно.
Пиздец, первое же упражнение с черепахой из курса МФТИ нехило так заставило просраться (рисовать спираль там где нужно). Если просто спираль нарисовать легко, то вот чтобы черепаха при движении еще и поворачивалась на заданный угол... ух, бля... пиздец.
>>1455820 У меня тоже нормально не получилось, сделал с goto. Зато с goto это даже лучшее решение, потому что так чисто качественный проход по функции в полярных координатах. На розеттакоде тоже с гоуту сделано
>>1455944 Я тоже math использовал, да. Ну а как тригонометрию без него считать, свои функции для синуса и косинуса совсем не в тему писать при рисовании черепахой. Нет, goto никаких поворотов не делает и не должен, я же говорю, через поворот+форвард у меня тоже плохо получилось. Ну то есть какую-то спираль оно рисовало, но точно такую как через гото нет. А через гото на самом деле максимально правильно по логике вообще отрисовывания графиков функций.
Привет, аноны. Возникла проблема, в которой черт ногу сломит.
По одной хорошей книжке решил попробовать импортировать модуль командой import Сначала попробовал встроенный модуль подрубить - math - всё нормально, без ошибок. Затем решил свой подключить и бах, выдаёт вот такую ошибку:
Traceback (most recent call last): File "<pyshell#12>", line 1, in <module> exec(open("module.py").read()) FileNotFoundError: [Errno 2] No such file or directory: 'module.py'
Не пойму, почему не работает. Окружение PATH я настраивал, каталог нужный добавлял и модуль открывал так же оттуда.
Антуаны, есть предположения, что может быть не так?
>>1455978 Спасибо большое. Теперь другая проблема. Нагуглить не удалось, потому что я очень сонный сейчас SyntaxError: EOL while scanning string literal Уже слеши экранировать до тройных пытался. Моразм начался какой-то, а ему хоть бы хны
>>1455979 Ты ждёшь, что я по ошибке просто угадаю что ты делал в своей программе? Тебе придётся научиться гуглить или хотя бы нормально вопросы задавать
>>1455277 Посмотри в сторону defaultdict в модуле collections. Там можно создать словарь, который по любому не содержащемуся в нем ключу возвращает пустой список.
Привет, анон. Я прочитал гайд, прочитал гайд на хабре, и так и не понял, с чего начать. Гайд датируется 2012 годом, поэтому я как-то сомневаюсь, что стоит строить обучение именно по нему. Есть какие-нибудь актуальные гайды, или просто советы, с чего вообще стоит начинать в 2019 году? Опыта программирования за плечами нет вообще, за исключением ебучего паскаля лет 13 назад в школе. Английского тоже пока не знаю, в процессе изучения, поэтому лучше бы материалы на русском языке. Был бы очень признателен.
Господа, не так давно вкатился в пайтон, изучаю как могу, и тут недавно наткнулся на возможность рулить пайтоном GPIO у малинки, и на MicroPython, загорелся идеей запилить умную комнату на пайтон с нуля, суть какова: -Малинка будет сервером MQTT и обработки запросов - на малинке запилю голосовой ассистанс как в видосе хаудихо с изменениями для управления умными-релейками голосом -Умные релейки и датчики запилю на ESP8266 при помощи MicroPython, будут обмениваться данными с малинкой по MQTT -Управление с девайсов в ручную запилю в виде Python-программы на Kivy скомпилированой под Windows, Android и Macos, которая будет общаться с малинкой опять же по MQTT веб интерфейс не хочу - ненавижу веб технологии
>>1456287 Это как аналог MQTT? Я просто пока плаваю в теме, не так давно начал вникать, и информации пока слишком много. Просто если я верно понял - готовые датчики всяких сяомь используют MQTT, и потому я думал чтобы в будущем иметь возможность работать с ними - пробовать MQTT не пинайте если я что-то не так понял или сказал, луше объясните
>>1456158 Ты имеешь в виду ограничение, выплывающее уже после ввода и нажатия Enter или же не дающее возможность ввести больше N символов ещё до нажатия?
>>1456300 Вот человек не удосужился даже вопрос сформулировать, и ты своим желанием помочь как бы показываешь этим пидорасам, что они все делают правильно.
>>1456385 рекомендовано ставить пайтон в директорию без кирилицы. Переделывай. Это раз. Два - в пайшарме потом в настройках проекта выберешь путь к интерпретатору
>>1456388 Не очень понял, о чём и к чему ты это. Я сам в первую очередь подумал о заранее ограниченном поле для ввода текста. Это задача всё же поинтереснее, чем написать банальные if и else в нужном месте кода.
Нужно как-то переписать эту срань, чтоб интерфейс геттеров остался прежним, но на каждый новый атрибут не пришлось создавать новый геттер. Два дня ебусь, даже в метаклассы полез, но это какой-то спидорак, есть у кого идеи?
>>1456515 Объясни нубасу поподробнее что ты хочешь рили тупо подумать, а то я нихуя не понял, чего ты хочешь. У тебя класс с 3 статик-переменными, тремя геттерами для инстансев и что тут переписывать >на каждый новый атрибут не пришлось создавать новый геттер. Ну ебни через __dict__ чтоле
>>1456521 Перевожу на русский: у тебя был словарь, потом его как-то изменили. Нужно вывести только изменения. Не совсем понятно, то ли нужно сравнивать именно два разных словаря (задание), то ли нужно написать нечто, ведущее себя как словарь, но запоминающее изменения (примеры). В любом случае пишется за 20 минут без тестов. Тесты там в хуй не вперлись.
>>1456560 А хуй знает, я, наверное не буду делать, т.к. с ходу не смог придумать решение для первого, а ебать мозги ради галеры обоссаной? Нахуй надо. >>1456584 > то ли нужно сравнивать именно два разных словаря (задание) This > В любом случае пишется за 20 минут Нихуясебе. Ссылочку на вакансию дать? Зааплаешься.
>>1456597 > This Никак не понять из текста. Есть пример, в нем есть только data, который модифицируют и res, в котором должен быть результат. Что с чем диффать?
> с ходу не смог придумать решение для первого Могут появиться новые ключи (можно set(dict2) - set(dict1)), могут удалиться, могут измениться значения для ключей. Для каждого общего ключа: если типы различны, то и значения однозначно различны; если тип словарь, рекурсивно сверяем; иначе тупо сверяем значения. Плюс-минус придумывем, что делать удаленными ключами. Десять строк, нахуй там юнит-тесты и КЛАСС, я понять никогда не смогу.
>>1456678 > Никак не понять из текста Согласен, я написал, переспросил. > Десять строк, нахуй там юнит-тесты и КЛАСС, я понять никогда не смогу. Звучит неплохо идея. Тут тестовое для проверки того, как человек пишет код. Но суки ебаные блять, нахуя я вам везде даю ссылку на свой гит? Вы блять зайдите и посмотрите, дауны. Извиняюсь, накипело.
Расскажите, насколько это рабочая схема? Основная работа у меня даже не на компьютерея работяга, это не шутка, поэтому не стоит брызгать слюной, мол ну я и долбоёб, я понимаю, что я просто не смогу на каких-то волевых сам приходить, искать и учить какую-то инфу и решать задания, здесь будет программа, которую компетентные(компетентнее меня) люди собрали. Ну, собстна, задавайте ваши ответы Перепостил из ньюфаг-треда, он мертв
Аноны, помогите разобраться с Raspbery Pi, python3. Хотел запилить голосового ассистента, сделал так: sudo apt-get install pip install pyttsx3 pip install speechRecognition sudo apt-get install python-pyaudio espeak python-espeak
В результате при попытке воспроизвести - устройство не найдено (куча ошибок, пикрил). Если делать через терминал, командой espeak "Hello-world" - высыпает те же ошибки espeak "Hello-world" 2>/dev/null - ошибок нет - это должен быть рабочий вариант, с указанием на устройство вывода - но звука ннет В пайтон3 модуль espeak не видит - видит только в пайтон2.
ЧЯДНТ? Как в pyttsx3 указать устройство вывода? Я не вижу этого в документации
>>1456743 А, забыл пикрил фото, потому что стандартный файлменеджер расбиана не имеет доступа к флешке, и разбираться с этим я не хочу сейчас, а удалённый рабочий стол пока не настраивал
>>1456728 Я вот заводо быдло за 30. Пытаюсь выучить питон уже не первый год (7-8 лет время от времени читаю книжки по нему), но в этот раз основательно взялся и последний месяц стабильно трачу понемногу времени на него. В начале года ушел с завода. А дальше начался пиздец. Сейчас вот не могу обратно устроиться в туже компанию. За это время прошел курсы парикмахера за те же 60к. Скажу что это была самая бесполезная трата в моей жизни и лучше бы на курсы питона пошел. В итоге собираюсь как накоплю денег пройти какие-нибудь дешманские, но когда это будет не известно, чую что минимум через год.
>>1456773 Это не троллинг тупостью, это то что основы я знаю, но читать начинал книги для тех кто 0 в этом и теорию быстро пробегал и решал задачки, чтобы просто не забыть язык. И да, у меня были перерывы большие, плюс пхп пробовал по совету, но на него быстро забил, ибо кроме того что он меня люто бесил, ничего мне не дал, легче на питоне что-то написать. Да и вообще, яп я использовал для конкретных целей и базы было выше крыши, плюс регулярные выражения покрывали все мои потребности. А тут прям захотелось до уровня джуна выучить, вот и взялся. Сейчас потихоньку фласк начал тыркать.
>>1456566 Я задачу в пример привёл просто, там методы сильно сложнее геттеров на самом деле. Зря слово это использовал в формулировке, сбил с толку видимо. >>1456659 Спасибо, думаю сработает. Метакласс в отличие от конструктора можно будет в нескольких классах использовать, что мне и надо. >>1456569 Нужно механизм, который будет создавать однотипные методы на каждый статический атрибут класса.
>>1456777 > Метакласс в отличие от конструктора можно будет в нескольких классах использовать А можно просто декоратор запилить с тем же самым содержимым.
>>1456827 > сильную типизацию 'хуй' * 3, ага. float(1) + int(1), ага. Не существует никакой сильной типизации в чистом виде. Нигде. То, что оно у >>1456806 не работает, означает лишь то, что так задумано, потому что приводит к путаниец. Была бы возможность переопределять методы у встроенных классов - можно было бы "починить" сломать?.
>>1456833 Всё-таки это достаточно сильная. На языке с совсем сильной типизацией просто невозможно будет писать, слишком много лишних преобразований.
В питоне практически всегда надо делать явное преобразование типов, но для ряда случаев определены преобразования.
Например, ты определишь класс MyClass и в нём есть метод __str__, приведение типа к строке. Но даже в этом случае ты не можешь написать my_class = MyClass() " " + my_class тебе надо делать явное приведение типов ' ' + str(my_class)
и сделать прозначное преобразование, как в C++, нельзя.
'хуй' * 3 - это не изменение типов, это специально определённая орерация умножения для строки. В принципе ты можешь переопределять операторы для класса, чтобы "my_class + 3" имело смысл. Но тут всё-таки явное определение оператора, это согласуется с принципами "сильной типизации".
>>1456863 Похоже, cur.fetchone() возвращает кортеж, что, в принципе, логично. Как вариант - присваивать str(cur.fetchone()[0]) вместо str(cur.fetchone()).
>>1456848 > достаточно сильная Лол. Давай в децибелах измерять?
> Но тут всё-таки явное определение оператора, это согласуется с принципами "сильной типизации". В питоне везде и всегда явное определение оператора. По крайней мере, так оно выглядит "снаружи" интерпретатора. И ты никак не можешь запретить делать каст магическому методу, реализующему оператор. Поэтому, несмотря на заявления в документации, в питоне нет сильной типизации.
a, b = Type1(), Type2(); a + b может сработать, явные преобразования видишь? - и я не вижу, типы разные мало того, в Type1.__add__ может быть return Type3(), язык опять же не запрещает, значит типизация никаким местом не сильная.
> ты не можешь написать " " + my_class Это манипуляция. Я мог бы, если бы встроенные типы в питоне не были бы запечатаны не для усиления типизации, а просто чтобы не замедлить и так медленный язык еще раз в пять. Я все еще могу написать my_class + " ". И даже код анона >>1456806 я почти могу написать (обойдя проблему с переопределением int.__add__): http://ideone.com/x4vjeF
> В питоне практически всегда надо делать явное преобразование типов Потому что встроенные типы недописаны (намеренно, да). Но это проблема касается встроенных типов, а не языка.
Подскажите, почему умножая два числа (a,b), где a = int, а b = float я иногда в результате получаю числа с огромным количеством знаков после запятой? Пример: b = 0.001 for a in range (0,100) c = a*b print(c) и в результате я получаю: 0.001 / 0.002/..../0.036/0.037000000000001/0.038/...
>>1456943 Потому что флоат какая-то хуита с непонятной точность. Я так понял чтоб таких проблем не иметь - проще использовать: from decimal import Decimal для не целых чисел.
>>1456963 >Вообще эта информация может пригодиться только на интервью и байтоебам, так что не ебись и используй round Когда работаешь с деньгами, то это очень важно, у нас float почти не используется, все числа либо в int или обернуты в Decimal
>>1456943 Потому что числа в компьютере хранятся в двоичной системе исчисления, аллё. Неужели это для тебя новость? Наверняка нет. Тогда тебе будет просто понять ответ: в двоичной системе все float'ы должны иметь конечно представление, типа "1101.1101010010011". Но не всякое число, имеющее конечное десятичное представление, имеет и конечное двоичное представление. Например, "0.2" в десятично системе - это бесконечная циклическая дробь "0.00110011001..." ("0.(0011)"), которая, разумеется, округляется компьютером до конечного числа знаков после запятой. И если это округлённое число потом ты пытаешься записать в десятичной форме, то выйдет "0.200000000000000011102230246251565404236316680908203125". Так происходит не со всеми числами, конечно. Например, "0.5" в двоичном виде это просто "0.1", и преобразование туда-обратно происходит без округлений. Можешь сам поиграться вот тут https://www.exploringbinary.com/floating-point-converter/
>>1456728 тоже думал поучиться на скилфактори, не могу переступить порог "джуна", на работе делаю что-то с текстовыми данными , но написать что-то серьезное вроде вебприложения не могу
Правильно ли я понял,что по PEP 8 нужно вместо табуляции пользоваться пробелами? 1. Нахуй такое требование? Чем табы не угодили? 2. Всегда пользовался табуляцией равной 4 пробелам. Сейчас одну табуляцию заменил на четыре пробела (саблайм автоматом меняет). Всё правильно сделал?
>>1457089 Не, ты не понял. Выделение блоками понятно, но почему в PEP 8 рекомендуют пользоваться богомерзкими пробелами для выделения этих блоков, а не православными табулярами?
>>1456777 >Нужно механизм, который будет создавать однотипные методы на каждый статический атрибут класса Ну статические переменные, как я предложил можно высосать из __dict__, а "однотипные методы" - какая-нибудь хуйня с замыканием, ленивые лямбды не подойдут.
ПОЧЕМУ во стором случае переменная i внезапно стала 5? Что значит изменялась внутри функции? Что такое локальная и что такое глобальная переменная я знаю.
>>1457108 Читай внимательно, баран. "Если бы". Глобальная переменная видна во всём коде, локальная - только в теле функции (совпадающее название перекрывает глобальную).
Я не понимаю почему значения факториала в случае "Если бы" равны "5"
>Глобальная переменная видна во всём коде, локальная - только в теле функции (совпадающее название перекрывает глобальную). Я это понимаю. Не понимаю откуда берется эта пятерка.
>>1457117 Получается, автор учебника просто облажался и рандомно написал значение? Офигенно. Пол часа мучаюсь, пытаюсь разобраться. Если так, то спасибо.
>>1457125 Ну разберём по частям автором написанное. >"Если бы" Ну обойдём это ограничение c помощью массива https://repl.it/repls/GrossVerticalBrace Ой, нихуя не сломалось.... как же так. Автор не знает как range работает или что? И да, можно снять комментирование и убедиться, что это один массив.
>>1457108 Пример действительно некорректный и ошибочный, так как в этом случае даже если бы глобальная переменная изменялась бы ВНУТРИ функции, результат был бы аналогичным, то есть: 1!=1 2!=2 3!=6 ... итд, так как значения глобальной и локальной i тут совпадают. На скрине я сделал i global, автор лох.
>>1456772 > Пытаюсь выучить питон уже не первый год (7-8 лет время от времени читаю книжки по нему) Тьфу, блядь, я этот ёбаный Пихон за 2 часа выучил, прочитав документацию, этот дебил за 8 лет не смог.
>>1451619 (OP) Я тут разные сортировки реализовываю, и мне нужно передавать в функцию список и индекс последнего элемента, самое простое(#1), передать аргументом по умолчанию какое-то левое число, с которым функция потом точно не вызовется рекурсивно, это работает. Но препод показывал фишку(#2), когда по умолчанию мы даём None, а потом, ну вы поняли: https://ideone.com/y3wk3e Вот второй способ у меня вызывает превышение глубины рекурсии, что я делаю не так? Вот весь код со вторым способом: https://ideone.com/Us9fv4
Ну что, парни, я еще раз подумал, неужели это так хуево на годовом курсе сидеть? Я не молодой гений, который с 15 ковыряется, у нас на информатике делали в штмл хелоу ворд. Поговорите, пожалуйста, со мной Я готов учиться так же сильно, как я ненавижу сейчас то, чем занимаюсь.
>>1457171 Представь, что ты хочешь пойти переводчиком работать, переводить какие-то документы на немецкий язык. А сам ты пока только шайсе, ханде хох и гитлер капут знаешь. Цель реальна, но путь долог.
Аноны, есть несколько приватных методов внутри класса, которые не изменяют и не дергают данные из self и pycharm предлагает объявить их статическими, но я читал, что статические методы это обычный неймспейс внутри класса, их сделали по ошибке и вообще их использование это плохая практика. Что делать? Объявить их классметодами или просто отключить их детект в инспекторе пайчарма?
Подскажите, пытаюсь добавить строку матрицы numpy, но не напрямую, а через вычисленный элемент. Выглядит это так: st = 0,0,0 a = np.column_stack([a, [ st ]]) Пытался и через format, выдает ошибку. При этом если вручную забить 0,0,0 то никаких проблем нет.
Ни написал ни строчки кода в жизни. Но нужно срочно блять учить какой то язык погромирования, желательно связанный с анализом данных. Что то где то слышал про питон. Также что то где то слышал что его не прекращают поддерживать и что это плохой сигнал.
Напишите стоит ли его учить в моем случае и почему?
>>1457306 В твоём случае не стоит. В анализе данных всего два наиболее употребимых языка (ну ещё для первичного анализа часто бывает удобен Excel/Power BI) это R и Python. Эту информацию ты бы смог извлечь за 20 минут гугления. Далее легко можно было бы почитать характеристики каждого из них и выбрать тот который тебе больше подходит.
>>1457315 Долбоеб тупой. Хуистики может еще почитать? Р насколько я понял он какой то ущербный, типа полуязык. А Питон уже якобы прекратили поддерживать.
Стоит ли учить Питон и в чем подводные прекращения поддержки?
>>1457007 Ты конечно прав, я подразумевал, что вопрос не касается коммерческой разработки. Если ты занимаешься коммерческой разработкой и задаешь подобные вопросы здесь, то у меня очень плохие новости для твоего работодателя.
>>1457279 > А вот так >>1457276 делать скорее всего не надо. Почитай, например, код стандартной библиотеки. Открываем случайный: zipfile.py. Видим: def _strip_extra, def _EndRecData, def _EndRecData64, которые используются классом ZipFile. Как же так? Почему они не статические методы? Правильно, потому что это писали на питоне, а ООП-шизики, набижавшие из Java, до них еще не добрались.
Вечер в хату. Работаю в офисе, недавно в мои обязанности вошла индивидуальная рассылка вручную неких файлов на фиксированный список адресов. При обычной рассылке всё это улетит в спам. Хочу написать скрипт, автоматизирующий процесс, но перед этим поясните, пожалуйста, несколько моментов: Есть ли риск, что меня пидорнут с подачи какого-нибудь Санька из айти отдела, который задетектит работу скрипта? Мол, мутный софт, может быть я корпоративный шпион-диверсант, хуё-моё Какие подводные при использовании smtplib с почтовым сервером компании? Есть ли реальные угрозы безопасности рабочей почты?
>>1457421 Если ты локально на своем компе будешь рассылать письма через скрипт на питоне - заметить это будет невозможно, так как отправка не будет отличаться от отправки вручную. Если совсем параноик - сделай паузу между отправкой писем на случайное время. Подводных нет, опять же отправка через библиотеку и через почтовый клиент (который так же использует кем-то написанную библиотеку, а может даже smtplib но не думаю что ты его используешь). Угроз нет, если ты случайно в список почт на отправки, не добавишь почту шпиона или там у кого-то не появится доступа к твоему компьютеру, но это проблема не скрипта, это может произойти и без него.
>>1457326 >А Питон уже якобы прекратили поддерживать. Не используй питон, тебе не нужно, ты даже элементарную информацию найти не в состоянии. Попробуй себя в специальности продавец-консультант. Или менеджер по продажам. Там как раз важно уметь поболтать.
>>1457399 >Видим: def _strip_extra, def _EndRecData, def _EndRecData64, которые используются классом ZipFile. Как же так? Почему они не статические методы? Потому что эти функции используются в нескольких классах и в других функциях, которые вне классов.
Код должен быть в первую очередь корректно офомлен с точки зрения логики. То есть если у тебя метод явно по логике связан с классом, то его и надо оставлять в классе и делать статическим, если не привязан к контексту. Если же он делает какую-то общую операцию, не связанную с классом, то разумно выносить из класса.
>>1457533 Ты можешь привести пример операции, "связанной с классом", которая была бы достаточно целостной для вынесения в отдельный кусок кода, но при этом не требовала бы для выполнения значений экземпляров класса? А то общие слова, не понятно, о чём конкретно речь.
# Load `mp3_fp` as an mp3 file in # the audio library of your choice _____________________________________
Каким модулем можно воспроизвести этот 'file like object'? Пробовал Pygame.mixer - не хочет. Видел пример с использованием musicplayer - этот модуль у меня даже не устанавливается. Есть какие-то ещё варианты?
>>1457711 >>1457728 nuitka создает папку, мне же нужен один файл exe Что за ошибка с numpy? Он даже не используется. Установлена последняя версия numpy
>>1457306 >Но нужно срочно блять учить какой то язык погромирования Очередной колхозник подумал, что будет спустя месяц получать миллиарды в наносекунду. Кинул тебе за щеку манька, ты не то кодить, ты писать без "блять" как междометие не можешь. Теперь открывай рот, разрешаю.
>>1457255 У меня все работает. Что конкретно тебе надо? Если добавить именно строку, а не столбец, то нужен row_stack, а не column_stack, и в любом случае должны быть подходящие друг другу размерности аргументов.
>>1457875 Тупая шлюха кто тебе сказал что я работать буду прогреем??? Мне это нужно чтоб в США приняли в магистратуру на бизнес аналитика. Там одно из требований - знание ЛЮБОГО языка программирования на НАЧАЛЬНОМ уровне.
Python'ом могу пользоваться только версии 3.4.2, pip не хочет обновляться до последней версии, а numpy/scipy/mathplotlib не хотят устанавливаться при моём большом желании ими пользоваться. Есть вариант установить старые версии библиотек?
>>1457911 Да кто тебя туда примет, манька. Ты с таким отношением к людям будешь нахуй послан в самое, что ни на есть ближайшее время. Приказываю гавкать дальше, чмоха.
>>1457913 >Python'ом могу пользоваться только версии 3.4.2 А что мешает поставить свежий? > Есть вариант установить старые версии библиотек? Конечно. Можно прямо указывать версию пакета в форме <имя_пакета>==<номер_версии>, например, pip install MySQL_python==1.2.2. У pip есть много команд и ключей к ним, в том числе, например, --python-version для, внезпно, версии питона, для которого надо искать пакеты. Кроме того, на сайтах проектов обычно доступны и предыдущие версии проекта.
>>1457959 что блять гуглить? шизоид >>1457947 >Ты с таким отношением к людям ты можешь блять 5мин побыть не русней вшивой а помочь человеку с которым у тебя нет отношений??? Или ты блять и на дваче отвечаешь только по блату и только своим???
>>1458047 > определить положение окна этого приложения на экране Ты можешь дергать Windows API через ctypes. EnumThreadWindows/FindWindow, GetWindowPos, вот это все.
Допустим, у меня есть скрипт, который смотрит сводки погоды на каком-нибудь сайте раз в час. Какие у меня есть варианты для организации его постоянной работы на продолжительный срок, помимо держания комплюктера включенным 24/7?
>>1458214 У меня получается два экземпляра класса, но при смене в одном из экземпляров значения в словаре, значение меняется и во втором. Мне нужно чтобы такого не было. Вроде как такое происходит потому что оба словаря ссылаются на одну область со значением
Так это потому, что ты объявил "переменную класса", няша. То есть, она общая как для объекта new1, так и для объекта new2.
Не знаю твою задачу и почему тебе важно определять словарик в отдельном классе, но предположу, что так надо.
Что бы словарик создавался каждый раз новый, определи его не как переменную класса, а как переменную объекта, используя конструктор (__init__), тогда каждый раз, когда ты будешь создавать объект new1, new2, new3 класса Test_main у тебя будет создаваться новый объект test_ класса Test, с доступом свеженькому, только созданному специально для этого объекта, словарю.
Или для тебя принципиально важно, что бы создавался один объект класса Test, на который ссылались разные объекты класса Test_main, но при этом, каждому из них был доступен отдельный атрибут test_dict?
>>1458223 > Не знаю твою задачу и почему тебе важно определять словарик в отдельном классе, но предположу, что так надо. Просто пишу текстовую рпг и решил для инвентаря сделать отдельный класс, в котором в разных словарях хранятся отдельные типы предметов. А у меня получается что для двух разных существ инвентарь общий > Что бы словарик создавался каждый раз новый, определи его не как переменную класса, а как переменную объекта, используя конструктор (__init__), тогда каждый раз, когда ты будешь создавать объект new1, new2, new3 класса Test_main у тебя будет создаваться новый объект test_ класса Test, с доступом свеженькому, только созданному специально для этого объекта, словарю. Вернусь с обеда попробую так переписать, вроде как это именно то что нужно.
> Или для тебя принципиально важно, что бы создавался один объект класса Test, на который ссылались разные объекты класса Test_main, но при этом, каждому из них был доступен отдельный атрибут test_dict? Мне наоборот нужно чтобы для каждого класса Test_main создавался свой Test, так как в моем говнокоде он представляет собой инвентарь.
Потому, что очень много заморочки. Во-первых, я смутно знаком с PyGame'ом, во-вторых, с игростроем вообще не знаком, ну и в-третьих, я не умею рисовать. При этом, никакой коммерческой выгодны (прокачки особых скиллов, умения пользоваться нужными при работе библиотеками и т.п.) нет, разве что строчка в резюме "сделал игру", лол.
Вот и получается, что цель как-то не оправдывает средства.
Проблема только в одном, когда тесты запускаю, если последнюю клетку надо закрасить, то фейл. Робот тупа доходит и не красит. Не понимаю какое условие надо ебануть, чтоб все ништяк было.
>>1451619 (OP) Помогите решить проблему, благородные доны. Я пытаюсь наладить простую программу для шифрования. Нужно просто запросить у пользователя обычную строку текста, зашифровать её, записать в текстовый файл (к которому могут иметь доступ третьи лица, от которых и нужно защитить данные), а потом другая программа могла бы вытаскивать всё то, расшифровывать и использовать. Ничего толкового придумать не смог
>>1458358 На предпоследней клетке твой робот делает проверку, надо ли закрашивать, а потом шагает вправо и функция волл из он де райт начинает отдавать True, поэтому цикл с проверкой на последней клетке не выполняется. Подумай как сделать программу так, чтобы оно сначала проверяло, надо ли закрасить, а потом делало шаг, если справа нет стены.
>>1458365 >Ничего толкового придумать не смог Начни с того, что разберись с понятиями "блочный шифр", "потоковый шифр", со словами ECB, CBC и тому подобными. Это базовая теория.
Потом смотри на библиотеки, которые имеются в наличии.
>>1458278 Если ты не школьник, у кого банально нет своей карточки, чтобы с неё за хостинг заплатить, я бы рекомендовал всё-таки найти 5 долларов в месяц на VPS. У тебя масса других возможностей появляется, когда свой виртуальный сервер есть.
С бесплатными вариантами тяжело. Тут даже не потому, что всем жалко, а вопросы безопасности, слишком много опций для злонамеренного использования таких сервисов, никто с этим связываться не хочет.
>>1458446 Как я вижу, __init__ в твоём классе не принимает никаких аргументов, кроме self. Как вариант - добавить в качестве второго аргумента student, сделать его атрибутом класса и потом уже использовать в твоих методах.
Ощем, перед тем как приступать к изучению тестирования и переходу к большим проектам Эрик Мэттис, 10 глава задумал закрепить полученные знания и нахуячкать соснольную программу у которой есть логин, регистрация новых пользователей, админ и юзеры с разными допусками и методами - юзеры смогут создавать текстовые файлы и писать в них хуйню малафью, админы могут тоже самое + менять данные пользователей и вот это вот всё, например. Пока что запилил регистрацию и логин у меня аж привстал когда всё заработало как надо, ага, завтра сделаю два класса: юзер и наследуемый от юзера админ. Так вооот, будет ли правильным то, что я вкорячу дополнительным аргументом класса статус, который и будет различать юзера от админа когда пользователь будет логиниться, не? или как это всё провернуть? И это, проверьте текущий http://ideone.com/0fnl4C код, подробно обоссыте если что не так, ага. никаких дополнительных проверок, безопасности и прочей хуйни пока что нет, потом допилю, если не лень будет
>>1458506 У тебя там есть декоратор cached_property, который не описан в твоем куске. И уважай других прикрепляй ссылку на пастбин, а не срань гринтекстом
>обратите внимание на эту конструкцию >is_initialized флаг хранящий состояние обёртки над selenium. >driver инициализируется лениво (при обращении к нему). нет обращения - не инициализируется, окно не создаётся.
Я вот так открываю Хром – self.driver = webdriver.Chrome(executable_path=path + '/chromedriver', chrome_options=options, )
Вот куда мне поставить вызов Хрома, чтобы всё работало как задумано?
Пиздец, я уже методом тыка куда только не вставлял.
>>1458514 Настолько все плохо, что готов сотку отдать за то, что вполне можно нагуглить? Был бы за компом, бесплатно обучил бы тебя, как строить запросы в Гугл, чтобы найти нужные тебе ответы, но увы.
>>1458582 Нихуя не понял, но твой метод драйвер запрашивает обязательный аргумент "student", который ты ему, видимо, не передаешь. А вообще, зачем тебе "student"? Ты ж его вообще нигде не используешь, кроме как в принимаемых аргументах методов.
>>1458885 Лучше функции передавать сам список, а не его копию, потому что для создания копии требуется время и память и со списком больших размеров можно обосраться
>>1458885 Выше (>>1458886), в общем, правильно написано. Но, есть нюанс - опущена мотивация. На самом деле, там написано:
Хотя вы можете предохранить содержимое списка [от нежелательного изменения], передавая в ваши функции его копию, но ...
Т.е. копировать это хорошо, это повышает безопасность, но, делать это бездумно не нужно, лучше не писать кривых функций, мутирующих данные без нужды.
Но, т.к. функции могут быть и не твоими, и обстоятельства бывают разными, то на этот случай есть вот такая конструкция - [:], которая позволяет скопировать список.
Анончики, ещё один глупый вопрос, нагуглить не получилось. Есть Один Метод и в нём три ветки условия, которые отличаются только одним названием словаря, название зависит от item_type. Можно это переписать в одну ветку, чтоб название словаря бралось из item_type. Вот код: https://pastebin.com/Ptf9JEfx
У меня нубо вопрос. Как во фласке/джанге параллелить вычисления/не блочить сервер? Я с потоками, мультипроцессингом сталкивался на уровне запустить потоки с именами, посмотреть че они творят, как расхуячивают общую переменную и т.д. Не понимаю как этим пользоваться здесь: вьюха должна вернуть http. Если я внутри вьюхи кусок кода кину в отдельный поток, она вернет хуевый http без нужных данных. Если сюда добавить join, тогда все тупо заблочиться, пока все клиенты не будут готовы. Нужно как бы на каждого клиента запускать свою вьюху, но для этого нужен какой-то общий цикл, который чекает готова ли вьюха. Куда приделать этот цикл во фласке? Как я понимаю, с таким циклом и событиями я подхожу к принципу ассинхронных фреймворков? Вот с yield-ами я не дружу, воспринимаю их тупо как способ сгенерировать еба-лист. Вроде их используют в таких случаях?
>>1459006 Подскажи, где лучше всего тренироваться? Пишу в Sublime, но хотелось бы, чтобы сразу можно было запустить программу, не из командной строки. Попробовал PyCharm, но какая-то громоздкая программа, тормозит и грузится долго
>>1459058 Для обучения как раз нафиг не надо лезущие отовсюду окна с якобы подсказками, а на самом деле просто отвлекающий мусор. Когда учишься, нужно понимать что происходит, а не подсказки читать.
мимо с любовью вспоминаю студенчество с турбо паскалем 7.0
>>1459083 Алсо по твоей ссылке еще один способ есть: >If for some reason the console installation instructions do not work for you (such as having a proxy on your network), perform the following steps to manually install Package Control: Справа, под Manual
>>1459138 Эта хуйня нужна только для того чтоб запускать интерактивные программы, пока можешь пользоваться просто ctrl+B - результат будет выволиться ниже в сосноле
>>1459127 Возможно, я не очень понятно выразился. Я имел в виду, что "херня" в pycharm может быть "ненужной" для хелловорлдов, но не для промышленного программирования.
Решаю алгоритмические задачки в пайчарме, не понимаю ваших проблем, на стареньком ноутбуке с линуксом всё летает. Если у вас долгая индексация пакетов -- создавайте проект с virtualenv, благо это в пайчарме в две кнопки делается.
>>1459158 > в коде есть input() Так удоли его оттуда. Зачем он тебе? Данные вводить во время обучения? Лучше записать их в файл или в список и читать оттуда, а не набирать одно и то же в *цатый раз, снова и снова узнавая, что у тебя баг в коде. Можно даже сделать простейшую реализацию для input(), которая будет прозрачно читать из файла или списка. Вот серьезно, не могу придумать ни одного юзкейса для input(). Интерактивный блокирующий ввод в скриптовом языке абсолютно без задач.
>>1459186 Так обучение подразумевает, что у тебя скрипт падать будет, что у тебя будут баги, что ты будешь его запускать стопицот раз. Какой смысл писать: x = input('first number: ')) y = input('second number: ')) print(z) z = x * y и нихуя не понимать, почему оно не работает, если можно положить числа сразу в переменные, без инпутов? Что от этого изменится кроме того, что станет удобнее?
>>1459166 Это моя ошибка. Нужно было указать, что в каждом if-е у меня по функции, плавно двигающей курсор в нужном направлении в соответствии с положением old и new относительно друг друга, и простым присваиванием здесь не обойтись.
>>1459195 >и нихуя не понимать, почему оно не работает В этом то и вся писечка же - думой, почему оно не работает. А изменится то, что это будет интерактивной, и не такой очевидной хуйней как удобненькая переменная в твоем коде.
>>1459212 first number: 1 second number: 5 Traceback (most recent call last): File "d:/Python/helloworld.py", line 3, in <module> z = x * y TypeError: can't multiply sequence by non-int of type 'str'
>>1459263 >Не работает, я так и сделал Квадратные скобки сверху и снизу добавь >Add bellow lines to the opened file between brackets: [ { "keys": ["ctrl+alt+b"], "command": "run_existing_window_command", "args": { "id": "repl_python_run", "file": "config/Python/Main.sublime-menu" }} ]
Привет, аноны. Скиньте, пожалуйста, книг по tkinter на русском. Видеоуроки дрянь полная, не рассказывает никто, что, почему и зачем там. Лучше уж по книге заниматься
Короч, котятки, супервопрос. Мне нужно каким-то хуем управлять сраной разбивкой пакета на уровне протокола IP средствами питона. Как это удобнее сделать?
>>1451619 (OP) Короч, котятки, супервопрос. Мне нужно каким-то хуем управлять сраной разбивкой пакета на уровне протокола IP средствами питона. Как это удобнее сделать?
Аноны, скиньте книг по PyQt5 и как кодить на нём, не только дизайнить. Видео-гайды полное говно, не объясняют, почему именно так надо и из-за этого понимания ноль
>>1451619 (OP) Привет двач, есть задача: нужно произвести поиск из списка знаков по строке. Например есть строка "abcd" и нужно проверить на вхождение каждый из символов этого списка в заданной строку, допустим "2chsosach". Вот что я придумал
letter = "abcd" name = '"2chsosach"
for i in name: for j in letter: if i == j: print(i)
И оно работает, но сдается мне есть решение поэлегантней
Hi 2ch, такой трабл, я когда сохраняю в Atom (ctrl+S) выскакивает окно консоли, и когда запускаю (f6) тоже выскакивает пустое окно консоли, а потом консоль с выполняемой программой. Что за дичь пацаны?
>>1467614 Ещё компилятор начал тупить, на код for ch in letter if letter in name print(name) выдаёт ch - не определенно, а спустя некоторое время, этот же код закомпилился
Предыдущий:
ЧАВО: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat - по идее с этого надо начинать, прежде чем вопросы задавать, но аноны бугуртят, что это говно мамонта.
Книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem
Очень много книжек: https://drive.google.com/drive/folders/13YaFijvuH4dtv-PjUKVWLQ7ZIqXIfCLK
Анон, вместо того, чтобы без разметки постить код, лучше шарь код через специальные ресурсы:
https://ideone.com/
https://pastebin.com/
https://pyfiddle.io/
https://www.codepile.net/