Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации https://dumpz.org/ - можно постить листинги, не требует регистрации https://pastebin.com/ - для листингов, регистрация не обязательна https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
Вопросы-ответы: А стоит ли читать Лутца, том номер N? Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
Стоит ли читать %книга_нейм%, если там питон версии 2.х? Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
А что ещё можно читать? Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом? Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
А как учить джангу? Нахожу только книги по джанге 1.х У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
Двач, помоги, я уже реально заебался и не понимаю что делать, есть 2 питон файла, в одном функция, пытаюсь импортировать, пишет хуй, добавил __init__.py все равно хуй, пайчарм импорт красным подсвечивает, причем даже примеры которые работают, которые я брал из интернета, не понимаю что делать
>>1616454 Принципиальных вроде как нет, но, например, завезли f-string, и после этого пользоваться всякими .format не хочется. Словари стали упорядоченными более или менее, OrderDict уже как бы и не особо нужен. Датаклассы какие-то прикрутили, альтернатива namedTuple, как я понял(а я не понял). И всякие такие мелочи. Ну вот читаешь ты свою книгу, а потом открываешь какой-нибудь код и видишь непонятные колдунства, которых в книге не было, оно тебе надо?
>>1616996 Если ты хочешь строго следовать рекомендациям по написанию кода 2001 года, то никто не в праве тебя останавливать. Только не тащи нам сюда потом свои односимвольные переменные, а то как же, больше 80 же НЕЛЬЗЯ!
Какой вывод можем сделать? Длина строки решается один раз в начале проекта и вся команда этому следует. Брать больше 120 не нужно, так как в гите как раз 120 блина строки и будут переносы.
>>1617061 >intellij по умолчанию 120 символов, например. Так, в иде на яве для программирования на яве 120 умолчание, при чём тут, спрашивается, питон?
>Вот тут разработчик ядра Python говорит что считает 90 оптималным значением. Во-первых, даже близко не 120. Во-вторых, говорит, а не пишет где-то в документации. Видео на ютубе, даже с конференции, всего немногим лучше ответа на стаковерфлоу.
>так как в гите как раз 120 блина строки На гитхабе ты хотел сказать. Подстраивать стиль написания кода под конкретный сайт, это как в 2000 подстраивать стандарт mp3 музыки под воспроизведение на myspace.
Так что? Ты где-то прочитал про 120, или ты так агрессивно отстаиваешь значения по умолчанию в intellij?
>>1617085 PyCharm основан на intellij, вот причем тут петон. И да, повторюсь, ты можешь строго следовать устаревшим рекомендациям, главное чтобы код получался элегантным. Если у тебя получится - отлично! Но судя по твоему первому скриншоту - пока не очень выходит. 120 это общепринятое число для других языков. Какую нахуй документацию я тебе должен показать?
>>1617197 >Но судя по твоему первому скриншоту - пока не очень выходит. Это не мой скриншот. >120 это общепринятое число для других языков. Это ты тоже по видео на ютубе узнал, или колоночки на каком-то сайте посчитал? > Какую нахуй документацию я тебе должен показать? Да хоть какую-нибудь. Пока ты пришёл, бурлескнул про то, что "сейчас норма 120", а когда я тебя спросил, где ты об этой норме узнал, ты показал свою снобскую рожу и отправил меня искать "в интернете". После пары постов рассказов о том, что официальные рекомендации устарели, выяснилось, что "в интеренете" — это надо было длину строки по умолчанию на гитхабе и в одном IDE, на котором пайчарм основан, за золотой стандарт принять. Действительно, как это я сразу не нашёл такую очевидную и доступную рекомендацию "в интернете", и не начал мгновенно по ней действовать. Про видео, которое ты притащил, даже не говорю, там никакими 120 даже и не пахнет.
>>1617197 > 120 это общепринятое число для других языков. У меня на работе стандарт 180. Не питон. Не всегда получается уместиться из-за некоторых нюансов оформления кода.
https://pastebin.com/kLWj5LeW ЧЯНТД? Почему функция для определения ключа для максимального значения в словаре работает корректно, а для минимального - нет? Как-то контринтуитивно для моей хуёвой интуиции.
>>1616384 (OP) Где в Джанге есть мини-туториал по обычному менеджменту данных типа CRUD? Столкнулся с тем, что в приложении приходится много создавать, модифицировать и удалять записи. Я в принципе могу это сделать, но в данный момент я нахуярил кучу view в стиле new_product (для создания записи), mod_product (для изменения), del_product (для удаления). Выглядит уебищно и громоздко, если ничего не сказать. Как это сделать изящнее?
>>1617302 Ну не совсем. min/max от словаря, по крайней мере, возвращает ключ, не соответствующий максимальному значению в словаре. Похоже, что min(dct) и max(dct) вообще равны min(dct.keys()) и max(dct.keys()).
>>1617295 Через функцию указанную в key по сути формируется новый массив из него выбирается минимальный максимальный. У тебя для каждой функции получается условно [0, 0, 0, 0, 1, 0], для max это работает, для min просто берется первый ноль
У нас есть двоичный numpy-массив размерностью NxM и единичный массив произвольной длины: 1xK, как записать данные из этого единичного вектора в двоичный массив максимально годным способом? Если 2D массив окажется заполненным, а в единичном векторе еще остаются данные (может быть и такое), то операция все равно сличается завершенной. Если данные в 1xK векторе закончатся раньше чем массив заполнится, то оставшиеся пробелы в нем надо заполнить неким DEFAULT значением
>>1617485 Для начала: как бы записать эти данные в двумерный массив? Допустим, в этом векторе 1xK данных всегда ровно хватает чтобы заполнить все NxM ячеек Это ж numpy, поэтому полагаю надо использовать срезы или страйды (которые я в душе не ебу как юзать). Голый последовательный перебор значений в одномерном векторе при помощи цикла for нерационален, т.к. в перспективе таких записей придется делать дохрена
>>1617489 >Если 2D массив окажется заполненным, а в единичном векторе еще остаются данные (может быть и такое), то операция все равно сличается завершенной. >срезы np.reshape(K[:N*M], (N, M))
Приветик, хочу написать скрипт, парсящий udp/tcp конфиги для openvpn и сортирующий их по странам/пингу Собственно данные спарсил, получилось более 3к записей. И тут у меня встал вопрос; а каким способом это все проверять? Неужели придется отдельно скачивать каждый файл и вытаскивать из него ip сервера для пингования? Или может кто-то подскажет более элегантный вариант? https://pastebin.com/nRnr3dfx
def myfunc(): while True: num = queue.get() print(num) queue.task_done()
mylist = [] for x in range(10): for i in range(10): for i in range (10): mylist.append(i / 10) queue = Queue() for t in range(3): t = threading.Thread(target=myfunc) t.setDaemon(True) t.start() paths = [] for i in mylist: queue.put(i) queue.join() print(len(threading.enumerate()))
в итоге получается 31 тред, вместо желаемых мной 3 (ну это понятно, эта штука в цикле), но как сделать иначе, чтобы новые треды не плодились и при этом все треды при деле были?
>>1617497 Да, катит Не врубил правда, как и зачем вот это работает: >>1617493 После 1го решения можно взять срез из одномерного вектора как k = k[:N*M] и уже проводить операцию np.reshape(k, (N, M))
>>1617507 >Не врубил правда, как и зачем вот это работает >np.reshape(K[:N⛧M], (N, M)) Сразу делает срез и с ним работает. Решейп не инплейс, так что зачем отдельной строкой брать срез заранее? >После 1го решения Не очень понял, первое решение >>1617491, если len(K) == N⛧M Второе >>1617493, если len(K) > N⛧M Третье >>1617497, если len(K) < N⛧M
>>1616384 (OP) Джавист на связи Понял, что не могу нормально вкатиться в Питон из-за излишне высокого интеллекта. Парню, прогающему на статическим типизированном языке и соблюдающему святые заповеди ООП банально не выйдет адекватно прогать на херне вроде Питона или ЖС. Печаль
>>1617529 Все так. Бывает надо написать что-то по быстрому, и питон это просто типа школьной арифметики 2+2. Мозг даже не успевает хоть чуточку напрячься. Ни для чего серьезного явно не подходит. Мимо плюсист.
>>1617529 > Джава В твоей джаве всё может нахер полететь из-за неправильной строчки в xml, а генерики лишь приятный сахарок над кастингом в Object и обратно.
>>1617579 >Все так. Бывает надо написать что-то по быстрому, и питон это просто типа школьной арифметики 2+2. Мозг даже не успевает хоть чуточку напрячься. Ни для чего серьезного явно не подходит. Мимо плюсист.
>>1617534 Блин, и правда. просто я не очень умный Ладно, на деле оказалось, что необязательно прям сохранять файл, чтобы его просмотреть. Осталось придумать, как этот говнокод ускорить и/или прикрутить многопоточность.
>>1617529 При желании на питоне можно писать как на джаве, просто этого делать не нужно. Если программировать на жабе сложнее, то ты легко должен быть способен писать на языке проще. Плюшки питона типа динамической типизации делают его скорее более гибким. Дело скорее в том, что твой высокий интеллект видимо недостаточно высок, чтобы воспользоваться чем-то новым для тебя. Или привык, что когда пишешь из говна и палок, компилятор найдет все твои косяки и сообщит о них?
Как гуру ооп может пояснишь, почему в твоей жабе предпочитают использовать делегирование вместо наследования? При том что последнее одна из тех самых твоих пресвятых заповедей ооп.
Прочитал пост "джависта" выше и что-то вспомнил, недавно смотрел запись с какой-то конференции по пайтону, там выступал товарищ то ли из гугла, то ли из фейсбука, то ли из инстаграма, то ли откуда - не суть, но суть в том, что по его рассказам как минимум в инстаграме уже усиленно перепиливают кодовую базу на питоне под статическую типизацию. Тащемта, как это обычно бывает, от больших компаний мода быстро расходится по индустрии, так не станет ли пайтон статически типизируемым через пару годков?
>>1617647 Ооо, спасибо. Очень помогло. >>1617650 >>1617648 Да нет, 1к урлов вполне работает без прокси, просто со слипом на 0.1-0.2 мс между каждым запросом правда в итоге получается не 30 сек канеш
>>1617675 Сука, это говно ещё и не переводит нормально, я же сам смотрел код, он точно обращается к гугл транслэйту, почему у него тогда результат не такой, как в обычной веб форме
>>1617684 Дениска, ты главное не переживай так. Не думаю, что тебе критично иметь перевод точно такой же, как в вебе, так что юзай то, что удобнее и клади болт
>>1617750 Ну знаешь, возможно это именно с моим пробным десятком текстов, но в веб форме перевод солидно лучше, прямо очень заметно. Я собираюсь ещё попробовать две вещи: разбивать текста на отдельные предложения и апи яндекс переводчика.
>>1617649 >Или привык, что когда пишешь из говна и палок, компилятор найдет все твои косяки и сообщит о них? Всегда так делаю, не пользоваться этой функцией языка, всё равно, что принципиально не пользоваться, например, декораторами.
эквивалентно foo = task(foo) task возвращает новую функцию wrapper, поэтому дальше, когда ты пишешь foo(a, b=100) это уже будет реально вызов wrapper(a, b=100) где-то в недрах которого вызывается исходная foo
Главное, что нужно запомнить про декораторы, это что @deco def foo(a, k): ____pass
>>1617649 Кто тебе сказал что наследование - святая святых? Инкапсуляция это святая святых Когда ты хуяришь наследование только чтоб обьеденить части кода (при том что часть методов суперкласса в принципе не юзаются), ты даун. Без вариантов
>>1616384 (OP) Шалом, правоверные. Вкатился в питон, почитываю Лутца, прошёл курс на курсере, но не могу понять, что читать/смотреть/проходить чтобы вкатиться в датасайенс. Нашёл на курсере один курс от яндекса/мфти, так там какая-то хуйня вместо подачи материала и задания на первой неделе уровня устанавливаем питон, отсылаем скриншоты сокурсникам. Куда воевать то ёпт.
>>1617791 Typing уродство обычно, в том виде, как в питоне уж точно.
Уродливый громоздкий негибкий синтаксис, какой-либо оптимизации реальной не происходит и реальной проверки рантайм. Хотя можно втыкать костыли, оформить проверку через декоратор, например, и включать для отладки нужных функций.
Ты как бы получаешь уродство C++, при отсутствии каких-либо плюсов языков вроде C++/Java.
Но можно использовать для декларирования функций в разных API, там оправдано немного изуродовать код.
Статическая типизация тоже уродство с большими ограничениями. В принципе нормально, что переменная может быть разных типов, это называется полиморфизм. Статическая типизация этого не позволяет, и это проблема.
Хотелось бы гибкого подхода, чтобы в коде функции можно было бы декларировать переменные каким-то типом, а можно любым типом, и чтобы в рантайме экспешен возниках, если ты пытаешься тип переписать. По идее это несложно было бы поддержать, но нет.
>>1617851 >Хотелось бы гибкого подхода, чтобы в коде функции можно было бы декларировать переменные каким-то типом, а можно любым типом, и чтобы в рантайме экспешен возниках, если ты пытаешься тип переписать. По идее это несложно было бы поддержать, но нет. Пчел...
>>1617306 В джанге есть generic views, если у тебя примитивный круд, то должно сгодиться. Можно поискать какие-нибудь приложения-генераторы вьюх для джанги. Если тебе сойдет rest, берешь Django Rest Framework, там есть свои generic views, с ними вьюха в три строки. Где-то видел сайт django builder или как-то так, ты вводишь модель, а он тебе к ней все остальное генерирует. Можешь свой обобщенный класс вью написать, отнаследовав его от стандартного.
Аноны, есть пикрил изображения с цифрами, как лучше сделать классификацию цифр? Конечно же без нейронок и прочего говна, ведь цифры довольно схожи между собой.
>>1618056 Провести горизонтальные и вертикальные линии, посчитать количество пересечений? Помню была такая лаба в универе по теме распознавания образов
>>1618064 Это в первую очередь из-за опасности непредсказуемого поведения, когда потоки имеют общие данные, но в принципе можно, если ты его избегаешь, погугли Thread-safety и как оно достигается. В питоне есть GIL, поэтому одновременная работа нескольких потоков невозможна и часть проблем отпадает (как и преимуществ). В питоне его можно использовать для любых блокирующих операции, если необходимо, что бы программа в это время делала и другие действия.
>>1618064 Смотря для каких целей. Многопоточные программы обычно необходимость, так ты можешь обрабатывать блокирующие операции и полноценно использовать ресурсы.
Паттерны скорее в том, как работать в многопоточных приложениях, что использовать, что нет. Антипаттерн использовать мютексы для блокировок, например, обмен данными лучше делать через очереди и некоторые фишки есть.
В питоне, обычном, многопоточность ущербная и применение сильно ограничено из-за этого.
Нужно, чтобы созданные треды (3 штуки) в цикле, который идет ниже, переключались на другую функцию. Они начинают с таргетом myfunc, как переключить их на myfunc2?
Такое, конечно, вряд ли где-то используется, но можно ли написать декоратор лябмда-функцией, и чтобы он и args и kwargs перехватывал? По образцу пикрелейтед.
Да бля, нет же. Хули не ясно? Нужно изменить таргет уже созданных тредов в цикле, треды должны обрабатывать очередь только по одной функции. Алгоритм такой:
- объявил N функций - создал 3 треда - первый проход цикла - набил очередь, треды работают с очередью - изменил таргет для созданных тредов - треды обрабатывают очередь через новый таргет - второй проход цикла - набил очередь, треды работают с очередью - изменил таргет для созданных тредов - треды обрабатывают очередь через новый таргет
>>1618299 >>1618301 >>1618302 >>1618306 Спасибо. Я нихера так и не понял правда, просто по курсу enumerate еще не было. Поэтому старался делать в рамках изученного.
>>1618362 >Я нихера так и не понял правда .index() не та функция, которую ты должен использовать. Она делает совсем не то, что ты думаешь она делает. Если хочешь совсем тупо, то делай тупыми методами: a = [int(i) for i in input().split()] n = int(input()) for i in range(len(a)): if n == a: print(a, end = ' ')
Оригинал: She's just an apprentice of mine. I thought we'd share a drink as business partners for old times' sake. веб форма гугл переводчика: Она просто моя ученица. Я думал, что мы поделимся напитком в качестве деловых партнеров ради старых времен. py-googletrans: Она просто ученица моей. Я думал, что мы бы поделиться напитком в качестве деловых партнеров в старые добрые времена.
Ну короче я понял, что перевести нормально даже мелкие куски простого текста полностью свободно, без всяких ключей к апи и прочего, просто невозможно. Можете не пытаться, если вам придёт в голову.
>>1618464 Это декоратор, но ты его не совсем правильно юзаешь в первой лямбде должна быть функция, а не аргументы, что бы ты мог ее вызывать, а так же если добавить еще лямбду, то можешь и аргументы засунуть
>>1618292 Метод a.index(i) возвращает индекс первого попавшегося числа i вот оно и выводит тебе постоянно первую 8. Нужно делать проход цикла по индексу.
Питоны, как вы развивали в себе способность составлять программу? Т.е. логику - алгоритм, типа того. Я к примеру могу что-то нагуглить, разобраться как оно устроено, даже понимаю что программа делает. Но вот с нуля самому сообразить пока трудно, постоянно делаю какую-то громоздкую хуйню. Это со временем приходит по мере гугления/изучения? А то недавно только начал учить, чувствую себя совсем умственно отсталым.
>>1618929 Ну не траллируй, я действительно недавно начал только изучать. Просто к примеру есть какие-то маленькие кусочки кода которые я могу писать по памяти, но что-то сложное уже начинает ломаться, тупить и выдавать пиздец. Вот и хочу узнать, стоит ли тратить время именно на то, чтобы любой код уметь писать по памяти начиная с самого малого, или лучше охватывать разные алгоритмы более обширно, а потом уже возвращаться и подгугливать какие-то конкретные детали? Типа - ну вот тут вот вычисляется самая маленькое значение из списка, тут вот происходит поиск, но в целом не иметь возможности написать это все самому по памяти, но знать в принципе что программа делает при чтении и понимать общий принцип построения логики. Так возможно продолжать изучение, или все нужно постепенно изучать досконально?
>>1618942 Если я правильно понимаю, отдельные модули программы надо делать независимыми, а уже потом объединять их вместе по предварительно намеченной схеме программы
Хочу написать небольшой парсер для блога, который будет новые посты пересылать в тг. Вопрос в хранении id последнего поста. Хранить в текством файле или есть еще какие способы? не прикручивая бд
Для каждого воркера multiprocessing открывает новый интерпретатор. Правильно ли я полнимаю, что если через subprocess запустить несколько питоновских скриптов, то это будет параллельное выполнение?.. (можно даже работу с общим ресурсом памяти запилить - через очереди и сокеты)
>>1619052 > Правильно ли я полнимаю, что если через subprocess запустить несколько питоновских скриптов, то это будет параллельное выполнение Да, правильно, параллельное и независимое. Но только всё-таки это надо делать через Pool и Process модуля multiprocessing.
Кстати модуль поддерживает и shared объекты уже "из коробки".
Почему PyPy мало кем используется и не заменил собой CPython в качестве стандартного интерпретатора Питона? Он же намного производительнее, включается в себя jit-компиляцию и поддерживает адекватную многопоточность! Че за хня?
Я опять с тупизмом начального уровня пришел. Помогите пожалуйста понять принцип решения.
a = [int(i) for i in input().split()] for i in range(1, len(a)): if a[i - 1] * a > 0: print(a[i - 1], a) break
1. Почему в range указана 1 2. Почему в условии a[i - 1] Пробовал в range писать 0, а в условии a[i+1], но это не работает. Не ясно только по какой причине.
>>1619172 >python-овское общества Это кто? Чуваки из PSF пилят cython за донаты, энтузиасты свое за меньшие донаты, обычным прогерам поебать, им за это не платят.
>>1619190 Спасибо. Я почему решил уточнить, данный вариант выделили разработчики ресурса, где эта задача размещена. То есть изначально рекомендуется делать именно так (возможно лишь в рамках изученного). Естественно, я бы до такого не додумался.
>>1619098 Уже написали, поддержка версий, расширений и т.п.
Кроме того, просто не всегда pypy будет работать быстрее. PyPy работает хорошо там, где много итераций простых циклов, а где-то он реально проигрывает в производительности. Аналогично и с Cython, где-то он хорош, но и проблемы с ним есть.
Далеко не везде проблемы производительности актуальны. Какая разница, у тебя проц загружен на 5% или на 0.5%?
В общем когда актуально, тогда и надо думать. И такие решения есть, которые позволяют ускорить при необходимости. При этом всегда можно распределить, часть функционала одной машиной исполнять, часть другой, пересылать данные потом упакованные pickle или классическими форматами.
Есть очень простой скрипт, выдающий только пару строк текста на выходе. Каким инструментом превратить его в приложение? Просто чтобы два раза кликнуть - и выводилось окно с этими строками.
В Джанге за каким-то хреном постоянно повторяется имя приложения во вложенных папках типо: myproject/myapp/templates/myapp - вот нахера надо 2 раза писать myapp? Папка templates же и так внутри этого приложения лежит
>>1619295 >myproject/myapp/templates/myapp - вот нахера надо 2 раза писать myapp? Папка templates же и так внутри этого приложения лежит Што? При чем вложенность папок к темплейтам? И нейминг ты любой можешь сделать для теймплейтов
>>1619320 >И нейминг ты любой можешь сделать для теймплейтов Естественно, но не в этом суть
>При чем вложенность папок к темплейтам Потому что везде вижу как внутрь тех же темплейтов вставляют еще одну папку, имя которой дублирует имя приложения
>>1619329 >Потому что везде вижу как внутрь тех же темплейтов вставляют еще одну папку, имя которой дублирует имя приложения А, ты в этом смысле, так так понятнее же. Смотри, у тебя есть десяток приложений, у каждого свои темплейты, структурируя по различным папкам ты получаешь аккуратные папки с темплейтами для приложений, или не структурируешь и получаешь мешанину.
>>1619175 1. Потому что смотрят на письку и его соседа слева. Чтобы у первой письки был сосед слева надо начинать со второго. У второго индекс 1 (у первого 0) 2. это сосед слева. 3. потому что улетает за границу в правой части, надо ещё len(a) - 1 делать.
В Django потребуется хранить что-то типа односвязного списка значений. Внутри Topic мы добавляем новые Entry и их порядок обязан сохраняться. Мы можем передвинуть Entry на любую новую позицию и это должно сохраниться, то есть их нельзя сортировать по дате добавления. Как такую фичу реализовать в Джанге? Как с одной Entry грамотно передать ссылку на другую и потом пройтись по ним всем?..
>>1616384 (OP) Откуда pip подгружает пакеты, если я говорю ему например pip install numpy? На каком сервере он находит этот билд numpy? Как они туда попадают? Могу ли я вручную скачать откуда-то архив этого билда, не устанавливая его?
>>1619798 А как пакеты попадают туда? Могу написать свой yoba_module_maxx_power_ownage и забросить туда чтоб каждый мог его установить и насладиться моим ахуенным кодом?
Изучаю превозмагаю тут ооп и попутно пишу телехрамм бота для.. ну просто пишу и все. В общем есть небольшой класс, представляющий из себя множество ключевых слов и операций над ним. И есть событие, которое должно работать с содержимым этого множества. Но оно тупо не работает, т.е событие вроде как обращается к классу, но при этом в нем ничего не сохраняется и не выводится. И дебаггер это все почему-то не отлавливает по брейкпоинту, я не могу посмотреть как там и где сохраняются данные. Чяднт? https://pastebin.com/XKdskWgs не смотрите на регулярку, это не мем
Суп питонач. Как вы разбирались в коде, который вы не понимали при изучении? Вот к примеру сейчас разбираюсь с алгоритмом Дейкстры, мне понятна в целом концепция его работы и то, как он работает, и даже то, почему он может не работать. Но вот его сопроводительный код для меня слишком сложный и я не могу написать его самостоятельно, и разбить на меньшие фрагменты чтобы понять его кусками тоже не получается. Что делать? Кажется если я так и дальше буду пропускать малопонятыне моменты без углубления, я вообще ничего не выучу. https://dumpz.org/a2PXepQwS3TY
Антоны, как можно перетасовать эти два массива так, чтобы порядок элементов в них был одинаков? Мне нужно получить рандомный порядок картинок, но текстовые файлы во втором массиве должны совпадать с ними
Бля, установил интерпретатор 3.8 в виртуальную среду, начал по новой ставить пакеты для Джанги и во время загрузки psycopg2 вылетела вот эта залупа: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools и нихера не устанавилось, че это за дичь? Visual C++ 14.0 подавно стоит
>>1619984 Скорее всего эта проблема из-за того, что psycorp2 ещё не работает с пистоном 3.8 У меня такая же залупа была с numpy, пришлось ставить под 3.7
>>1619995 >psycorp2 ещё не работает с пистоном 3.8 А знаешь почему я вообще 3.8 в эту среду поставил?)) Потому что функция django.contrib.admin.register не работает в 3.7 - когда я вставляю туда свою модель чтобы зарагестрировать ее Python крашится нах (да, сам интерпретатор), судя по тому что говорят на форумах: https://www.reddit.com/r/django/comments/e5m7zv/accessing_admin_is_crashing_the_server/это именно из-за приколов 3.7
>>1620018 Кстати, Аноны, а теоретически возможно такое, что те два вызова glob.glob могли дать мне разный порядок файлов и при записи я бы получал расхождение между картинкой и текстовым файлом?
>>1620002 Ты как регистрируешь? Я видел: django.contrib.admin.register django.contrib.admin.site.register django.contrib.admin.sites.register ебаные разные версии Джанги... Что из этого вообще использовать? В коде вроде юзаю django.contrib.admin.site.register - работает, но когда пытаюсь отдельно импортировать в консоли эту функцию - пишет что модуля site вообще не существует (есть только sites, где register нет). Че это бля такое?
Есть ли какой-нибудь способ визуализировать код в виде одной большой таблицы или схемы? Знаю есть типа таких - http://www.pythontutor.com/visualize.html#mode=display Но хочется чтобы это все было в еще более развернутом виде и не так скомкано
Помогите советом, на чём сайт сделать. Вводные такие: 1) знаю питон, не знаю всякие пхп и джаваскрипты, поэтому питон 2) на фласке сайты уже делал, но в этот раз контейнтом будет наполнять человек, далёкий от программирования, поэтому нужна cms, соответственно, джанго (не ошибаюсь ли в этом пункте?) 3) писать cms с нуля это такое, поэтому прошу совета, какую лучше взять, чтобы можно было по быстрому написать пару шаблонов страниц и потом наполнять это дело текстом и картинками. Всякие хтмл и ксс знаю.
Надо бы мне в виртуальную среду поставить notebook чтоб легче было в консоли работать, но когда я поставил pip install notebook, эта херь поставила мне еще и овердохуя всякого говна (в том числе tornado, pywin32 и еще какая-то муть), сомневаюсь что хотя бы половина нужна для работы notebook. Как его поставить по человечки с минимумом пакетов? (есть еще jupyter и jupyterlab - но то же самое говно)
>>1620177 Если бы у него был линух, то у него все сопутствующие пакеты были бы пересобраны под самый последний питон в репозиториях, так что тут уточнять ни к чему было.
>>1620225 >Если бы у него был линух, то у него все сопутствующие пакеты были бы пересобраны под самый последний питон в репозиториях, так что тут уточнять ни к чему было. Я не думаю, он ебанашка, которая сидит на ролинг-релиз дистрах без возможности, установки прошлых версий пакетов, в дебианоубунтах и красношляпах все нормально
>>1620232 >>1620239 Вы прочитали, что я написал? >сопутствующие пакеты были бы пересобраны под самый последний питон в репозиториях На линуксах, если ставить из реп (как ты и должен делать, потому что там за тебя и слюнки подотрут), то всякие доп. библиотеки будут собраны под версию пистона, которая в репах. В репах 3.5? Вся шелуха тоже под 3.5.
>>1620275 Я тебе просто объясняю, что перестают поддерживать старые версии везде. Где-то быстрее, где-то медленее. Если тебе нужна какая-то конкретная версия, то её может в определённый момент не оказаться ни в актуальном арче, ни в актуальном дебиане, ни даже в ещё поддерживаемом центосе.
Высокопроизводительные сетевые клиенты на Пистоне на овер9к параллельных коннектов - фантазии или реальность? Или проще не мучать жопу и перевкатиться в какой-нибудь более подходящий язык?
Аноны, за месяц нужно запилить нейросеть на питоне, подскажите литературу, желательно, чтобы по проще прдавалась инфа. Лучше на русском, хотя и англ подойдет. Нейросеть если что по классификации кредитов.
Как сделать так чтобы мое приложение на Джанге независимо от пользователей каждые 30 секунд проводила опрос стороннего ресурса? Очевидно что нужен некий endless loop, это только асинхронными методами можно запилить?
>>1620673 Есть такая штука в джанге как management command, по сути скрипт джанги, просто запускаешь его по крону каждые 30 секунд. Но вообще все используют celery, и ты так делай.
>>1620694 >celery Гуд, усвою. По факту он в Джанге может выполнять прикладную асинхронность связанную с тасками? И даже никаких asgi и 3й версии Джанги не нужно?
>>1619653 Первое что приходит в голову: Добавить два поля для id следующего и предыдущего Entry и реализовать методы create, delete, next, insert и так далее. То есть тупо реализовать все что нужно, прямо в модели. >>1620708 По celery я тебе ничего рассказать не могу, не разбираюсь, потому как сам не пользуюсь. По асинхронности в джанго - тоже самое, они там что-то анонсировали в третьей версии, но я так и не понял что там можно асинхронно, а что нет. Похоже, что просто прикручивают django channels. Сижу на старой версии, жду когда сокеты завезут.
>>1620722 >По асинхронности в джанго - тоже самое, они там что-то анонсировали в третьей версии, но я так и не понял что там можно асинхронно, а что нет. Насколько я понял, они добавили поддержку ASGI и декораторов асинк_ту_синк и синк_ту_асинк. А 3 версия сейчас будет проходная, т.к. они планируют полностью перевести фреймворк на асинхронность к 4 версии, где-то на хабре была подробная статья про это Ну и их старый роадмап https://www.aeracode.org/2018/06/04/django-async-roadmap/
Подскажите, если мой гитхаб состоит из курсовых работ времен шараги это пожалуй надо скрыть и парочки ботов для телеги. Причем один бот достаточно продвинутый (фриланс заказ) интернет магазин с кнопочками и постгрес бд. А другой модный-асинхронный, c вебхуком и парсингом. То это можно показывать как "проекты" для вката джуном в бекенд?(хотя на самом деле меня больше интесует работа с бд и автоматизация) Или такое даже смотреть никто не будет?
>>1621165 Оно и так понятно, а кому не понятно - Гвидо объяснит лично >Don't compare boolean values to True or False using ==. > Yes: if greeting: > No: if greeting == True: > Worse: if greeting is True:
>>1621177 >Don't compare boolean values to True or False using ==. А я и не сравниваю "boolean values", я сравниваю variables, а какие оно может values принимать?
Если, например, ты спрашиваешь про False? И там не False, а пустая строка? Или None?
В последнее время посматриваю по рандому всякие курсы и обратил внимание, что практически в каждом при открытии файла или подключения бд они стремятся максимально быстро же закрыть. Т.е. на каждую запись в файл или запрос в базу открыть-закрыть.
Нахуя это делать? Выглядит как идиотская экономия на спичках, учитывая прожорливость самого питона. Или есть какой-то подвох?
>>1621195 >Не сравнивайте логические типы Логические значения. Логические значения бывают только True и False. А переменные могут быть не только True и False. Что не надо писать "if True == True" и так очевидно.
>Пустая строка все еще False, ровно как и None О том и речь. У if a и if a == False будет разное поведение.
>>1621191 Да я знаю, что это не одно и то же, речь то не об этом. >>1621199 >У if a и if a == False будет разное поведение. Никто так и не сравнивает, речь была о True.
Обычно в нормальном коде в переменной bool или её аналоге и так будет булево значение. И достаточно написать if bool Если туда попадает всякая левая фигня, то это проблема кода уже и её надо решать.
>>1621190 Имхо, нет смысла держать открытым подключение, если оно не используется. Плюс, могу ошибаться, если при открытом подключение программа упадет, это подключение может далее висеть незакрытым.
>>1621213 Я обычно пишу либо if bool, если мне надо, чтобы что-то произошло, если условие выполняется Либо пишу if !bool в противном случае Но я не сильно опытный программист
>>1616957 регексы из другой грамматики. с ними ты пойдёшь нахуй, когда захочешь вложенность победить и другие ништяковые вещи, которые даёт контекстно-зависимая грамматика.
>>1621283 Пацаны, я сейчас таки допёр что regex это "Regular Expression"! Ёба, мама мне всегда говорила, что я одаренный и не зря. Скоро буду нейронки писать и 400к зашибать
>>1621296 Значение эфемерно. Вот такой кастомный класс вообще всегда будет тебе выдавать True при сравнении и дальше что? class Mine: ----def __eq__(self, other): --------return True Когда проверяешь ссылки ты точно знаешь что это синглтоны True или False
>>1621239 >В том-то и дело, что будет использоваться. Тогда нет никакого смысла закрывать соединение с БД, потому что коннект и аутентификация это достаточно медленная операция. С файлами тут чуть попроще, конечно.
>>1621306 Как в обычном скрипте послать собственный асинхронный сигнал? Вот к примеру некая функция вернула определенное значение, значит посылается какой-то асинхронный сигнал и вызывается функция-обработчик для него. Или с помощью Celery это намутить реальнее?
>>1621382 >Async From Sync Ну да, по делу. Только вот мне бы единожды кинуть сигнал внутри синхронного кода и не париться. Незачем плодить async loop. Клавиатурное прерывание Ctr+C это ж тоже обработка сигнала (который уже бросает эксепшн KeyboardInterrupt). Вот реально ли сделать сигнал который реагирует на свою комбинация клавиш? Или тут без Си-прогинга не обойтись?
>>1621439 А как ты это сделаешь на Си? Ctrl+C это системный сигнал, его сама ОС генерит.
Я не очень такими вещами занимался, вероятно тут многопоточное решение будет, основной поток обрабатывает клавиатуру и сам генерит сигнал, если была нужная комбинация.
Просто не сделаешь. Но и на Си просто не сделаешь.
>>1621439 >Async From Sync Там в этой части муть какая-то. Хотя не читал.
В любом месте для питона 3.5.3 и старше можно безопасно вызвать asyncio.get_event_loop(), не надо той мути для создания евент лупа. С 3.5.2 (он в дистрибутиве убунты 16.04, что печально) хитрее, поэтому лучше питон всё-таки обновить.
Для 3.7 уже больше возможностей, можно асинхронную задачу запустить просто как asyncio.create_task()
Но всё это не имеет смысла в твоём контексте, ты реально делаешь что-то не то.
сап. нужно хранить историю изменений модели в django. точнее что-было изменено(django-simple-history) почти подходит кроме одного. в админке нужно показыать какие поля изменились. так собственно вопрос. есть еще какие нить батарейки?
Почему Питон считается "интерпретируемым языком", если он компилируется в байт-код и выполняется виртуальной машиной? В чём вообще разница с C# и Java в таком случае?
Сап, у меня есть набор данных по возрастам, хочу это отобразить на диаграмме, но данных чуть больше чем дофига. это выглядит не красиво. Хочу сгруппировать например по группам возаста например с 21 до 25 в одной группе с 26 до 30 в другой. как провести эту группировку?
>>1621675 Поставить хэндлер не проблема. Проблема заделать свой signal. Там в либе даны лишь основные сигналы (действующие на уровне ОС). Как я понял, без влезания в низкоуровневый прогинг на Си тут не обойтись
Анончик, объясни как с виртуаленв работать. Вот, например, в жсе - я клонирую репу с гитхаба, ставлю зависимости через npm install и они ставятся в папку с проектом. Как это происходит с питоном? Я клонирую репу, в репе есть файл requirements.txt - как дальше мне поставить зависимости локально?
>>1621889 А если я создаю окружение внутри проекта, то это окружение нужно в гитигнор добавлять, верно? А то я создал окружение внутри проекта и у меня появилось 500 новых файлов. И еще вопрос, есть ли какое то стандартное название для папки с виртуальным окружением внутри проекта? Или куда обычно их ставят?
>>1621892 >А если я создаю окружение внутри проекта, то это окружение нужно в гитигнор добавлять, верно? Да >И еще вопрос, есть ли какое то стандартное название для папки с виртуальным окружением внутри проекта? Или куда обычно их ставят? Зависит от выбора виртуального окружения, для venv это папка с именем venv, оно в корень проекта обычно ставится
>>1621902 Спасибо анончик. Вроде разобрался. А ты не знаешь, в питоне случайно нету практик для сендбокса скриптов/проектов? Или это мне нужно на уровне ос делать?
Можно ли адекватно реализовать mutable строки в Питоне? Для множественных операция удаления/вставки/смещения, чтоб работать с одним и тем же объектом и не происходило кучи копирований/удалений? Как их лучше всего намутить? Через memoryview - реально? (хз особо не вникал, что это такое)
>>1621946 При частых изменениях удобно работать со строками как с последовательностями и брать конкретный элемент через __getitem__. Канешн можно реализовать обертку из этого, но строки все равно будут immutable
А есть какие-нибудь модные хипсторские способы теребить коллекции? Хочет какие-нибудь конструкции типа r['ch1','ch2'][:10]['data']. Типа взять два куста из словаря, срезать им первые 10 строк и извлечь из низ ключ 'data'. А то генератор на генераторе городить приходится.
Алсо, куда дальше идти курить бамбук дурачку-олимпиаднику, который знаком с Питоном уровня основ ООП по типу инкапсуляции, наследования и тп, ну еще немного всяких tkinter и прочих либ. Решил 100500 задач уровня отсортируйте говно постройте маняматрицы помогите вычислить говно и прочее, теперь хочу большего
>>1622144 Ясно вампир не палится. Ну короче я так и думал пока я время на всякую хуйню трачу вы радуетесь и живёте вечно. Пидоры блять ебаные я же то же хочу
Как по мне - отличный вопрос для собеседования, что бы спросить у собеседующего, если надо будет. P.s. советую анонам-новичкам подписаться на этого мужика, и на Ютубе найти видео с конференций с ним.
>>1622313 >мапа компактнее чем массив массивов Да ладно!
>Как по мне - отличный вопрос для собеседования, что бы спросить у собеседующего, если надо будет. Нет, вопрос говно, измерение пиписьки на знание вещей, которые никогда не будут использоваться
Есть проект в котором не прописаны зависимости в requirements.txt. Как в таком случае ставить зависимости? Ручками прописать в файлике после чего поставить их через виртуальное окружение?
>>1622373 На самом деле, погружение в вимы-эмаксы это дохуя человекочасов. Зачем добровольно навешивать на себя такой груз? С тем же вимом достаточно выучить по верхам чуток и охуенно себя чувствовать в любых никсах. А дальше это очень на любителя, особенно с превращением его в ололо-IDE.
>>1622501 Я изучил, дурачок. Я изучил даже ed. Но смотря квадратными глазами на фронтенд с мильйонами хуйни для изучения, какие там редакторы ещё? Тем более, для вкатывальщиков.
Какие версии python u pycharm ставятся на win7 7600 без sp1 ? Установил старые, но не поддерживаются модули, т.к. pip ставит последнюю версию модуля. Шо делать?
>>1622695 очередной вкочусьвайти за месяц? Тебе не кажется странным что любые твои манипуляции над k не отражаются на цикле? Потому что блин инициализация генератора range уже произошла и ему поебать, что ты там делаешь с k
>>1622694 ты херню несешь, for вообще не для этого, используй while
>>1621884 >Тот же venv главное активировать Скорее в проект прописать, чтобы оттуда запускался.
Активировать не обязательно, достаточно по полному пути вызывать, и автоматом будет подхватываться нужное окружение. То есть вместо того, чтобы запускать source /home/vasya/venv/bin/activate python hello.py
можно смело писать /home/vasya/venv/bin/python hello.py
и всё будет прекрасно работать без предварительного активирования окружения. Для запуска из скриптов это важно, и в принципе иногда удобно, особенно если хочется в разных окружениях что-то пускать.
>>1622725 Не нужно тебе программированием заниматься. Не на питоне уж точно, ты пока не готов.
Почитай просто, как циклы работают в питоне, как генераторы.
У тебя вызов range(k) происходит только один раз, перед самой первой итерацией. Дальше создаётся генераторный объект, который возвращает значения от 0 до k-1, и ты на него повлиять уже никак не можешь.
Как в Джанге вести автоматический подсчет количества строк в таблице? Добавил я новую строку с данными в таблицу - счетчик увеличился, удалил - уменьшился (создание integer аттрибута на уровне класса - хреновая затея, т.к. питоновские методы инкремента/декремента будут серьезно тормозить БД при каждом таком обращении)
>>1622787 Генераторные выражение, тебе ссылку уже привели. Одна из особенных фишек питона, которых нет в большинстве других языков.
Чаще они используются для того, чтобы списки генерить. попробуй s = "asdfasdfasdfgadfg" lst = [c for c in s] print(lst) lst = ['<' + c + '>' for c in s] print(lst) lst = [c if c in 'aouie' else '_' for c in s] print(lst)
можно использовать и в циклах, но это уже не очень принято.
Двощ нид хелп Django Надо сделать модель в которую буду заполнять поля и их сумировать и вот эту сумму вносить в модель ... То есть есть 3 филда Int 1 - Input(x) 2 - Input(y) 3 - а в 3 филд вношку x+y (но не рукой, а что бы програмно заполнялось(надо делать кое какие расчеты) и что бы вносить в это поле можно было только редоктируя 1 и 2 фил. То есть как я понимаю, надо засунуть функцию/метод в модель и при иницилизации модели ее вызвать и забить ее результат в филд? Как это сделать?
>>1622798 Есть отдельная книжка именно про такие особенности? Про всякие @, else для for, и with тоже. А то я как-то какую не возьму: "как пользоваться if", "создадим список d=[]".
Сап, други. Я к вам с совсем нубским вопросом. Когда очень очень давно учился в универе по спецухе программирования, изучая с++ и паскали. Потом все это забросил, а недавно решил вспомнить былое чисто для себя, мозги размять. Из всего за это время множества языков выбрал питона (хз почему, ну вот его). Разобрался в синтаксисе, вспомнил кое-какие методы и алгоритмы, короче запилил несколько программок. Но, собственно сам вопрос вот в чем: как дальше из ide ее выпустить? Там она запускается, работает, а дальше что делать? Например скомпилить и использовать на другом компе или кому то скинуть. Погуглил это дело, оказывается это целая пляска с бубнами. Объясните глупому какой тол тогда в этом языке, если из него дальше программу нельзя нормально сформировать? Ну или я чего то еще не понимаю, подскажите плз.
>>1622838 Расскажи поподробнее об этом. Я не совсем понимаю что делать. Вот я в ide накидал. Сохранил в py файл. Как из этого сделать exe? И почему пишут что это редко делают, что вдруг поменялось?
>>1622842 Из него не нужно делать ехе. Надо устанавливать питон там, где оно будет запускаться. Ехе можно сделать, но это суть тот же питон, примотанный изолентой.
>>1622842 Файл легче запускать через терминал командой python -m, при условии шо питон на машине установлен канешн На unix в 1ю строчку захуяриваешь #!<python_path> (можешь папку с виртуальной средой вместо со своей прогой таскать) и тогда файл запустится из терминала на похуй, без команды python Если тебе надо послать твою ахуительную говнопрогу другу-ламеру, то конвертируй py2exe, в инете есть туториалы, сам этим не занимался
>>1622845 Хмм, а в других языках с этим проще? Зря я питон выбрал получается?
Т.е. сейчас простейшая задача - дома накатал программульку для компа на работе, такую вспомогательную и упрощающую рабочий процесс. Но выходит дело я не смогу ей пользоваться, т.к. надо на этот комп ставить питон среду, а комп весь без прав админа.
>>1622846 Говнопрогу именно себе, но на другой комп.
А почему так сделали? Это же пиздец неудобно. Все равно что машина, которая только в гараже может заводиться....
>>1622848 > Хмм, а в других языках с этим проще? Зря я питон выбрал получается? Зря, попробуй голенг, он очень простой(проще питона) и делать экзешники в нем можно одной командой. Ну и сами программы получается на порядок быстрее питухонских
>>1622848 Тебе нужен интерпретатор чтоб интерпретируемый код работал, что тут странного? Точно так же как компилируемому коду необходим компилятор Попробуй .cpp файл на похуй запустить двойным щелчком мыши
>>1622864 >вкатывальщика Если цель - поиск работы в Россие, то лучший вариант это не питон, и даже не го. Если опыта совсем нету - то пхп или жс. Поработаешь пару лет, потом можно будет и на любой интересующий тебя стек перепрыгнуть.
>>1622861 Спасибо, уже тоже набрел на тред и эти сайты. Попробую его.
Еще пара вопросов можешь подсказать? У Го тоже много разных IDE? Если так, то посоветуй плс хорошую?
И второй - вообще этот Го как язык нормальный? Функционал, синтаксис итд? В питоне мне понравилось что нет кучи фигурных скобок, точек запятых в конце и кучи всякой лишней разметки. Потом еще показалось удобно как он переменные сам понимает и не приходится на каждом шагу подсказывать что тут строка, а тут интежер.
>>1622867 >У Го тоже много разных IDE Рекомендую вскод с плагином.
>Го как язык нормальный? Строгая типизация. Синтаксиз си-образный. Абстракций меньше че в питоне. Если хочешь глянуть на синтаксис, глянь любой проект https://github.com/trending/go >отом еще показалось удобно как он переменные сам понимает В голенге с этим все намного лучшее, потому что иде точно знает какой ты указал тип у переменной и сразу тебе покажет все методы.
Реально ли работать на бэке в трй же Джанге с юзерами исключительно через куки, не задействуя БД, если передаваемых данных мало?.. канешн БД все равно потребуется для прикладных целей, я конкретно про замену кастомных моделей куками
>>1622974 Что ты хочешь в куках передавать? Ты данные можешь в сессиях хранить. Ты можешь использовать легковесную базу sqlite, если не хочешь маяться с постгресом.
>>1623352 А что, через встроенные жинжа темплейты никто фронт не пишет? Обязательно накручивают поверх какой-то жс фреймворк типа реакта, а джанга только для работы с бд и рестом?
>>1623367 Если что-то совсем простое можно и на темплейтах, можно к ним бутстрап, джейквери приклеить - будет лучше, если одностраничник можно хоть вью прикрутить
>>1623367 Там не jinja, а jinja-подобные темплеты. Кстати лучше их заменить именно на джинджи, потом меньше проблем будет.
Джанго из коробки тебе даёт именно бэк часть. Это механизм шаблонов без реализованных шаблонов, продвинутую работу с БД через ORM, всякие там механизмы куков, авторизаций, систему для создания middleware, url-процессинг и массу подобной хрени.
Но в коробке, кроме админки, ничего больше и нет. В отличии от типичных конструкторов сайтов. Никаких шаблонов галерей, меню, досок объявлений, ничего нет вообще. Ни кода для базы, ни фронт части. Всё самому.
На базе jinja ты легко можешь сам сайт написать, но это при условии, что ты владеешь HTML/CSS/JS.
Бутстрап - спорное решение. Его разрабатывали давно, когда браузеры плохо нормальный HTML и CSS поддерживали. В результате они велосипеды убогие и кривые пилили, когда на голом HTML ты можешь сделать всё прямее и лучше. Вот в самой базе, bootstrap grid. Сейчас гриды лучше в голом HTML поддержаны, более функциональные, и уже все современные браузеры поддерживают. Вообще проблема многих таких решений.
jQuery тоже устарел. Или лучше на голом JS, или уже мощные современные фреймворки.
>>1623444 А на чем можно быстро лепить симпатичные мордочки погромисту без всяких зойчатков дизайна? Имеются в виду не сайты, а сорт оф гуи в вебе, для управления всякими штучками на бэкэнде. Мне нравится вариант с рест апи + морда на клиенте на каком-то жирном жс фреймворке. Или есть что получше?
Что почитать про написание красивого и эффективного кода? Смотрю на код других людей на гитхабе, сравниваю со своим и чувствую, будто остальным больно читать то, что я пишу.
>>1622833 Можно изи запустить питончик на heroku или pythonanywhere.
В прод питон запускается реально заёбисто: добавление всех зависимостей в requirements.txt, docker, gunicorn и nginx. Это важные навыками для профи питониста, как впрочем и для разраба на любом другом языке.
В любом случае, настраивать весь этот ci/cd адок придётся не очень часто пытаюсь себя успокоить, настроил и хуячишь код. Чаще приходится писать и читать бизес-логику, а это на питоне код пишется быстрее, чем на других языках.
Но если ты не катишь свои проекты в серьёзный прод, то это всё не нужно и ты можешь спокойно юзать сервисы, написанные выше в 1 строке. А потом когда придётся катить проекты в прод - научишься настраивать всё это за неделю-другую
Кстати, в exe тоже можно скомпилить питоновскую прогу и это не очень сложно :)
Гошечка хороша и вакансии в Москве есть и получают Гоферы больше питонистов, но мне кажется она посложнее питона из-за обязательных: асинхронщины, указателей и ссылок. + статическая типизация обычно замедляет разработку фич ну и у гошечки нету django
Список на сильного джуна/мидла, близок к правде. Но там описаны прям все навыки, примерно мидла.
Не обязательно шарить за весь список, если хочешь устроиться джуном. Если бы я составлял обязательный список, я бы точно выкинул: 1. HTML, CSS, JS - на питоне обычно апихи пишут и если тебя не взяли на fullstack, ты будешь супер мало писать фронт. 2. Асинхронность мало юзается в старых проектах, а кроме легаси джуну ничо больше не доверят :) 3. Тестирование 4. PostgreSQL - глубокое понимание не требуется, главное знать основы SQL и уметь быстро гуглить
Все эти вещи очень важны, но они не фундаментальны и быстро учатся по ходу работы и по необходимости.
>>1623586 Потому-что хочу на питоне, ну то есть я понимаю что он не так эффективен в этом даже как делфи,.. Не знаю что ещё взять поэтому плеер, мб сначала мп3, а потом уже и видео. Одному, без наставника тяжело, постоянно прыгаю с одной книжки на другую и не могу зацепиться за что-то конкретное, если можешь предложить что-нибудь - я буду только рад.
>>1623596 Не уверен, но надо с чего-то начинать.. погуглю как воспроизводить видеофайлы и т.д.
>>1623609 >как воспроизводить видеофайлы ffmpeg, если вдруг сам не найдёшь. Если не разбираешься, то лучше не берись за это. По ЦОС хотя бы что-то почитай ещё.
Привет, друзья, как отрисовывать полупрозрачный слой поверх всех окон и всего интерфейса как это делают программы типа redshift или f.lux? Я пробовал делать это при помощи wxPython, а именно wx.ScreenDC но проблема в том, что при движении курсора мыши этот слой в местах прохода стирается, меня такое положение дел не устраивает Нашёл что-то на стэковерфлоу но не знаю как это использовать и есть ли для этого какие-то инструменты в Пайтоне https://stackoverflow.com/questions/1025412/how-does-f-lux-work
>>1623483 Спасибо за ответ, я уже работаю джуном, но посчитал что это видео довольно полезно, что бы выделить для себя некие направления дальнейшего развития, как по твоему, что еще можно было бы посмотреть/потыкать для этого стека, помимо того, что он озвучил?
>>1621745 Какой придётся. Допустим есть мод для майнкрафта написанный на скала, нужна скала. Другие игоры требуют луа для моддинга. Если писать с нуля то мне проще на питоне, если ускорить надо, то проще модуль на си написать для того же питона. Душа лежит к расту.
>>1621711 Потому что байткод интерпретируется. Там цикл и большой свитч по опкодам. Java и C# тоже могут работать в режиме интерпретатора, но они включают JIT и на лету компилируют фрагменты байткода в нативный машинный код. Разделение на компилируемые-интерпретируемые языки не всегда чёткое в общем.
>>1621673 Можно try, более строго будет использовать регекс. isdigit будет медленно и громоздко. try сработает как надо в большинстве случаев. Регекс нужен если тебе надо оставить число строкой, но при этом быть уверенным что там записано число и в точном формате, без подчёркиваний и плюсов например.
>>1621611 Если тебе нужно параллельно перемалывать что-нибудь на CPU в питонячем коде, то мультипроцессинг. Любой ввод-вывод (диск, сеть) и числодробилки на си вроде numpy умеют отпускать GIL и мультитрединг будет работать.
>>1621593 Это всего лишь константа, которую ты можешь использовать как специальное значение. Например задавать какие-нибудь неполные значения вот так: [4, ..., 8]. Естественно в коде тебе нужно будет самому обработать эллипсис и вставить недостающие числа.
Посоветуйте хороший учебник по питону. Сейчас читаю Think Python и такое чувство, что автор вообще не понимает, для кого создается этот учебник. Очень странная структура типа пикрелейтед (сначала применяется вызов значения по ключу, а потом рассказывают, что такое вообще есть и называется лукапом), из-за чего теряется какая-то часть понимания происходящего. Задачи по логике убивают и вместо того, чтобы условно рассказать, как выполняется задача = дается простой ответ и все. Короче хуй знает, почему этот учебник всем советуют. Может есть какой нибудь более подробный? Советовали Diving in to Python и Лутца.
Начала изучать python пару недель назад. Есть задача.Напишите программу, которая убирает из списка повторяющиеся элементы. Программа должна запрашивать на вход слова, каждое с новой строки, пока пользователь не введет пустую строку. Затем должна выводить список без повторяющихся элементов. Решил хотя бы вывести список b = [] while True: text = input() b.append(text) if not text: break print(b) а вот как из него дубли убрать я хз что-то. Подскажите аноны добрые !
Хочу сделать пару проектов на питоне, какие веб фреймоврки/либы сейчас используются в индустрии? Или можно есть что-то, на что можно обратить внимание, хотя оно и сильно используется.
>>1624752 Лист нельзя. По сути нужно вернуть многоуровневую строку, где каждый уровень - это один из вложенных в лист листов, конвертированный в строку.
>>1624091 Что можешь сказать про такое решение ? b = [] while True: text = input() b.append(text) if not text: break print(b) from itertools import groupby new_b = [el for el, _ in groupby(b)]
>>1625133 Там вообще залупа. Я уверен есть простое решение но я собираю эту хуйню по кусочкам как даун. Только моральная поддержка двача и спасает. Кстате тебе маны не залить через ментальный фаллос ?
>>1625104 Ты не понял... я про изменяемость как таковую. Я уже писал свой лист с __hash__(self): return 1 Все работало без эксепшнов. Вопрос в том почему изменяемые объекты в принципе не используют как ключи? Вот могу я например реализовать хеш-алгоритм по которому из всех элементов списка создается строка и потом вычисляется ее хеш
>>1625129 Лови мой вариант. Подозреваю, что можно вообще четенько. Я нахуевертил из того, что пока знаю.
n = 5 width = n2 + 1
for x in range(width): sign = -1 if x > n else 1 diff = n - ((n-x) sign) x1, x2 = n - diff, n + diff+1 row = [' '] width row[x1:x2] = range(x1, x2) print(row)
Анончики, есть тут те, кто уже устроен и имеет опыт, можете рассказать о необходимых знаниях и ваших повседневных задачах, желательно бы услышать истории от бэкендеров, но можно и от других.
>>1625288 > никогда, это чисто страдание херней, тебе в принципе на питоне особый функциональный скилл не нужон. Вот и я о том же. Практической пользы от таких заданий никакой, если только для общего понимания и принципа работы. Это я с дивана рассуждаю.
A = {} for w in input().split(): A[w] = A.get(w, 0) + 1 print(A[w] - 1, end=' ')
Через сколько времени вы смогли бы самостоятельно до такого додуматься? Я вот вообще не бум-бум, хотя только материал по теме прочитал. Возможно стоит чаще смотреть в чужой код, а не часами велосипед придумывать.
>>1625556 Если ты введёшь одно значение, то оно тебе напечатоет только 0 и всё. Оно считает и печатает одинаковый ввод, но я не очень понимаю применение этой функции.
>>1625558 >>1625556 Изначально условие было таковым: В единственной строке записан текст. Для каждого слова из данного текста подсчитайте, сколько раз оно встречалось в этом тексте ранее. Словом считается последовательность непробельных символов идущих подряд, слова разделены одним или большим числом пробелов или символами конца строки.
> one two one tho three > 0 0 1 0 0
Смотришь на решение и все кажется таким очевидным, но это сейчас, до этого ступор был.
>>1625582 Вряд ли. В общем виде "сколько раз оно встречалось" в питоне красивее всего решается через defaultdict, так что сомневаюсь, что здесь надо городить списки.
>>1625598 Как тебе очевидно? Мне представляется, что сколько что-то встречалось естественным образом перетекает в пары объектов: Что и Сколько_раз. А это дикт. Как ты списком хочешь это представить?
>>1625571 Я тут на днях задачку решал, необходимо было вывести все слова которые НЕ повторяются. Сейчас добавил в неё буквально одну переменную и одно действие, чтобы она считала колличество повторений каждого слова, вышло пикрил
>>1625619 Чем наращиваем? Куда считаем? Вот у него дикт: попалось слово, он его взял в качестве ключа, и дал ему значение 1. Попалось ещё раз? Прибавил к значению 1.
>>1625653 Надеюсь ты понимаешь, что для строк длиннее 5 слов результат станет менее интересным? Лукап по дереву словаря станет существенно быстрее, чем каждый раз бегать по всему листу с подсчётом. Надо чекнуть дефолтдикт для полноты картины.
Кстати, а как можно сделать, чтобы из инпута сразу в словарь добавлялось? Захотелось допустим два слова через пробел ввести, а они потом в качестве двух ключей остались. И так много раз.
Сап аноны, Не могу найти библиотеку для открытия 3d объектов.obj или .fbx для питона. Цель - вертеть 3d объект кодом и сохранять изображение в .jpg. Буду благодарен за наводки
>>1616384 (OP) Аноны, посоветуйте материалы для вкатывания в асинхронность. Активно курю статейки и видосы по asyncio, но такое чувство, словно чего-то фундаментального не знаю, о чём в них не говорят.
>>1626035 >я тогда буду ограничен blender'ом Да не обязательно. Ты можешь гонять блендер порождённым процессом, как тут: https://www.youtube.com/watch?v=20nTx1x4nRY Ты можешь юзать blender as module: https://pypi.org/project/bpy/ И я где-то видел ситуацию, где питон снаружи цеплялся к запущенному блендеру, делал какую-то свою работу, отключался и уходил по своим делам. Но нагуглить не смог.
>>1626265 Такой еще вопрос: частенько в вакансиях на бэк идут рядом Джанго и asyncio/aiohttp, но как они блин согласуются? Нормальной асинхронности в Джанге еще не скоро быть, так зачем работодателю обязательно и знание Джанги и знание асинхронок?
Способов писать С-код в Питоне больно дохрена. В чем разница между тем же ctypes и Cython? Что из этого профитнее, если я хочу например написать часть кода на С для оптимизации скорости выполнения?
Анончики есть какой-нибудь роад мап по пайтону ? я не совсем новичок, знаю теорию по реляционным бд, сетям, линейному программированию/нелинейному, немного архитектуры, знаю sql, знаком с шарпом,
Посоны, вот граф.интерфейс когда Popen-ом что-нибудь вызываешь и ждешь перестает отвечать. Я понимаю почему, но как это исправить? Паралельностью (которую я не знаю)? Если да - то с чего начать? Threading?
>>1626478 Если ты хочешь писать на C, в прод, то конечно ctypes лучше. Он и поддерживается официально из коробки и выполняет именно то что ты хочешь - позволяет юзать сишный код в питоне
Но писать на Сишке...не очень интересно, поэтому есть cython, который позволяет писать почти как на питоне, но и немного как на си
>>1626857 tkinter. А какой смысл скидывать? Просто вот у меня например tar архивирует файлы и я жду пока он закончит чтобы получить returncode из-за этого зависает, но так с любой другой программой будет.
Литература:
Автоматизация рутинных задач ч.2 - https://anonymousfiles.io/3CBCoy1o/ <-- тут только одна книжка. Кто может, залейте её на ЯД к остальным.
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
#######################################
ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года
Вопросы-ответы:
А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
Шаблон шапки: https://dumpz.org/bqyrfCbEPA9t