Тред, посвящённый языку программирования ПитонПредыдущий >>1451619 (OP)ЧАВО: 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/#######################################Вопросы-ответы:А стоит ли читать Лутца, том номер N?нения в треде разделены. Кто-то за(очень неплохая база даётся), кто-то против(слишком много воды и объём книг убивает всё рвение). В общем - решать тебе, книга вредна не будет, то ты можешь её просто не дочитать и забросить.Стоит ли читать %книга_нейм%, если там питон версии 2.х? - Нет, не стоит. 100% есть более актуальная книга, для пистона 3.хА что ещё можно читать? - Питон сам по себе очень хорошо задокументирован, и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.htmlА как учить джангу? Нахожу только книги по джанге 1.х - У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой, из официальной документации.в ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать - Вот, пожалуйста, та же самая программа, но переработанная под язык Python http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём - брат, смотри книжки по ссылке в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
>>1465926 (OP)Бля, я мошенник, предыдущий не тот, что в шапке, а этот:>>1459370 (OP)>>1459370 (OP)>>1459370 (OP)>>1459370 (OP)
>>1465926 (OP)Заньюфажился в тред, котаны. Мне тут пришли няшные Node-mcu, сейчас освою учебничек ПРОХОРЁНКА и буду катать умный дом на малинке и нодах с использованием MicroPython :3
Сап, пр.Питонисты джангисты, подскажите, чего почитать и посмотреть, чтоб в джангу вникнуть.В питоне опыт есть некоторый, последние 2 года круды на экспрессе писал, а тут предстоит на проект с джангой перейти. Как не совсем обосраться?
>>1465892>которые учат что-то по несоответствующей документации>причем винят не себя, а сложнойсть фреймворкаЧто за хуйню ты себе навыдумывал? Тратят попытки у него, охуеть. Второй абзац в моем посте тебе ничего не сообщил? Была попытка разобраться без гугла путём пердолинья джанги - не получилось, пошел в гугл. Вывод - не нужно пытаться что-то сделать самому пока не получил начальные знания, понимание концепции в целом.> Пиздец. Хорошо, что таких долбоебов максимум на стажера возьмут, а потом нахуй выкинут.Имплаин я пытаюсь вкатиться на должность, а не от нехуй делать раз через раз ковыряюсь в этом вашем питоне.Пиздец ты инфантил, не надо так>>1465903>мам смотри я знаю англицкий!Блядь, сейчас этим хвастаться такое себе - любой бомж с подворотни нынче знает английский язык, другое дело что осваивать абсолбтно новые для себя штуки легче на нативном языке для не профессиональных погромистов, конечно
Обычно я встречал только подобное:parameter = "?rel_rhy=jingle"req = requests.get('https://api.datamuse.com/words' + parameter)Почему тут такой странный синтаксис?parameter = {"rel_rhy":"jingle"}request = requests.get('https://api.datamuse.com/words',parameter)Как это работает? Словарь подставляет ? перед rel_rhy и = перед jingle
>>1465974Если правильно понимаю вопрос, то иногда набор параметров заранее не известен, и если он у тебя в словаре, то переделать в urlencode его достаточно просто:params = {"key1": "value1", "key2": "value2"}url = "http://example.com?" + "&".join(["{}={}".format(p[0], p[1]) for p in params.items()])# url = "http://example.com?key1=value1&key2=value2"
>>1465983Разумеется, в реальности всё сложнее, тут не учтены запрещённые символы, вроде "+" и прочего. Поэтому напрямую этот код никто не пишет, все вызывают специальную функцию из ${framework_name}. Да и в стандартной либе это есть.
>>1465984Ох, я еще больше запутался. Но спасибо за ответ. Это же requests либа только умеет обрабатывать такой синтаксис, как я понимаю. Эксперементировал в конкатенации со str и dict и не вышло ничего.
аноны, подскажите нюфагу как через срезы и простые if,for,while реализовать такую задачку: нужно преобразовать заданную строку (например coooccck) в другую строку (c1o3c3k1). как это лучше сделать?
>>1465988При помощи модуля re, изучай - там в двух словах не объяснишь, у него формат вабще крайне сложный.
В Джанго (на хтмл страничке) можно как-то реализовать такой проход (пик1) по словарю без использования items()? По идее должно быть на пик 2, но нет, нихуя не работает.
>>1465988Циклом пройти по строке, считая каждый раз количество повторяющихся символов и вставляя это количество после первого символа вместо всех остальных. Вставлять можно срезами+конкатенацией строк. Короче бери и делай, дальше только вместо тебя всё написать. >>1465990Очевидно это задача на алгоритмы, а не регулярные выражения, там даже указано, что использовать можно.
>>1465988out = [st[0]]num = 1for i in st[1:]:__if i == out[-1]:____num += 1__else:____out += num____num = 1____out += iout += numout = ''.join(map(str(out)))
>>1465987Лучше полагаться на то, как это делает requests сама. Конкатенация, как уже сказано, неправильно обрабатывает спецсимволы.К тому же, конкатенация может прокатить только с get-запросом. Post ты через url не передашь, а requests сама сделает это за тебя, тебе остаётся только словарь передать вторым аргументом.
Достоный перекат, ОП - хуй, но хороший такой хуй.>>1466017> {{ d.key.key_nested }}Ты пишешь ерундуСделай просто> {{ key_nested }}
>>1466100> Нафига мне ключ?А нафиг ты по ключам итерируешься?Итерируйся по значениям или ключу+значению.
>>1466109Ну раз спрашиваю, значит нужно. Вроде как ничего сложного и необычного в этом нет, но возможность так делать почему-то, как я понимаю, отсутствует.
>>1466111Потому что ты глупость пытаешься сделать.Я уже написал, что если хочешь ключ - итерируйся по ключу, если хочешь значение - по значению, если надо и то, и то - юзай и то, и то.Ты или свой кейс показывай(возможно тебе вообще не словарь пригодился бы) или ебись сам.
Почему создание list такое долгое?Собираю список элементов из 5к объектов за 4секундыЕсть какая-нибудь быстрая альтернатива, чтобы можно было оперировать коллекцией по индексу? Set/Tuple тоже долгоКак обрабатывают листы по 1кк элементу?
>>1466171Взять го?Но скорее всего тупишь либо ты, либо твой комп. Мне лень делать бенчмарки, но я вижу задержку только при создании листа более 100к элементов.Попробуй модуль array.
>>1466179ну и еще у объектов переопределен метод __eq__, что увеличивает время проверки для List comprehension
>>1466171Списки создаются намного быстрее. Скорее всего у тебя твои объекты создаются очень медленно. Просто список на 5k объектов будет меньше чем за миллисекунду создан.
>>1466185>>1466171Посмотрел, список из 5k примитивных объектов создаётся за 8ms, а не за 1ms. Но это вместе с созданием объектов, на это ресурсы идут.1 миллион объектов за 0.85 секунды1 миллион словарей с одной записью за 0.32 секундыЭто на старом ноуте.
>>1466171>Есть какая-нибудь быстрая альтернатива, чтобы можно было оперировать коллекцией по индексу?Так диапазон же?
>>1466356> DjangogirlsOk> Курсы от мозилыХзЧем просто книги не устраивают?>>1466413Есть, книги по вебу лижат на я.диске
>>1465926 (OP)Сап, сертификации после прохождения курсов/специализаций от coursera котируются у HRов при устройстве на первую работу джуном? Вроде же серьезная платформа
a = ['123', '3444', '67888']raz = a.split()print (raz)AttributeError: 'list' object has no attribute 'split'???Чому ерор? Делаю как в примере https://younglinux.info/python/string.php
>>1466652> Делаю как в примереДелаешь не как в примере. Попробуй просто подумать, что именно ты хочешь сделать? На какие части ты хочешь разбить список строк?
Учусь по курсу МФТИ, решаю задачки по задавальнику. В принципе, всё шло более-менее, пока не дошёл до этого.Единственный успех, полученный мной в задании - закрашивает только первый коридор, но в итоге код становится какой-то слишком объемным. На данный момент после первого закрашивания точка просто врезается и крашится.Может делал кто, у меня от этих циклов голова уже кипит.
>>1466328>>1466333Переписал программу на C#Вместо 8 секунд получил 200 мсекА вы ебитесь дальше со своими .append
>>1466637И что, в погромировании всем действительно не похуй что ты там накурсировал себе? Это жеж как корочки из учебных центров получать
>>1466744Только дошел до этого задания. Решил сходу, предыдущее задание у меня вызвало больше проблем.
Аноны, в каком-то из предыдущих тредов была ссылка на курс каких-то задачек, но я благополучно всё проебал. Есть у кого ссылка? Буду очень признателен.
>>1466971http://judge.mipt.ru/mipt_cs_on_python3/labs/lab2.html#id3https://euler.jakumo.org/problems.html
>>1467137Первый мув райт нужен чтобы цикл начинать с проверки, а не с движения, так проще с последней клеточкой в главной линии
>>1467145Иногда подмывает пододвинуть кружок к стартовой точке цикла, но если пораскинуть мозгами, то почти всегда можно сразу всё в цикл пихать.
>>1467148Ну хз, если подумать концептуально, то цикл должен выполнять задачу внутри вот этой линии, как добраться до первой клетки в линии это не задача главного цикла. Я когда делал, нигде особо это запихивать не пытался
Кто-нибудь добрался до задания 32? Нихуя не могу понять. Вроде все закрашиваю что нужно, но почему то не засчитывает.И нафиг там регистр ax? В каком месте предполагается его использование?
>>1467153Я тот анон, который месяц назад это делал, тоже помню возникла с регистром проблема, гуглил, потому что непонятно было, что с ним делать. Но саму задачу сейчас я уже особо не помню, могу просто скинуть решение
>>1467160Скин, пожалуйста. Я вроде решил её, но кружок серый, типа "нештатное завершение". Хз, что нужно. Какой-то условие не выполняю, а какое - понять не могу.
>>1467166Шика-а-а-ароно.Разобрался. Только и нужно-то было счетчик поставить в уже готовое своё решение. Уффф!! Осилил таки все задачи робота.Анон, а ты графические задачи делал дальше по курсу?
>>1467173Ага, я делал все задачи из первых 9 практик. В контексте сортировок даже занял второе место в общем зачёте, не хватило одного очка до первого
А кто-нибудь работал с распознаванием QR-кодов с фотографий? Какие есть альтернативы Zbar'у? А то он потрясающе хуево распознает все с реальных снимков (причем обычным телефонным сканером подхватывается отлично).
Ребят, а поясните конкретный случай применения классов? Может подскажете какую-нибудь простеньку реальную задачу?Просто я вот сижу читаю книгу, мануалы на ютубе - там при пояснении классов рассказывают как СОЗДАТЬ МОДЕЛЬ СОБАКИ, или подобную хуйню, с подклассами вроде КЛАСС РЕТРИВЕР(СОБАКА), а в результате тупо создают экземпляр собаки с описанием свойств - тоже самое можно просто вбить в переменную. Какая именно должна стоять задача, чтобы начать описывать объекты экземплярами класса?
>>1467250А КАК БУДЕТ ЛАЯТЬ ТВОЯ СОБАКА?ТЫ СОЗДАШЬ ФУНКЦИЮ КОТОРАЯ ПРИНИМАЕТ СОБАКУ И ЛАЕТ?Я ХОЧУ ЧТОБЫ РЕТРИВЕРЫ ДЕЛАЛИ ГАВ ГАВ А МОПСЫ РРРРРР!
>>1467250Класс - это не только поля, это ещё и методы. Тоже собрался вручную их вбивать?Вообще, классы удобны тогда, когда у тебя есть несколько логически взаимосвязанных методов и есть общие переменные, которые классы могут использовать.А с наследованием хороших примеров не ищи, их очень мало. В теории наследование удобно, а на практике используется очень редко.
>>1467262>>1467262Ну тоесть грубо говоря это хранение свойств объектов + их автоматическая обработка? Но всё-же можно конкретный кейс, потому что лающую собаку я могу сделать так:dog = ['Puttie', 3, 'Retriever]print(dog[0] + 'make auw-auw')Мне хочется такой пример, в котором нельзя обойтись без классов
>>1467267Прям такого, чтобы нельзя, нет. До появления ООП же как-то писали программы, и ничего.Классы не дают чего-то принципиально нового, они лишь упрощают моделирование некоторых сущностей. На тех же сях вполне можно написать ряд функций, принимающих одну и ту же структуру, но по-разному с ней работающих.Не воспринимай классы как что-то фундаментальное. Классы лишь дают новые способы сделать что-то, и всё.
>>1467262>на практике используется очень редко.Бля, если бы. В книжках написано про синглтоны и фабрики, значит будем их везде юзать. Код стал в три раза длиннее и нечитаемым? Похую.
>>1467301Синглтоны и фабрики вообще не про наследование, а про оверинжиниринг. Сюда же ситуации, когда у абстрактного класса только один потомок, когда у интерфейса только одна реализация, и тому подобные.У наследования очень мало юз-кейсов, и синтетическое их выдумывание ни к чему хорошему не приводит.
>>1467314Да в Питоне не сильно по-другому это всё.Причём этот оверинжиниринг -- мэйнстрим в разработке, а не косяки отдельных разрабочтиков.
А вот смотри, анон. Я пробегаюсь циклом for по массиву данных, и на каждый итый объект данных мне нужно вернуть итое значение другого списка при соблюдении некоторых условий. Как мне в цикле указать, что мне в первой итерации нужно вернуть первое значение списка, во второй - второе и так далее?Грубя говоря, на псевдокоде это выглядит так:massiv = [1,2,3,4,5,6,7]spisok = [odin, dva, tri, chetire, pyat, shest, sem]for i in massiv:____if i.isdigit:_________print(spisok)Но питон, само собой, возвращает ошибку типа.Как мне сделать, что я хочу - вернуть итое значение списка?
>>14673981) isdigit - Это строковая функция, а элементы Massive принадлежат типу данных int, тоесть он в данном случае не подходит2) нумерация элементов списка начинается с нуля, а у тебя в массиве элементы начиная с единицы, тоесть надо сделать -1 к i из массива.
>>1467398>>1467393Ну или если нужна проверка, что i - это целое число, а не хуй от собаки, тогда вот так
>>1467400>>1467403Не, ребзя, это не то.Вот код зафаршмачил сюда:https://pastebin.com/3LRDm23kМне нужно, чтобы цикл проходился по содержимому жсона, и если там есть consumable с индексом 1 - он присваивал бы ему первое название из списка consumable_name_rus. Если с индексом 2 - то второе и так далее.В идеале - как мне вообще сделать, чтобы цикл сам перебирал индекса консумаблов? У меня их там десяток штук, и я не хочу расписывать каждый из них через elif.
>>1467411Я даже понятия не имею что такое джейсон, но если я тебя правильно понял - ты нихуя не понимаешь в циклах и нагородил каких-то костылей
>>1467393А ты беги не по значениям massiv, а по индексам:for i in range(len(massiv))ну илиfor i, value in enumerate(massiv)
Почему в Pycharm нет подсказок команд из импортируемого модуля, пока я руками не напишу первую, и только после этого меняется цвет from/import, и появляются подсказки с новыми командами?
>>1467423>но если я тебя правильно понял - ты нихуя не понимаешь в циклах и нагородил каких-то костылейВсе верно.Жсон - это JSON, похож на питоновский словарь с парой ключ-значение. Я его распаршиваю и получаю на выходе инфу - есть consumable 1 в количестве 5, consumable 2 в количестве 10 и так далее. Для распаршивания жсона у меня уже готовы все инструменты и словари с переводом условного "consumable 1" в удобоваримые "рунные амулеты". Единственное, что мне не удается написать - это цикл, который проходит по жсону и заменяет кодированный объект на мой перевод.>>1467424Я уже так пробовал. Проблема-то не в том, чтобы индексировать объекты массива, а в том, чтобы под каждый объект этого массива подставить итый объект из списка spisok. Я не понимаю, как в питоне сделать spisok - т.е. чтобы для каждого i цикла брался итый объект списка.Вторая штука - for i, value in enumerate(massiv) выглядит более правдоподобно, и если i - это элемент massiv, то как мне определить value?
>>1467432> Единственное, что мне не удается написать - это цикл, который проходит по жсону и заменяет кодированный объект на мой перевод.ну я тебе написал же цикл - по индексу в консьюмбл подбирается имя и выдаётся pcs, не подходит чтоли?
>>1467432А что конкретно ты хочешь видеть в результате?Вот получил ты '{ "consumable": { "1": 5, '"2": 10 }}'К какому виду тебе надо это преобразовать?
>>1467248А куда именно копать? Серьезно, я гимпом игрался уже с контрастом и яркостью, даже кроппил отдельно код - вообще не видит, сука. Причем грешил сначала на питоновскую либу, но нихуя - даже zbarimg не распознал.
>>1467435А, блин. Сорян, уже туплю после рабочего дня, проебался в глаза с твоим скрином. Офигенно, это то, что нужно! Спасибо и добра :3>>1467440Анон выше все правильно сделал. В итоге я хотел видеть это в таком виде:рунная хуйня: 5рунная залупа: 10
Короче поступил я в шарагу местную на погромизда, пришел на пару а там питон. Мне пизда? Поясните по хардкору, сложно ли освоить вот это все? Я тупой и ленивый, кста. Что меня ждёт? За сколько времени можно освоится и уровня какого-то достичь?
>>1467454Большинство о питоне на парах могло бы только мечтать, почти у всех кресты.Питон - очень простой язык. Если знаешь хоть что-нибудь ещё, проблем тем более не будет. Литературы по нему очень много, в том числе на русском.
>>1467461А питономакаке есть смысл осваивать кгесты? Без задач, просто чтоб было, чтоб понимать писечу чуть глубже, нежели чем довольствоваться полумагическим мышлением?
>>1467470Можно хорошо освоить сишку, этого достаточно для понимания. Кресты - очень сложные, профита мало. Сложные они из-за своих собственных абстракций, писечка тут не при чём. В принципе, можно освоить основы, но углубляться стоит, только если будешь на них потом писать.
>>1467485А я не про питон спрашивал, я спрашивал про писечку.>>1467477А что вообще почитать посоветуешь? Или нарпавления скажи, я погуглю
>>1467485Подумал, что под "писечкой" подразумевается ЭВМ, а не питон.Не, си-подобие - это про синтаксис, он не так важен. Семантика структурного программирования везде одинаковая.Си, в принципе, может ответить на некоторые вопросы, и магии в питоне будет немного меньше. Но магия - это не то чтобы проблема, это лишь следствие абстракций, которые и в сях есть.Но это всё философская хуита. Думать нужно скорее о том, будешь ли использовать си для решения каких-то задач, например, для написания расширений для питона. Если таких задач нет, то и толку от изучения тоже не будет.
>>1467487Я слишком глуп для того чтоб развернуто тебе ответить. Ну писечка просто же ну, не понимаешь чтоли?
>>1467486По C? K&R - лучшее, что есть для начала. Неустаревающая классика.По крестам не подскажу, но точно не Страуструп (наисложнейшая книга, уж точно не для тех, у кого питон - основной).
>>1467471Только что сгенерил код и распечатал его, сфоткал на телефон в хуевом качестве, и все распозналось.Потом обратил внимание, что проблемные фотки были бОльшего разрешения (8256 x 5504). Попробовал уменьшить до 2048 по длинной стороне, и... все задетектилось отлично. Похоже, слишком большие изображения хуево распознаются. Непонятно, правда, почему.Но спасибо тебе энивей, буду пробовать ресайзить перед распознаванием, хотя это какой-то пиздец, как по мне, если честно.
>>1466678>>1466742Да, точно, потом увидел что так делать нельзя.Тащемта, делаю лабу. Не знаю с чего начать.Задача.Получен массив строк data. Разделителем полей является знак табуляции. 1. Напиcать код функции "цена", которая будет выводить название и розничную цену товара заданного цвета "цвет". При запуске программы будет вызвана основная функция main. Все остальные функции будут вызываться из нее. Цвет вводится с клавиатуры.2. Проанализировать исходные данные. Изучить их структуру и определить, как получить доступ к искомым данным.В приведенной задаче необходимо получить название, цвет и розничную цену. Эти данные содержатся в каждом элементе списка – строке, состоящей из полей, разделенных знаком табуляции. Для решения задачи необходимо перебирать в цикле элементы исходного массива-списка и с каждым элементом производить следующие действия: получить значения полей из строки, используя метод split, необходимая информация находится в полях с индексами 1 (название и цвет) и 3 (цена), необходимо извлечь цвет из поля и сохранить эту информацию в новый массив для дальнейшего использования.Ну вот я и пытался применить split к списку.Сейчас что имею:data = ['1000 QW 2000 2200 QopEw 12 12112', '1001 BW 2001 2300 QopEq 13 12113', '1100 DW 2700 2900 QSFEA 16 12113']N = len(data)for i in range(N):g = data.split()print(g)Принт мне выводит итый элемент списка data, но элемент этот стоит последним.Т.е. я хотел в g вытянуть итые элементы.
>>14674981) Ты можешь for row in map(str.split, data): ...2) Ты можешь это же, но явно: rows = [e.split() for e in data]; for row in rows: ...3) Либо ты можешь просто for line in data: row = line.split(); ...Вот range() тебе тут точно не нужен, ты не в Си.
>ForeignKey >ManyToManyFieldКак понять?Мне что теперь, бросать все и бежать учить SQL? Или пока и так сойдет?Если можно, поясните в кратце как оно работает?
>>1467527>Мне что теперь, бросать все и бежать учить SQL?Что-нибудь про основы БД прочитать очень надо бы.
>>1467694не в плане плохой/хороший, а в плане что углубленное изучение его вообще нафиг ненужно. написал на листочке повесил возле ПК делов
Hi 2ch, такой трабл, я когда сохраняю в Atom (ctrl+S) выскакивает окно консоли, и когда запускаю (f6) тоже выскакивает пустое окно консоли, а потом консоль с выполняемой программой. Что за дичь пацаны?Я определил, что это действует на всех файлах.py в одной папке. Также когда открываю файл с этой папки, то выскакивает консоль, а потом прячется.
>>1467708А ещё окно консоли выскакивает произвольно (или не совсем произвольно) - когда создаю новый файл, открываю, меняю код
>>1467823Ну, да?Ну тоесть я правильно понимаю, что прописав в классе __exit__ и обратившись к нему через with - можно сделать класс, который при возникновении ошибки успеет что-то сохранить, но следом программа всё-равно вывалится с ошибкой?
>>1467834> Корректная обработка окончания работы;> Лаконичный синтаксис начала/окончания работы.Вроде всё.
>>1467838Ну и как бы под капот, в эти все методы ты можешь вставить различный функционал. Но это очевидно.
>>1467838>Вроде всё.Ну ясно. Тогда, пожалуй, углубляться в понимание этого не буду, просто сохраню в голове ссылочку на метод, на случай, если всё-таки пригодится. >>1467839А как правильно вызвать with относительно Класса, чтобы активировать методы enter и exit? У меня в книге приведена такая конструкция:with MyClass():____print('Выполняем')____MyClass.calc(2, 0)выглядит как-то супер-коряво
>>1467848>____print('Выполняем')>____MyClass.calc(2, 0)это тот язык который заявлял что beautiful is better than uglyлол
>>1467848>with MyClass():> ____print('Выполняем')> ____MyClass.calc(2, 0)Супер хуйово.Норм выглядит так:>with MyClass() as your_class:> ____print('Выполняем')> ____your_class.calc(2, 0)
>>1467861Да ну это понятно, просто суть не меняется вроде, и получается что конструкция вызова экземпляра класса слишком длинная, почему бы тогда просто было не ввести метод __exit__ который срабатывает в случае аварийного завершения работы без всяких там with? Нахуя этот with?
>>1467863> который срабатывает в случае аварийного завершения работы без всяких там withКак деструктор в сях? Логично, да. Но тут вот так.Вопрос почему стоит задать лично гвидо или тем, кто трудится над новыми релизами пистона.Ну так, на мой скудный ум - в сях ты сам за собой подчищать должен, тут же работает сборщик мусора. Хочешь ловить ошибки - лови их в коде, который юзает твой класс.
>>1467822Он позволяет не забыть освободить ресурс, который тебе больше не нужен.В С++, например, оператора with нет, потому что нет сборки мусора и деструктор объекта автоматически вызывается когда объект выходит из области видимости. В языках же со сборкой мусора так нельзя, потому что на объект может быть неучтенная ссылка из каких-то ебеней, и освобождение ресурса будет только при сборке мусора, которая происходит в неопределенный момент. Для определенности тебе нужен либо with, либо вызывать освобождение ресурса вручную.
>>1467866Да нет, with не лично гвидо придумал, это общая для языков со сборкой мусора тема. Либо with, либо try/finally, либо и то и другое вместе.Собственно with это такой try/finally, в котором в finally-блоке вызывается финализатор.
>>1467871Извини, не совсем понял, поясни пожалуйста, каким образом with освобождает ресурс вызванного через него класса? Я же ньюфаг
>>1467875> with не лично гвидо придумалНе знал, спасибо за инфу.Я просто ничего кроме питона/с не тыкал.
>>1467877Ну допустим у тебя есть файл. Ты пишешьdef peka(yoba):_f = open(....) #взял ресурс_f.write(yoba)_f.close() #освободил ресурсДопустим, f.write бросает исключение. С этим исключением ты отвалишься куда-то вверх, а f.close вызван не будет. Хуево. Поэтому надо писатьdef peka(yoba):_try:__f = open(....) #взял ресурс__f.write(yoba)_f.close() #освободил ресурс если нет исключения_except error as e:__f.close() #освободил ресурс если есть исключения raise eТак себе конструкция. Поэтому придумали try/finally блок. Он выполняется всегда, не смотря ни на что.def peka(yoba):_try:__f = open(....) #взял ресурс__f.write(yoba)_finally:__f.close() #освободил ресурсВсе заебись. Даже если f.write вызывает исключение, finally будет выполнен всегда. Но finally с ЕДИНСТВЕННЫМ объектом встречается тоже часто. Поэтому можно навернуть еще больше сахара:def peka(yoba):_with open(...) as f:__f.write(yoba)Естественно при этом будет вызываться не close(), а что-то более абстрактное.
>>1467890Анон, не пинай, я всё-равно до конца не понимаю>Допустим, f.write бросает исключение. С этим исключением ты отвалишься куда-то вверх, а f.close вызван не будет. Хуево. Но ведь программа мигом отвалится, и будет уже похуй - был ли вызван f.close, или не был? ну, по крайней мере в плане высвобождения ненужных ресурсов>Даже если f.write вызывает исключение, finally будет выполнен всегда. Но finally с ЕДИНСТВЕННЫМ объектом встречается тоже часто. Поэтому можно навернуть еще больше сахара:Так а что сделает with, если применять его с классом? Закроет класс? Но ведь класс и без того закроется, если не будет ссылок на него, а если ссылки есть - закрывать нельзя. Поудаляет атрибуты класса? Но ведь они сами поудаляются опять же если нет ссылок, и наоборот если ссылки есть - удалять нельзя. Не понимаю. Не понимаю что делает with и в какой момент он это делает
>>1467903>Но ведь программа мигом отвалитсяс хуя ли?может, ты где-то выше поймаешь этот эксепшен и будешь работать дальшеа потом еще раз попытаешься с этим файлом поработать. а он не закрыт. хуй знает, что там твоя имплементация в этом случае делать будет
>>1467914>>1467910Аноны, я не спрашивал про with в отношении open файла, я спрашивал про приаменение with в отношении классов, и как он поможет сберечь ресурсы
>>1467922В том, что класс как объект должен сам закрываться если него больше нету ссылок, и не должен закрываться если ссылки на него есть
>>1467925Не-не, я может и не прав и не так понимаю, так что можешь пинать меня если уверен в своих словах
>>1467923Это не совсем верно. Сборка мусора происходит не сразу после того, как не осталось ссылок, а по одному лишь компилятору ведомому алгоритму. То, что на объект не осталось ссылок, не вызовет его финалайзер сразу же. Это тебе не c++.Поэтому и приходится юзать эти конструкции, что на финалайзер нельзя полагаться.
>>1467931Ладно, хорошо. Учту. Но заниматься таким, как я понимаю, надо уже в очень крупных проектах, где за расходом ресурсов надо следить?
>>1467926Не знаю почему аноны делали упор на ресурсы.Но как упрощение восприятия кода: видишь with, знаешь что что-то открывается и закрывается - тратишь меньше времени на восприятие. Работа с объектом визуально выделена отступами, что так же упрощает понимание.Во-вторых, ты запихал в __enter__ то, что ты делаешь до, в __exit__ что делаешь после, надеюсь не нужно объяснять, что это пишется один раз, а далее ты уже работаешь с with не задумываясь про пре и пост действия. Очевидно, что объект не обязательно удаляется после работы с ним.Хули развели срач тоже не понимаю, есть такая конструкция в петоне, пользуйтесь если надо, а если не надо идите нахуй не пользуйтесь.
>>1467933>Но как упрощение восприятия кода: видишь with, знаешь что что-то открывается и закрывается - тратишь меньше времени на восприятие.Вот это понял, спасибо.>Хули развели срач тоже не понимаю, есть такая конструкция в петоне, пользуйтесь если надо, а если не надо идите нахуй не пользуйтесь.Ну так я хочу понять, какие именно функции удобно и полезно использовать, для этого прошу тут какие-нибудь реальные кейсы применения. А вабще, подобные вопросы не возникали у меня после прочтения Укуса питона. Сейчас читаю книжку от Прохорёнка, которая прям как по списку проходится по многим возможностям питона - вот тут вопросы то и начинают возникать. Например, была глава про самописные итераторы на базе функции - хорошо, тут всё понятно, может пригодиться. Сейчас вот дошёл до самописных итераторов на базе класса - вот тут возникает вопрос - нахуя? Конструкция гораздо сложнее, выполняет то же...
>>1467933Двачую этого. Например, в документации питона есть пример, где с with автоматически сохраняется и восстанавливается состояние графического контекста. Или, например, with может автоматически блокировать общий ресурс для эксклюзивного использования. Это удобный сахарок, вот и все. Можно без него, но с ним код читаемее.
>>1467937> какие-нибудь реальные кейсы примененияВыбирай: https://docs.python.org/3/library/contextlib.html?highlight=contextlib
>>1467932В любых проектах надо следить. Вот не закроешь ты файл или порт в одном потоке, а в другом он понадобится, и будет ошибка. К тому же, например, файл может не записаться, пока его не закроют. Короче, не следя за ресурсами ты обрекаешь себя на появление трудноуловимых ошибок.
>>1467933>Не знаю почему аноны делали упор на ресурсы.>Но как упрощение восприятия кода: видишь with, знаешь что что-то открывается и закрывается - тратишь меньше времени на восприятие.Это что-то называется ресурсом.
>>1467945> Это что-то называется ресурсом.>>> with html.bold() as fragment:... ____print('Hello', file=fragment)<b>Hello</b>Что тут называется ресурсом?
>>1467932Скорее это не про крупные проекты, а про библиотечный код. В больших проектах в любом случае будут свои библиотеки для нужд проекта, а малых не обязательно.Это относится и ко многим другим конструкциям языка.
https://pastebin.com/bPV7AMtDХлебушек снова выходит на связь.Нужно в автора засунуть книгу, когда пробую сделать это, вставив в него:book = models.ForeignKey('Book', on_delete=models.SET_NULL, null=True)то выдает такую вот ошибкуcatalog.Author.book: (fields.E303) Reverse query name for 'Author.book' clashes with field name 'Book.author'. HINT: Rename field 'Book.author', or add/change a related_name argument to the definition for field 'Author.book'.catalog.Book.author: (fields.E303) Reverse query name for 'Book.author' clashes with field name 'Author.book'. HINT: Rename field 'Author.book', or add/change a related_name argument to the definition for field 'Book.author'.Вроде бы в ней всё понятно, даже хинты есть, но подсказки не помагают, да и подобная вставка прокатывала в других классах что находятся выше.Почему так происходит? Помогите.
Привет ребята, есть проблема с Atom, недавно начал глчючить: выскакивает консоль просто так и исчезает. Это происходит само по себе (во время работы), когда сохраняю, когда отрываю файл. Пробовал удалить (удалял всё - включая файлы в AppData) но это не помогло. Кто знает из-за чего это может быть, как исправить?
try: text = input('Enter something --> ')except E0FError: print('Why you did E0F')except KeyboardInterrupt: print('You canceled an operation.')else: print('You entered {0}'.format(text))
>>1468361потому, что else сработает только если не будет исклюений. Добавь finaly - оно сработает в любом случае.
>>1468361В EOF должна быть буква, а не 0. Вызов KeyboardInterrupt не получается в PyCharm (ctrl - c), вместо этого выделяет строку в консоли
>>1468192А разве в BookInstance не должно быть отношение один с одним, а не один со многим. Это же, как я понял, копия книги. Попробуй поменять на OneToOneField.
>>1468397Он вообще ебанутый.Запись в таблице Books это и есть блядь инстанс, т.е. экземпляр книги. А он ебашит отдельную таблицу для этого.
>>1468192Наверное проблема в related_name. То есть у тебя и в Авторе метод book_set и в Инстансе book_set.
>>1468397https://developer.mozilla.org/ru/docs/Learn/Server-side/Django/Admin_siteside/Django/Home_page>Добавьте встроенный список перечня Book в представление списка Author , используя тот же самый подход, который мы применили для Book/BookInstance.В уроке никаких оне ту оне фиелдов мне не давали, а значит и в задачке он не нужон.>>1468409Это типа статус книги, и вообще не мой мопед, ну. Ты чего такой агрессивный?>>1468417Релатед наме не помогает, и в уроке о нем ничего не говорили.
Сап, помогитеНужно допустим взять date, date_epoch и maxtemp_c из апи сайта погоды, но maxtemp_c в "day": {}, как его оттуда взять? Что я не так сделал? Если удалить ["day"] и maxtemp_c то программа работает правильноА так выдает ошибку:line 11, in get forecast_data = data["forecast"]["forecastday"]["day"]TypeError: list indices must be integers or slices, not str
>>1468357ну ты ибан))делай так...try:__text = input ('enter...')except:__print('SERVER GOT SOME ERROR ALARM ALARM')
Аноны, как вы живете с исключениями? Понадобилось мне воспользоваться модулем winreg, и весь код стал состоять из сплошных вложенных try: winreg.DoSmth(); somefunc() except OSError. Возвращало бы оно None - никаких проблем бы не было. Что почитать, чтобы научиться вместо этой лапши из try писать что-то читаемое?
>>1468910> пайшармДля больших проектов возможно. Но для мелких - слишком перегружен, отовсюду лезут эти ебучие подсказки-костыли, как будто я не знаю аргументов у print'а.
>>1468933Ну как бы очевидно, что данные на входе нужно проверять. Уже внутри можешь без трая крутить данными, но лишняя перестраховка никогда лишней не будет.
>>1468918...class Author(models.Model): """ Model representing an author. """ first_name = models.CharField(max_length=100) last_name = models.CharField(max_length=100) date_of_birth = models.DateField(null=True, blank=True) date_of_death = models.DateField('Died', null=True, blank=True) book = models.ForeignKey('Book', on_delete=models.SET_NULL, null=True, related_name = 'book_blyat')...>Reverse query name for 'Book.author' clashes with field name 'Author.book'. HINT: Rename field 'Author.book', or add/change a related_name argument to the definition for field 'Book.author'.
>>1468944Можно подумать ты знаешь аргументы всего и вся. Да и следуя твоим же словам - аргументы принта нужны людям которые большие проекты пилят? Нет?Всё чем перегружен пайшарм - комфортом пользования, написание кода без лишних телодвижений, вплоть до встроенного SSH
>>1468910Откуда у бедного вкатывальщика возьмутся деньги на нормальную пекарню и лицензию питоншарма?
>>1468956Мне проще доки покурить по конкретному вопросу, чем терпеть эти выскакивающие подсказки на все случаи жизни.
>>1468998Документация telebot?Тоже недавно ебался с этим, ниче не получилось. Буду читать. Английский уровень говно говна. Буду сидеть с переводчиком, значится.
Сап анон. Нужна админка для типа_FAQ с древовидной структурой.раздел1 |подраздел1 |статья1 |статья2 |подраздел2 |статья1 |статья2 раздел2 |подраздел1 |статья1 |статья2 |подраздел2 |статья1 |статья2 Подскажите, пожалуйста, есть какое-то готовое решение?
>>1469106Нет, мне нужен питоний вариант с хранением в БД, чтобы другие сервисы могли в эту БД залезать и дергать ЖСОН. жсон будет генерить editorjs
Последние пару дней сидел на codewars и стал стараться уложить любое решение в одну логическую строку. На работах тоже принято так делать? Как разбивать строки так, чтобы было максимально читаемо?
>>1469182>ряя пистрон читаемость кокок>будем выёбываься и сокращать что было как у настоящих прогромистов!
>>1469182> На работах тоже принято так делать?Только если навредить хочешь.> Как разбивать строки так, чтобы было максимально читаемо?Как с функциями примерно. То есть разбить действия построчно так, что бы на одной строке выполнялась одна логическая группа действий(форматирование / лист-компрехэншн / and etc.).> стал стараться уложить любое решение в одну логическую строкуЗачем?
>>1469189>зачемТак в топовых решениях>одна логическая группа действий(форматирование / лист-компрехэншн / and etc.).Я гуглил длинные лист компрэхэншены, и судя по ответам на стаковерфлоу https://stackoverflow.com/questions/311588/how-to-indent-python-list-comprehensions люди делают примерно такие штуки, как у меня во втором пике.
>>1469191> Так в топовых решенияхТак у тебя цель какая? Пистон выучить/скилл прокачать или заниматься спортивным погромированием?> как у меня во втором пике.Второй пик - Ок.Стаковерфлоу даёт самое простое и рабочее решение, интегрировать его в проект и улучшить - твоя задача.Я бы не юзал компрехеншены с вложенностью больше 2 и тебе не советую. То же самое с обилием условий.
>>1469193Так в спортивном программировании вообще нет разницы, как что выглядит и сколько занимает логических строк. А топовые решения там просто такие, которые собрали много флажков 'clever' и 'best practices', поэтому и повторяю. >компрехеншены с вложенностью больше 2То есть мне лучше сумму от генератора вынести в отдельную функцию? Понял, там где-то такие решения тоже были
>>1469200Как я уже писал, всё зависит от твоих целей. Если спорт - похуй на красивость. И тут больше нечего тебе подсказать, по крайней мере мне.> То есть мне лучше сумму от генератора вынести в отдельную функцию?Как я уже написал, второй пик выглядит более-менее ок ещё. Там как раз вложенность 2 (условие ж не считается). Я бы добавил развернутый коммент с пояснением работы данной йобы и всё. Но смотри в начало, насчёт твоей цели.
>>1469200Не очень существенно, но в целом более читаемо, если локальная функция будет определена. Ещё твой код можно оформить в фунциональном стиле через filter, это имеет смысл, если выносить генератор в отдельную функцию. Я бы скорее вместе с проверкой на равенство вынесhttps://ideone.com/7RBLrrЭто просто чуть более гибкий подход, но реально на однострочниках не важно. Тебе всё равно в первую очередь надо вникать в логику подсчёта суммы. Лучше в комментарии просто пример один привести, как считается, а реализовать так, как у тебя.Проблемы с чтением кода начинаются тогда, когда код большой и уже не свежий. Если ты постоянно пишешь в стиле генереторов списков либо в функциональном стиле, то и читать более-менее легко будет. Проблема не в том, чтобы строчку прочесть, а в том, чтобы понять смысл всей магии, которую ты делаешь. Хороший стиль какие-то тестовые и контрольные значения приводить.
Нормально ли, что автоформаттер так переносит ? После круглых скобках? Руками бы я так не делал, зачем?
>>1469182Нет в этом ничего хорошего, читаемость дропается в ноль.Можно вообще всю программу написать в одно выражение, но смысл? Код должен быть читаемым, а не "О ,смотрите, я могу сжать 10 понятных строк в одну длинную".
>>1469226Спасибо, я о решении с filter() тоже думал, но это, понятное дело, только если выносить проверку в отдельную функцию. Я так понимаю, это должно быть удобно, если в будущем потребуется как-то изменить условие. >пример один привести, как считаетсяВообще должно быть достаточно понятно, если к проверке прикомментить 'example: 89 == 81 + 92'Я, кстати, где-то читал, что в коде вообще комментов должно быть по минимуму, или вообще не должно быть, типо всё понятно из самого кода. Но в случае с однострочниками это имеет смысл? Тогда в моём первом пике нужно прикомментить, например 'example: "Bad" - > "2 1 4"' >>1469338Ну как я понял из треда, у меня пока ещё нормально. В первом это одно логическое действие -- форматирование строки, во втором мы просто по заданному диапазону собираем список элементов, удовлетворяющих условию, если условие пояснить, то остальное тривиально.
За сколько примерно осваивается фреймворк уровня джанго?Я же заебался блядь нахуй, спокойно саморазвиваться в сериалах советуйте годноты уже не могу - иногда монитор разъебать хочется из за того что некоторое количество вещей просто так в голове не укладывается а ведь так уютно было когда основы пистрона учил
>>1469589Мне чет вообще питон разонравился, когда начал пытаться в веб-программирование на нем - PHP для этого оказывается в разы удобнее.
>>1469593Пхп анально ограничен вебом, что демотивирует, так что пистрон первым языком самое то, я считаю
>>1469607Стыдно сказать, завтыкал на генерации ссылок, и вообще во всем этом url говне Вылез в джангу сразу после того как освоил основы пистрона, от того и проблем с продвижением дохуя. Но ничего, по ходу дрочева в джанге осваиваю всякие классные штуки о которых в моей мурзилке по пистрону ничего не говорилось.Сейчас на 7 части пикрилейтеда, оставил на завтра
>>1469601Щас уже все не вспомню, давно на питоне был проект, но мне дико не хватало всякой мелочи типа isset, empty, ??, ?:И еще были какие-то вечные проблемы с подключением модулей - pycharm видит, питон не видит. Иногда просто были ситуации, когда не ясно, как их вообще подключать. Скорее всего это было из-за кривой архитектуры проекта, но все же.
>>1469603Угу, сам щас этим страдаю, потому что однотипные проекты на пыхе уже подзаебали, надо валить в другие направления, но вот куда, пока не ясно.
>>1469613Сначала был десктоп на C++/MFC, потом десктоп на Java/Swing, потом заразился PHP и на нем просидел аж 5 лет. Щас по сторонам смотрю, куда можно сбежать.
>>1469618Начал с курса МФТИ, сделал всего робота, сейчас перекатился на курсеру - слушаю уже второй курс по Python for Everybody Specialization, там про структуры данных питона.Пока вкуриваю как волшебным образов таплы превращаются в листы и обратно.
>>1469642https://developer.mozilla.org/ru/docs/Learn/Server-side/Django/%D0%92%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5
>>1469579Если тебе координаты вектора не надо менять после того, как он создан, то кортежем. Считай просто так, что список - это переменная, а кортеж - константа. Если тебе не нужно менять координаты вектора после того, как вектор создан, то кортеж, если же у тебя какая-то динамичная система, то или список, или какая-нибудь другая структура.
кроме криво работающей демки рисующей кубики майнкрафта на этом говне есть стоящие трехмерные проекты?всё время хочется вкатиться, но хочется поковырять готовые проекты, посмотреть на говнокод а я люблю говнокод... особенно на питоне... покажи мне говнокод других, попугаться
>>1469182хороший код это не тот, который записан в одну строчку.Хороший код, это когда он читается новичком, как будто код сошел со страниц учебника
PEP8:Be consistent in return statements. Either all return statements in a function should return an expression, or none of them should. If any return statement returns an expression, any return statements where no value is returned should explicitly state this as return None, and an explicit return statement should be present at the end of the function (if reachable).
>>1469852Алсо попробуй этого клована.Много картинок, схемочек, свистоперделочек. Стильно нет, модно, молодежно!
>>1469852Новичку не нужно ничего подробного, это хуйня, больше 200 страниц не бери. Укус питона почитай, потом покодь что-нибудь, там в конце укуса есть ссылки на список задачек + задачки на разных сайтах порешай, или какой-нибудь курс приглянувшийся попроходи. Потом уже что-то подробное читай
>>1469852Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь. Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию питоньего кода - PEP8, чтобы от зубов отскакивало. Когда напишешь свою первую имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent. Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce. Отсос хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.
>>1469921Я попробую.Dive into python подходит только для тех, кто переходит с другого языка и хочет как можно быстрее вкатиться. Для новичка не подойдёт.
>>1469936Против "Погружения", стандартной библиотеки и PEP8 ничего не имею. А вот советовать не самые мощные веб-серверы я бы не стал. Рекомендую uWSGI позади nginx.
>>1469936>для тех, кто переходит с другого языка и хочет как можно быстрее вкатитьсяСейчас бы в 2019 не знать пару языков и не пользоваться божественным VS Code, для написания всех программ мира
аноны, пытаюсь считать с клавы список, затем преобразую его в множество, и снова пытаюсь его преобразовать в список. в итоге получаю TypeError: 'list' object is not callable . гугол грит шо так надо преобразовывать, а ошибки связанной со мной ваще нет. в чем может быть проблема? кодик тут https://pastebin.com/dVRkqEgd
>>1469972У тебя где-то раньше ошибка https://ideone.com/lLUat2Скорее всего ты как-то переопределил list - например есть переменная с таким именем
>>1469976да, только то в том что в jupyter notebook эта прога чистая. то есть там только эти 6 строчек, больше ничего нет
>>1470000но проблема то только в том что почему то в разных интерпритаторах программа ведет себя по разному. на идеоне вон спокойно работает
>>1470010забей анон. ноутбук мозги ебурил. я его перезапустил и он заново почему то нормально заработал. хуй знает че ему надо было
>>1470001> но проблема то только в том что почему то в разных интерпритаторах программа ведет себя по разному. Так идеон это какая-то веб хуита, ты локально через консоль у себя загоняй и смотри работает или нет.
Часто вижу, что в вакансиях, связанных с экспериментальными исследованиями, спрашивают Python.Может кто сталкивался, какие примерно задачи с его помощью обычно решают, для обработки данных вероятно?
>>1470483Ого.Но я не о вакансиях "программист" или "математик", а про узких специалистов из других областей. Физики или инженеры, например.
Я там в прошлом треде писал, что на собес ходил и всё хорошо прошло, ждал собеса с директором.Так вот, дирик меня отхуесосил и отказал.Держу в курсе.
>>1470556Печально, чувак. Поделись стори хотя бы: и выговоришься, и может чего анон подчерпнёт для себя.
>>1465926 (OP)Поучился полгода, устроился на галеру. Узнал от коллег про эликсир, прощерстил тырнет, пописал пару примерчиков. Язык то топовый. Планирую уговаривать других что-нибудь написать на нем на работке.Что сами думаете?
>>1470633js, vue, django, flask, asyncio, tornado, +- docker тыкал и jenkins. Ну и базовый набор с гитом и постгресом.
Пацаны, в Питоне есть нормально сериализуемые датаклассы? Не хочу дрочиться с __init__, не хочу ебаться с проблемами с nested сериализацией.Хочу написать нужные поля, указать их тип, собрать из них любую иерархию вложенности и без проблем все это сериализировать и десериализировать. NamedTuple имеет проблемы с nested сериализацией, по SO попробовал пару решений то одно вылезет, то другое. Это же простейшая задача - запилить классу и без писички мисички их сериализовать, которая решена в других языках с полпинка. Почему в Питоне это так сложно и как сделать правильно?
>>1470681Есть такая хуйня:https://habr.com/ru/post/415829/Но она из коробки не может в сериализацию, добавляется она, в частности, так:https://stackoverflow.com/questions/51286748/make-the-python-json-encoder-support-pythons-new-dataclassesВообще, почитай о метаклассах и об аннотациях типов, может и выйдет что-то.
>>1470708Спасибо, стоило написать про новые датаклассы с 3.7 - про них я читал, но они с 3.7 только, а слесарьфлоу работает с максимум 3.6.> может и выйдет что-тоПиздец, как же я ору временами с Питона - не мочь нормально в такие простейшие вещи как классы и рекурсивный проход по дереву объекта (сериализованного объекта) нахуй.
>>1470727Чего ещё ждать от динамически типизированного языка. Тут не городят новые типы на каждый чих, а всегда юзают dict и пох.
>>1470681Есть встроенный модуль pickle, он умеет питоновские объекты превращать в поток байтов и обратно. Но ето опасно.https://docs.python.org/3/library/pickle.htmlЕсть стандартные модули json, csv чтобы преобразовывать в соответствующие форматы, ну с собственными объектами придется чуток поднапрячься. Вообще много всего в стандартных либах естьhttps://docs.python.org/3/library/markup.htmlhttps://docs.python.org/3/library/persistence.htmlhttps://docs.python.org/3/library/fileformats.htmlА можешь посмотреть и на сторонние инструментыhttps://github.com/marshmallow-code/marshmallow
>>1470560>>1470573>>147058820 минут разговора с ЧСВ-дириком и всё.Из общения он узнал что я в основном работал один и никогда в паре с тестироващиками, это и стало причиной отказа, по крайней мере судя по фидбэку.Я не унываю, аноны, просто обидно что было такое приятное собеседование(побеседовали на около-питоновское), а вот так всё кончилось.
>>1470735> Чего ещё ждать от динамически типизированного языкаУдобства? Как например удобно работать со всякими нампаями и пандасами. > Тут не городят новые типы на каждый чих, а всегда юзают dict и пох.А контракт между микросервисами описывать на использованном клочке туалетного словаря? Типичный же кейс - по сваггер спецификации сгенерить классы (или наоборот), сериализовывать данные на входе и выходе в них, в тестах описать контракты в моках и пануватi. Не, это не пайтон вей. Пайтон вей - написать вручную классы, обсираться из-за несоответствия, обсираться все равно из-за сериализации, а с нормальным моком веб сервера просто пойти нахуй или поднимать в тестах фласк из говна и палок с роутами для моков.
>>1470591Челы подумали, что в традиционных тредах легко наступить на грабли, и продвигают асинхронщину. А asyncio - хуйня, чтобы написать асинхронный веб-сервер.
>>1470757> ЧСВ-дирикомЗато сэкономил себе время и не будешь работать с неприятным тебе человеком.> я в основном работал один и никогда в паре с тестироващикамиЕго поинт в том, что ты у нас домашний не командный игрок и все вытекающие отсюда проблемы.
>>1470756> Но ето опасно.> Warning The pickle module is not secure against erroneous or maliciously constructed data. Never unpickle data received from an untrusted or unauthenticated source.> JSONНу это просто пушка!> jsonРаботает нормально только со словарями. Десериализовать в класс начинаются боль и питон.> А можешь посмотреть и на сторонние инструменты> https://github.com/marshmallow-code/marshmallowВыглядит интересно, спасибо, посмотрю.
>>1470761> Его поинтЯ его понимаю, но от этого менее обидно не становится.Я ж блять не отбитый на голову, не зашуганный, нормально общаюсь с коллегами и могу работать вместе, но.С фронтэндерами/мобильниками/ML работал жи.
>>1470773Ну это ты считаешь, что ты не сыч и будешь участвовать в скрам-приседаниях. А со стороны того манагера выглядит, что поток соискателей и поди залезь каждому в голову и выясни правда это или нет.
>>1470809Не кажется, но ты ожидал другого? Фреймворки создают, чтобы облегчить и ускорить работу программиста, автоматизировать при возможности. Если хочешь именно кодить, просто потому что тебе это нравится, то рынку ты не нужен. А фреймворки для гуманитариев нужны.Так и живём, так и катимся в светлое коммунистическое будущее , блеать.
>>1470871Угу, ведь сайты-визитки и лендинги - это такой уберхайлоад, что с ним только php справится, как же иначе-то.
>>1470853Я написал CV алгоритм для детекта некоторых вещей. Как на вход алгоритма будут попадать картинки? Даже асинхронщина требует сериализации.
привет двачикПомогити, мне нужно из React, используя Axios отправить файл на Django-Rest, но не просто отправить, а создать какой-то пользовательский вью, чтобы пропарсить этот файл xls и полученные данные записать в базу. Наведите меня на что-нибудь, чтобы я понял, как это сделать
>>1465926 (OP)Програмач, стоит задача писать данные в базу (mysql).Данные заполняются юзером при запуске скрипта. Они имеют строгий формат (некоторые поля должны быть a-Z, некоторые только числовые), но юзеры бывают тупые (могут совать неподходящие символы в данные, типа символов перевода строк или пробелы) или даже саботажники.Чем такие вещи фильтруются-валидируются в питоне?
>>1471003Это когда на снежной горке ты пускаешь своего ребенка по ледяной дорожке, но не смотришь что внизу и вообще забываешь о нем навсегда как только ты отправил его вниз.
>>1471035Нет, это не полноценная асинхронность, ты описываешь схему с очередью задач без переключения. Как в JS, если без async/await.Но в нормальной асинхронности ты можешь ждать результат. Ты пустил ребёнка с горки и ждёшь потом, когда он вернётся.Питон про нормальную асинхронность, и в JS она тоже уже давно потдержена.
>>1471109Есть актуальный мануал по джанге на русском?Кроме документации.Помню, читал что-то оче годное, но по старой версии.
Хлебушек снова выходит на связь, например.Впорос по {{ form }}:А вот я хочу заместо renewal date (пик 1) видеть кастомное название, кириллическое, например, но не хочу превращать код в "хуй = пидр жопа водка балалайка ельцин".Как реализовать?
>>1465926 (OP)В прошлом году вышел python 3.7, в этом году выходит python 3.8, видимо, в следующем году выйдет python 3.9, что, в 2021 грядет python 4?
Закономерный шаг.Синхронные фреймворки перестали быть нужны, они не обеспечивают максимальную утилизацию ресурсов.Как апач перестал быть нужен со своими потоками, уступив молодым асинхронным серверам, так и фреймворки туда же уйдут.Если хотят выжить - придется усидеть на двух стульях.Я джангу давно не использовал, а вот распиливать Джанго монолиты на микросервисы на aiohttp уже приходилось.Хз, выгорит, что у них или нет.
Блядь, я только сегодня джангу осилил, а вы мне тут еще какую -то асинхронность тащите.Охуели в край уже, сука!
>>1471252> Джанго монолиты на микросервисы на aiohttpРаспиливаем на работе сейчас NodeJS монолит на aiohttp/tornado микросервисы. Я когда узнал об этом - охуел.
>>1471031Как и везде, вот ты считал данные, а перед тем, как что-то еще дальше с ними делать, тебе надо их проверить, и если проверку они не проходят, то дальше их не передавать, а пользователю предъявить, мол, чо за хуйня, нормальные данные давай. Если есть графический интерфейс, то можно прям такие поля в форме сделать, что неправильные данные просто не вводятся, например, сделать так, что буквы в числовое поле просто не будут вводиться, но полностью проверку в коде это не заменяет.Как проверять? Если случай простой, можно и ручками, вон у строки есть методы всякие, там isalpha, isnumeric, isspace, count, и многие другие, еще есть стандартный модуль re для регулярных выражений, можешь регулярками проверять, в конце концов, строки это итерируемый объект, можешь просто посимвольно пройти и проверить. Если ты уже используешь какой-то фрэймворк для своих целей, может, там уже есть свои спецсредства для валидации. Хочешь специальных фрэймворков для валидации данных, есть и такиеhttps://github.com/vinta/awesome-python#data-validation
>>1471308Через ОRМ или aio-psycopg2(или типа того).У нас первый вариант, т.к. до записи в БД данные хранятся в кафке и всё ок.
>>1471235Использовать гораздо более подходящие для асинхронных неблокирующих веб-серверов go и jvm-языки там, где производительности блокирующих веб-приложений уже недостаточно.
>>1471334> куда и как будет двигаться синхронная Django.Продолжать в будущее, а куда еще? Использование неблокирующей асинхронщины оправдано только при высоких нагрузках в приложениях, где треды большей частью времени сычуют в blocking io. Во всех остальных случаях это или лишний геморрой, или тот же blocking, если дристануть подливой и нечаянно блокировать тред. Проще говоря, для большинства питоновебприложений все это нахуй не всралось и вполне хватает настроенного wsgi с каким-нибудь gunicorn и отсайзенным количеством воркеров с name_your_favorite_web_framework
>>1471257>>1471303Чаю. В JS не успел написать компонент на фреймворк нейм, а он уже успел устареть, абандониться контрибьюторами и удалиться из npm.
>>1471350Я лять 7 лет назад использовал ангулар, я сейчас использую ангулар, чуть позднее, ну пусть будет лет пять назад, я использовал express и не стесняюсь его иногда забрать сейчас.Где быстро меняющееся it?
>>1465926 (OP)Почему джава господа и рубисты получают на порядок больше питонистов? С чем это связано? CV и ML в рассчет не берем.
>>1470681https://pydantic-docs.helpmanual.ioУмеет изкаробки генерить json schema и вроде как даже с вложенностью
>>1471384Какой я тебе пыхер, маня. Все хорошие разработчики дебажат логами. Потому что лог 1. Выдает тебе срез стейта.2. Работает в асинхронной, многопоточной и любой другой среде.3. Намного меньше проблем с воспроизводимостью.Сначала криворукие привыкают к дебаггеру, а потом ноят о том, что асинхронный код - сложна.
>>1471374Джава, потому что тырпрайз, банки, где хуевая работа и что бы удержать прогееров нужно платить много нефти.По руби ...Не слежу, но предполагаю, что вам кажется.Питон нужен многим, и большим и маленьким, и русским и зарубежным, и уровень ЗП размывается.А популярность руби последние годы помножилась на ноль, зато в глаза бросаются зп вакансий в америкосские конторы, которым нужны мидлы/сеньеры. Там руби ещё более менее жив, ибо много легаси говна было создано в последний стартап бум.
>>1471387Ты дурак штоле?Хорошие разработчики дебажат наиболее продвинутым инструментом.Если есть возможность использовать дебаггер - замечательно, это намного удобнее и быстрее чем перезапускать, добавлять логи, снова перезапускать.Если нет, то просто выбора нет - логи так логи.Но отказываться от дебаггера? А ты отказаться от использования рук не хочешь? Это откат в каменный век разработки.
>>1471367Дебажить нужно дебаггером. Логи для саппорта и разбора инцидентов. Невозможность нормально поставить брейкпоинт где угодно это пиздец.
>3.5 релизнули 4 года назад>нормальной асинхронной orm так и не завезли, пиши запросы руками>асинхронные фреймворки представляют из себя набор "напиши все сам, вот тебе роуты и библиотеки с 10 звездочками">до сих пор нет нормальных либ для data definition, вот тебе 2.5 мертвых библиотеки, остальное сами пиши>интрепретатор мы оптимизировать не будем, скорость НИНУЖНА>местный ООП представляет из себя цирк с конями>нормальные треды тоже не нужны>сам язык используется для прототипирования или требует жутких костылей для нормального продаНо если бы где нибудь было лучше и за это бы платили, то я бы свалил
>>1471140Ну хуй с ним с ельциным. Практика встраивания кириллицы в код существует, или это пиздец какой нехороший тон?
Короче, вы меня нихуя не поняли сам виноватПроблему решил добавлением label, о котором в моей мурзилке ничего не говорилось
>>1471485Потому что число после точки в версии - это не дробная часть или что-то вроде того, а совершенно отдельное число, никак не связанное с первым. Это всё равно, что писать, например "3; 7".
>>1471454Питон не про многопоточность (GIL GIL PIDOR) и промышленное программирование. Питон про скрипты (админов и сетевиков), различные алгоритмы и прототипы. Тащемта говоря, не заинтересуйся питоном научное сообщество и примазавшиеся шлимазлы и не будь в питоне всякие DS, CV и ML, то был бы Питон где-то подле Руби, только подальше от веба (потому что рельсы удобнее джанг) и поближе к админам, которые решили забыть про регулярные выражения Перл и выучить хотя бы один язык программирования. Но в этом нет ничего плохого. ЯП это просто инструменты для своих задач и ничего не мешает применять различные языки для различных задач, где они наиболее эффективны. Глупо ограничивать себя один ЯП и мужественно превозмогать те вещи, которые в других языках делаются с полпинка. >>1471456Есть. Полтора. Котлин, который обожают все, кто на нем писал, и Раст который после Крестов почти как Котлин для ведроебов с ограничением ихней 6 джавы 150 летней давности.
>>1471515>Питон не про промышленное программированиеСука, я сейчас сижу на проекте, где мы делаем высоконагруженную апликуху и сильной повязкой на финансовых вопросов. Единственный плюс это скорость написания фич, как только стартап выстрелил начили все ОПТИМИЗИРОВАТЬ и возникает ощущение, что нахуй пистон выкинем.
>>1471518УхухухухухухуЯ каждый раз питонистов спрашиваю, в чем кайф и смысл питона.Все в один голос отвечают: охуенно быстрое прототипирование. А потом, мол, мы перекатываем на нормальные языки.Ну, ок, а в чем проблема прототипировать сразу на целевом языке?Это, блядь, не самолет, который сперва надо из говна вылепить, чтобы посмотреть, чо получится.
>В том и смысл вышки - получить фундамент. Стеку тебя не научат, да. Образование слишком консервативная вещь, редкий препод угонится за изменениями стека со своей программой обучения.Так что стек за тобой, а фендамент за вышкой. Плюс, анон как и всякий человек, ленив, а значит вероятность самостоятельного изучения фендаменталки - 0,1%.Хочу получить фундамент без вуза регистрации и смс.Вышкобоги, накидайте запросов для гугла
Ребят, вопрос от нуфага:возможно не только к питону относитсяКак я понял, нет смысла пытаться сделать так, чтоб программа, которую я написал кодв случае неверного ИНПУТА рестарталась, ведь это делается уже в других прогах, видимо. Ибо try except работает только один раз, после второго неверного инпута все крашится.Я зря с этим морочусь и создаю лишнюю головную боль? Или надо до конца пилить?Например делаю задание про месяца года и ввожу не число, а букву "а". В первый раз try/except говорит "введите число, а не название", а во второй раз все вырубает.
>>1471585Делай input в цикле, который не прервётся, пока ты не введёшь корректное значение. Разумно такой ввод в отдельную функцию вынести, если надо вводить несколько значений.def my_input():while True:try:value = int(input())except:print('stuppid monkey')continueelse:return value
>>1471346>Продолжать в будущее, а куда еще? Использование неблокирующей асинхронщины оправдано только при высоких нагрузках в приложениях, где треды большей частью времени сычуют в blocking io.В тредах много гемора с блокировками, которые тебе самому надо выставлять, асинхронщина в этом плане проще. Синхронно ты ничего не сделаешь, как только уходишь от модели запрос-ответ, как начинаешь какой-то поток данных обрабатывать, сокеты и т.п. Но сокетов и подобного нет, проще синхронно жить, без корутин и без потоков.
>>1471289Сам переписываю софтину с node.js на asyncio+aiohttp. Но это шило на мыло, везде асинхронщина, в ноде она чуть проще и понятнее, просто сам js как язык говно, хотя может даже быстрее.
>>1471553Быстро сделали мвп, быстро нашли клиентов и начали делать деньги, теперь можно и расслабиться, грамотное проектирование заняло бы гораздо больше времени. А тут проект уже приносит прибыль, скорость внедрения фич начинает уступать надёжности в продуктовом плане и пора что-то менять
>>1471602Да, ничего, индийский код просто. Проще так будет:def my_input():while True:try: return int(input())except:print('stuppid monkey, try again')
>>1471553В питоне ты как раз делаешь грамотное проектирование, быстро и прозрачно. Вот если вдруг станет актуально сильно разгонять, то может потом придётся полностью или частично на другие платформы переходить и разные кривые хаки придумывать. Но для этого надо, чтобы взлетело, и чтобы в твоей задаче это было актуально.
>>1471606Наверное идиотский вопрос задам, но все же, на всякий случай.Вот у меня получается мои месяцы тоже функцией идутМне вот функцию с неверным инпутом под нее засунуть или уже после запуска самих месяцов ставить? Или до них? Или вообще похер?То есть:def mesyaci() :.... тут хуйня всякая.... def netotinput() : Так?
Выбирал между "Django 2 в примерах. Меле" и этой книгой.В итоге выбрал книгу Дронова (хоть и не люблю многостаночников).Книга оказалась хорошей, это не первая книга автора по Django. Предыдущая была слабей, как по подаче материала так и по решениям которые автор приводил.
>>1471654Куча всякой мелочи изменилось, но умеренно.Самое принципиальное, что сильно изменилось, это обработка url
>>1471555Войтивайти, плз. > дизморальщикиТы дурак? Никто не говорит, что Питон не нужен. Питон нужен. В своих задачах где он хорош. Где он не хорош, питонистам следует расширить экспертизу и выучить и использовать другие языки, а не мужественно превозмогать авгиевы конюшни.
>>1471600Как только ты уходишь от модели запрос-ответ и начинает работать с каналами и потоками данных, тут-то нужно съебывать с Питона.
Почему комментарии внутри функций сделаны через """ hui """ ?Почему нельзя использовать обычный оператор комментария # hui ?
>>1471684Я посмотрел курс по диагонали перед тем как его пройти.Почему-то """ такой комментарий """ там считается дефолтным для функций
>>1471688>>1471696Ты можешь из коментариев кода генерировать документацию, там уже есть разница между видами коментов
>>1471711Тру питонисты начинают каждую строку многострочного комментария с #. В любой ide это делается автоматически или одним хоткеем.
>>1471553>Это, блядь, не самолет, который сперва надо из говна вылепить, чтобы посмотреть, чо получится.MVPPROOF OF CONCEPT
Сап двач, ньюфаг выходит на связь, короче суть такая, есть задача классиечская на проверку правильности скобок, поэтому мне нужен стек, могу конечно и сам написать, но я думаю в питоне уже есть своя реализация. Как она называется?
Ха, я нашелfrom collections import dequefrom queue import LifoQueueобе эти хуйни подойдутвсе, вопрос закрыт.
>>1471798Бля, я понимаю, что я кормлю жирноту, но тот стек, что в этой задаче нужен это одна ебаная переменная
Посоны, а кто-нибудь может мне помочь с ткинтером? Написал небольшой парсер файлов игры, и нужно через ткинтер забубенить вызов функции отрисовки и перевода содержимого файлов, но никак не могу догнать, как это сделать среверс-инженирить похожие проги не получилосьНе хочется тут палить код, так что телега fakeaccount123123
>>1471832Ну можно вложенный счётчик сделать, на который будет переходить при другом виде скобок. Их всего три вида, там значит и так никаких особых проблем не будет
>>1471844Не, не получится. Так можно учесть нужное количество скобок, но закрывать их можно в произвольном порядке, и это пройдёт проверку.
>>1471846Да ну, это некрасиво получится.Но вообще реально, я сейчас прикинул. Ну ладно пусть список вместо переменной, всё равно алгоритм на несколько строчек.
>>1471848Мне в голову пришёл такой функциональный стиль, когда встречая скобку другого вида рекурсивно вызывается та же функция, но уже считающая по другой скобке, я бы так сделал.
>классическая задачу на проверку скобок, чтобы наработать навык работы со стеком>нет, хотим изъебываться на ровном месте.
>>1471862Нормальная тема, я ещё не проходил всякие синтаксические алгоритмы>>1471870В питончике это RecursionError: maximum recursion depth exceeded
>>1471892Задача, проверить корректно ли открыты и закрыты скобки. Случай с одним видом скобок:(()()) - корректно(()))(() - некорректноно для этого достаточно одной переменной. Интереснее с несколькими видами ([{<>}])([(])) - некорректноТут уже стек нужен, но в питоне это совсем просто, можно обычный список в качестве стека использовать
Покончил с основами джанги йеей!, ага.Ну вот запилю я сейчас свой первый говноблог, а дальше что? Накидайте идей для пет прожекта, где я смогу реализовать весь функционал фреймворка, чтоб можно было его ковырять и допиливать в ходе изучения остального стека
>>1471915Такое спрашивают, когда изучаешь базовые алгоритмы и структуры данных. Тащемта, если не знаешь такого, ты по умолчанию дебил унтерменш и для всего юзаешь списочки ака массивы
>>1471933Кидай почитать чего, только без выебонов. Мурзилку какую-нибудь базовую, для понимания предмета в целом. Потом расширю когданибудь
>>1471937Algorithms in a Nutshell George T. Heineman, Gary Pollice & Stanley SelkowГрокаем алгоритмыТ.Кормен - Алгоритмы. Построение и анализ
>>1465988import itertoolss = "coooccck"result = "".join(["{}{}".format(k,len(list(g))) for k, g in itertools.groupby(s)])
Аноны, помогите. Стоит задача:Использовать алгоритм bfs для нахождения кратчайшего пути. Алгоритм тут(https://pyfiddle.io/fiddle/ef79dbfc-a65f-456d-84e7-e114716ebb32/?m=Saved%20fiddle). Мне нужно вывести его длину и все точки, через которые он проходит. Длину я подсчитываю, а как записывать вершины, через которые прошёл - не понимаю. Подскажите, что нужно добавить.
>>1472022>Подскажите, что нужно добавить.Добавить в твою даунскую голову, что раз ты выбрал прогать, знай, тебе никто никогда не поможет.А теперь ебись с этим.Совет: решения утром эффективны лучше всего.
>>1472022??????? ?????????????? ???????? ???? ?????? ??????, ???????? ????????? (?????????) ??????. ?????, ????? bfs ?????????????? ??????? ??????? ? ???? ?? ??? ???? ??????? ???????? 3.
>>1471963Спасибо, запилю свой говноблог для закрепления пройденогоматериала и обмажусь этими твоими алгоритмами
С пылу, с жару, после собеса с яндиксом по скайпу:AAAABBCC -> A4B2C2+https://pastebin.com/eSfEPVP0Я уже и забыл как подобное решать, пиздец. 40 минут мучений над двумя ебаными задачами.Благо собеседующий сам на пистоне лишь немного пишет, поэтому в паре моментов не доебался.
>>1472254С анаграммами совсем просто.Создаёшь словарь, где ключём будет отсортированное слово, а значением - список слов-перестановокдальше идёшь по входящему спискуfor word in input_words:sorted_word = sorted(word)if sorted_word in ana_dict:ana_dict[sorted_word].append(word)else:ana_dict[sorted_word] = [word]в итоге получаешь словарь списков.
>>1472254Первая задача:https://ideone.com/yiLs2bНо правда когда решал, умудрился в двух местах протупить, сначала туплы вместо списков, из-за чего ошибка исполнения, потом забыл нулевой элемент из вывода убрать. Наверное, если бы так решал перед собеседователями, то тоже дёргался бы. Вообще, наверное это такие примитивные задачки, чтобы понять, что перед тобой не случайный человек. На стрессе наверное нормально дёргаться и тупить. На самом деле очень много ведь случайных, кто и такое не решит, но пытаются куда-нибудь устроиться.
>>1472254Ты главное не сказал, после этих задач на какое-нибудь дальнейшее собеседование зовут? Или не понравилось, как ты решал?
>>1472274> чтобы понятьДумаю да, и на ждуна и на мидла одно и тоже.>>1472276> Ты главное не сказалНу я ж написал, что собес только закончился, соответственно результатов пока нет. Да думаю что не прошёл, ну и похуй.Я ему про рэбит и распределённые вычисления, а он мне "а запили как мне анаграммы", забавно.
>>1465926 (OP)Помогите, кто разбирается в tkinter. Необходимо в окне вывести символ с индексом и символ со степенью(на пике пример, где v с индексом, а метры в кубе). Я пока что придумал только делать одну строку одним шрифтом, затем записывать вторую строку делать ее шрифтом меньше и сдвигать вверх на пару пикселей для степени и сдвигать вниз для индекса(на второй пикче как это должно быть, но для этого приходится дописывать 2 строчки дополнительные и еще перебирать координату х, чтобы подогнать тройку эту), но может есть другой способ?
>>1472257Сортировать каждое слово это, наверное, довольно долго, быстрее будет проверять через перевод слова в set символов
>>1471606>>1471595В общем, либо я ебанутый, либо лыжи не едут, но у меня получилось тоже самое. Точнее я сначала поебался еще, но ни к какому решению это не привело, буду дальше смотреть что, да как.
>>1472387О, точно. Вроде использую юникод для греческих и латинских букв, а про индексы и не подумал. Спасибо за помощь.
Чё ваще нужно знать в этом питоне знать, чтобы галеру найти?Программированием не увлекался особо. Так немного поковырял недельку. Бота для телеги написал. Парсер для вк захуярил.Функцианала не много, чисто для себя делал, но при желании могу много плюх накрутить.Этого ведь мало для трудоустройства? Или там где без опыта работы берут именно такие и нужны? Чё вы там учите такого годами?
>>1472445хуй знает, я так вакансии полистал - там везде всякая разная хуйня - базы данных, вёрстка, и прочая хуйня, которая к питону не относятся, какие-то определенные модули/фреймворки. Тоесть при трудоустройстве нужен обычно не только язык программирования - а стак технологий которыми ты владеешь.
>>1472448Мне даже просто не понятно, где для чувака без опыта работы граница того, чем он владеет. Вот например могу я те же простые запросы делать. Могу ли я говорить, что знаю бд?
>>1472453Ну я бы сказал, что базовые знания по БД имею. А так - сам хз как правильно на работу устроиться - тоже ньюфаг.
Есть ли ваще смысл в этих ваших модных асинк-либах или ими пользуются ради того чтобы пользоваться? Реал настолько профитно как все любят писать на всяких сайтах сомнительного содержания или можно забить хуй на эту асинхронность и писать как диды?
>>1472475>>1472486Да уже в них смысл есть, причём немалый.На собес спрашивают активно, не в первую очередь, правда.Но конечно же их не стоит учить в первую очередь, всё же для синхронных либ сопутствующие батарейки лучше развиты и спрос на них высок.>>1472445Выбери область в которую хочешь катиться, и тогда анон подскажет стек примерный.
Аноны, как насчёт небольшого конкурса?Игра запиленная на PyGameПилите игру, прогресс разработки заливаете на гит(любой сервис), аноны оценивают и победителям приз, к примеру 200$(рубли/битки and etc. в эквиваленте).1. Тематика любая;2. Пара отдельных направлений - 2D и 3D(в каждом направлении свой победитель и свой приз);3. Поощрительные призы за не призовые места, но за код/душу/музыку/анимацию and etc;4. Уже ведёшь разработку? Похуй, можешь принять участие. Главное - активность.5, Со сроками определимся, но как по мне, хватит - 2-3 месяца.Есть желающие принять участи?
>>1472504Меня на собесе минут 40 спрашивали о работе асинхронных библиотек, плюсах, минусах, работе с синхронными либами, как избегать таких ситуаций и т.д. А на деле у них там из асинхронщины только задачи в очередь кладутся. Я тогда знатно пригорел. Ну нахуя вы дрочить на собесах так, словно у вас неебически мутированный стек и вы прям на С дописываете комплекты к либам, когда на выходе имеется обычный json, crud и очереди?
>>1472561Такие конкурсы же делают в гд. Да и тут по факту половина работы дизайнерская, и странно это pygame'ом и вообще питоном ограничивать
>>1472563Хм, можно расширить до Kivy/PyQT.Но мне кажется, что разрабы на Kivy будут в неравных условиях. Хотя, можно разделить призы ещё и по платформам.>>1472565> Такие конкурсы же делают в гдТам конкурсы на быструю разработку встречал только, а тут немного другое.> Да и тут по факту половина работы дизайнерскаяДа, но есть куча готовых ассетов, поэтому вай нот?> странно это pygame'ом и вообще питоном ограничиватьВ этом и суть. На пайгейме не очень много свежих и играбельных игр есть, почему бы не оживить немного?
>>1465926 (OP)Помогите с проблемкой. Осваиваю ООП. Написал код с графическим интерфейсом, который проводит определенные расчеты, на пике часть от этой программы. Сейчас решил представить этот код в виде классов. Создал класс с постоянным полем, который содержит строчки, необходимо вывести эти строчки в главном окне, но если внутри класса передавать аргумент root, то выдаёт ошибку. Каким образом засунуть эти строчки в главное окно? Вот ссылка на код, если надо https://pastebin.com/LgtTquDE
>>1473413ООП на примере Python - плохой выбор. Но дело твоё.Когда присваиваешь непосредственно внутри определения класса, ты создаёшь статическое поле. Тебе же нужно создавать его в экземпляре. Короче, присваивай все поля в конструкторе.class LabEnt:.def __init__(self, root):..self.labels = Label(root, ...)...a = LabEnt(root)