Это копия, сохраненная 11 марта 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>1752122 (OP)
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
#######################################
ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года
Вопросы-ответы:
— А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
— Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
— А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется
— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
https://dumpz.org/bASGKD8cCFDf
Очень просто - если ты не видишь ошибки в ошибочной строчке, значит обосрался в предыдущей.
Блядь, все, увидел скобочку, как-то нелогично, сделали бы лучше подчеркивание незакрытой скобки, чем принт просто подчеркивать как косяк
>сделали бы лучше подчеркивание незакрытой скобки, чем принт просто подчеркивать как косяк
Ты не закрыл скобку = для интерпретатора это продолжается все то же выражение. Он ебет что ли, как у тебя должно быть все по задумке?
Парсится как есть, а не построчно, конструкции могут быть и многострочными.
17 строка
https://pastebin.com/eF2BqzQQ
Спасибо, анон! Шикарно вышло. А то наркоманы всякие советуют @retry из tenacity, который хуй пойми как вообще использовать новичку
Чем так крут Python
10 интересных фактов про Python
Топ-5 причин учить Python новичку прямо сейчас (фить, ха!)
Почему никто особо не говорит о том, что создавать реальный проект на питоне не разумно, ибо слишком много жрёт?
Ну, например, питонисты кичатся нейросетями и какими-то НАСАми-хуясами. В линуксах, вон, чуть ли не каждая вторая программа на питоне. Зачем? Непонятно. Разве что разрабочики не ценят ресурсы твоего компьютера, оправдываясь отговоркой мол, на на питане просше.
"pocketsphinx", который был сначала на C, а теперь, если я не ошибаюсь, в репазиториях только альфа версия на питоне. Делал студенческий проект, типа, голосовой помощник на базе Raspberry Poo, а там скорость отклика очень важна.
Ладно.
Орнул.
СОВЕТУЮТ НАДЕЖНЫЙ ИНСТРУМЕНТ
@
ВКАТЫШ НЕ ПОНЯЛ КАК ИСПОЛЬЗОВАТЬ, НЕ РАЗЖЕВАЛИ
@
НАРКОМАНЫ, ПРОСТИТУТКИ
Вот условный код модуля с импортом: https://ideone.com/fork/9g91JC
Вот условный код импортируемого модуля: https://ideone.com/fork/X9yJyw
Выдает ошибку AttributeError: module 'main' has no attribute 'number'
Как фиксить? Пробовал делать from main import number, но не работает.
БЫСТРОФИКС
Проебался со ссылками.
В том же порядке:
https://ideone.com/fork/9g91JC
https://ideone.com/fork/YbpmbJ
Тебе не кажется что это оверкилл для
try:
inpNumber = int(input())
except Exception:
print("Check Your input")
>эти валидации через намеренный вызов ошибки и ее ловли
Забыл как эта параша называется. Ошибко-ориентированное программирование?
Я попробовал создать другой файл с одной переменной и почему-то все работает. Очень прошу, объясните, в чем может быть трабл.
Ну анон, юзер инпут же надо валидировать.
Нахуй иди со своей прямой речью и человекочасами в ущерб производительности там, где она важна.
Я не виноват что ты гипотетически опережаешь своими потугами свои влажные фантазии, а потом взываешь к локальной справедливости своего манямирка, сосни хуйца лизни тунца
Борщехлеб, ты хоть на одном коммерческом проекте работал?
https://github.com/cmusphinx/pocketsphinx вот этот? Там 80% си, а питона 1.5% и то тесты какие-то. Или ты про что?
Оверкилл не оверхед. Не вижу причин не попробовать. И tenacity единственная библиотека которая может в корутины, ещё коллбеки писать можно. Документация кстати вся в коде есть с примерами. Это в Java надо доки читать из официального источника, а в Питоне дохуя что в коде (в том числе говнокод майнтейнера)
Выбери форматер нормальный их несколько штук на выбор. ПуЧарм жава комбайн и жрет столько же. Из нормального могу вспомнить только NetBeans IDE, Eclipse, Dbeaver(и то надо вручную конфиг коннектора править), все остальное лютое дерьмо.
К тому же ПуЧарм просто дистрибутив Idea с прикрученным пихоном.
Сколько у вас проектов было на гитхабе когда вкатились? Три штуки пойдет или больше накидать?
Когда я вкатился, гитхаба ещё не было.
(хотя до поддержки асинхронного доступа в дб все равно это все не имеет смысла)
Гуглятся всякие tkinter, wxpython, pyqt.
Поясните, пожалуйста, вкратце, на что лучше всего обратить внимание и почему.
pyqt достаточно мультиплатформенный
есть еще какая-то параша ориентированная на веб-гуи, ей часто дата-соентисты пользуются для быстрой визуализации, на s вроде называется, не помню
Ты тупенький, как такое возможно если Питон это язык которым проще всего можно работать с другими языками ? Учи питон еблан, скоро будущее и синтаксис не понадобится, а вот обширное понимание логического взаимодействия языков ой как пригодится. Даже пиццу не закажешь еблан будешь бегать по тёмным коридорам своей старой пятины с фонарикам и искать розетку и куда воткнуть usb2.0. Кароч не зли меня ебик
>слишком много жрёт?
Может, потому, что в абсолютном большинстве случаев речь о том, выполнится действие за 0,02с или за 0,1с? Вроде бы и в 5 раз быстрее, а вроде бы и похуй.
И то не всегда проявляется.
>Почему никто особо не говорит о том, что создавать реальный проект на питоне не разумно, ибо слишком много жрёт?
Ты, кажется, пропустил момент, когда время программиста стало дороже железа, на котором выполняется его программа.
Ну не скажи, тот же бьютифул суп весьма и весьма тормозной.
Регекспами, которые реализованы на си, можно молотить гигабайтами страницы легко и быстро, а он пердит по полчаса.
>Регекспами, которые реализованы на си, можно молотить гигабайтами страницы
Епт, ты хоть раз сам отмолотил с сотню страниц регексами? Че несешь-то?
Нет.
Это универсальный язык для любых задач.
С чем-то справляется лучше, с чем-то хуже, как и любой другой инструмент, но в целом хорош.
Гигабайт в смысле.
А че не полторы тысячи уж тогда?
Из-за неопределенной вложенности и потенциальных человеческих ошибок парсинг html регексами - идиотское занятие. Суть любого парсера html в предусмотрении этих ошибок
Да это всё понятно, но при парсинге именно дохуя однотипных рендеренных страниц одного скрипта это как раз нормально.
Я молотил кастомные логи на десятки гигов с говноприложения (там нет шаблона типа log4j, а просто куча лапши, выведенная вручную в произвольных форматах) построчно на пистоне. Не особо быстро на питухоне получалось, зато написать такую дрочилку можно за 5 минут в гугле без знания самого питухона.
Ещё один долбоебушек прочитал ГЛАВНОЕ ПРАВИЛО и везде поучает. Ещё про goto расскажи.
Чисто текстовые строки это хуйня, их разбор идет именно быстрыми регекспами или встроенными методами, которые си.
Бьютифул суп же может парсить быстрым сишним lxml, но тормоза идут именно в стадии построения всех этих структур-деревьев для дальнейшей работы, это происходит на чистом бидоне и тормозит ебовейше.
>Может, потому, что в абсолютном большинстве случаев речь о том, выполнится действие за 0,02с или за 0,1с? Вроде бы и в 5 раз быстрее, а вроде бы и похуй.
Эм, 0.1с - это слайдшоу, 10 FPS
0.02c - это 50 FPS
Если такая хуйня будет происходить с гуем чего-то интерактивного, не обязательно игорька, то твою скриптоподелку с 10FPS нахуй выбросят и возьмут байтопидорскую, и пусть она с сегофолтами будет хоть раз в час падать зато пользоваться хоть можно.
Бля, да как ты заебал, найди работу уже, чтоб подобную чушь не нести
>Регекспами
Самый охуенный опыт перемалывания логов регэкспами у меня включал Perl (но там скрипт на 85% был уже готов, я просто подогнал его в паре мест под задачу), вот он быстро справлялся. Но когда мне важно как можно быстрее получить ответ - я пользуюсь Bash (если awk+grep будет достаточно) или Python потому что то, насколько быстро я напишу с лихвой перекроет любое ускорение перемалывания на тех же сях.
HTML'и парсил на bash'е буквально один раз, но думаю, что реализовать штатными средствами других языков то же, что я получил тогда, было бы сложнее.
Я сам перловик изначально, и да, там всё намного быстрее. Видимо потому что целенаправленно вылизано под такие задачи.
awk тоже баловался, но оно забывается без постоянной практики, которой нет.
А что, появилось что-то новое для задач сложнее найти подстроку в строке?
С теоретической точки зрения все должно быть верно
Смотри: есть программа, скажем... ХЗ... система генерации отчётов (пусть на основе данных, уже загруженных в RAM, чтобы не париться о тормозах СУБД и задержках на сети). Ты задал параметры отчёта и нажал на кнопку, в одном случае увидел таблицу через 0,02с, в другом - через 0,1с. Ты даже не заметишь разницы, а если и заметишь, то будет плевать.
А главное, что 95% операций, которые работают медленнее, чем хотелось бы, на самом деле либо включают какие-то расчёты, либо тратят время на получение данных или ещё какую херь.
Стоит ли сделать отдельную папку с веб-серверами?
Случайно отправил не дописав
Проблема в том, что метод не работает(возвращает всегда 0.5 или близкие значения), кроме того очень медленный. Как это сделать нормально?
Да, конечно. А потом двач за меня будет работу работать, мне останется только зарплату получать.
зачем тебе список от н? представь что тебе запихнут числа милион и миляон пятсот, сумарно разница 500 но у тебя будет мильяон пятьсот элементов
Насколько я понял, чтобы отработать первый for, составляющий собственно список простых чисел. На самом деле там даже немного красиво: никаких проверок делением и без лишних умножений.
красиво то может и красиво но судя по всему, на решете О(н^inf) далеко не уедешь в данной задаче
Разве решето вообще можно оптимизировать ? И разве оно не самый быстрый алгоритм поиска простых чисел ?
Двач это когда уже всё. После этого только последний способ червя-деграданта: посмотреть правильные ответы
ну хотя бы если учесть что, каждое второе число делиться на 2 что подразумевает что оно не может быть простым, то половину решета можно уже смело дропать нахуй ¯\_(ツ)_/¯
Я ебал алгоритмические задачи, которые нужно наизусть знать, в рот.
Но по твоему коду похоже, что ты заполняешь весь диапазон до n, чего делать не надо.
Вот внизу у тебя вызывается с 100 до 110. Вопрос - нахуя тебе вычислять простые числа до 100?
не самый быстрый код по простым числам, но что сможет сделает https://pastebin.com/rm1b3h5Q, возможно что-то предстоит коректнуть
а не, поспешил с выводами, чичас сделал тесты, не прошли
https://pastebin.com/7ZcvB3q1
почему дебилушка? вот я дописал тесты проходят, а теперь покажи как решето с мильонами работает
Потому что решето только сначала работает
Решето быстрее, оно не считает почти
>if j * j - 1 > i:
>if (i % j == 0):
Дохуя оптимизатор нашёлся. Умножение и деление в цикле гонять.
оке был не прав,вспомнил что вообще мой алгоритм предназначался для поиска итого элемента прсотых чисел, а оно быстрее решета, зря я его переделывал под такую задачу
Запросы по проводам идут дольше, чем питон думает. Да и программисты дороже компьютеров.
Второе конечно уже не так, время пришло пидорашка
Есть eel, нормальная вещь.
да и наверное у тебя было, не коенц времени исполнения , а переполнение памяти, как бы лист в 2ляма ощущется прилично в байтах
еще я алгоритм проверки на простоту взял самый первый в интернете, можно получше найти
А откуда весь этот форс "её используют даже в наса"?
Ладно, восхваляю тебя. Но меня в интернете (в статье на хабре) уверовали что решето - быстрее нету
Кажется, я впервые в своей практике вижу слова "нормальный" и "Eclipse" в одном предложении без явного противопоставления.
Вид массива = [[a0,b0],[a1,b1],[a2,b2]....]
В a будут числа типа number. В b будет, либо -1, либо +1, тоже типа number. Нужно отсортировать по а, но если встречаются одинаковые а, то вначале должны идти те массивы, где b = +1, а потом -1.
Вот пример, как это должно получиться:
[[1, 1], [2, 1], [3, 1], [4, 1], [4, -1], [8, -1], [9, -1], [10, -1]]
вместо к свой массив
Уже что-то подобное спрашивалось, но нужна модификация.
Есть список, надо извлекать из списка по 5 элементов до самого конца. Проблема в том, что длина списка не кратна длине сабсета (в нашем случае - 5), поэтому недостающие элементы последнего сабсета надо заполнить случайно извлечёнными элементами всего списка.
Т.е. есть some_list = [1,2,3,4,5,6,7,8,9,10,11,12], если длина сабсета 5, то получится 2 полный сабсета, и один не полный. Вот неполный (2 элемента) надо превратить в полный (5 элементов), взяв недостающие 3 элемента случайным образом из всего some_list.
Вот был такой кусок, что к нему прикрутить для заполнения последнего (если он неполный) сабсета?
for i in range(0, len(some_list), 5):
subset = some_list[i:i+5]
Ресурс имеет цену тогда, когда он нужен и его не хватает.
Вот, процессорное время это тоже ресурс, но сейчас далеко не всегда он ограничен. В большинстве случаев речь идёт о том, что у тебя какой-то дешёвый процессор загружен на 5% вместо 1%.
Очень глупо зацикливаться на экономии того, чего у тебя в большом избытке.
С другой стороны, использование неудобных языков ведёт к тому, что ты реализуешь меньше функционала, дольше будет реализовывать, сложнее будет отлаживать и поддерживать.
ну добавь че нить типа
while len(subset) != 5: subset.append(random.choice(some_list))
правда он может одинаковые взять, но можешь провалидировать
Много опций, как сделать правильнее и сложнее, или проще.
1, про случайные элементы, смотри модуль random
import random
функцию random.choices(your_list, k)
Самый простой код
for i in range(0, len(some_list), 5):
____subset = some_list[i:i+5]
____if len(subset) < 5:
________subset += random.choices(some_list, k=5-len(subset))
глупый вопрос честно говоря, но спишем на непонимание, насколько быстрый алгоритм который ты в него запихнешь,и тактовой частоте твоего проца
А какие альтернативы?
В некоторых случаях стоит смотреть на модули вроде itertools, но для этой задачи там прямого решения нет.
Скорость у while нормальная, но всегда может быть, что ты просто что-то делаешь не так и из-за этого просадка в производительности.
А какие варианты ещё? Ну чтоб коммьюнити и без мокрописек? Ну а так Oracle просрал наработки Sun и на жаву по сути им до пизды. Начал смотреть что там с Hadoop и Spring что аж кипятком писяют и охерел от зоопарка инструментов.
>>2135
Ну опять же вернёмся к жава. Классный же язык? Да. Вот только JVM всем управляет. Код может быть очень чистым и прям по паттернам, а JVM решит что ей надо 80% RAM и никак иначе.
Я и питоном забивал 1 ядро на 100% фуллтайм, но это такая хуевая реализация multithreading в CPython.
Хуй знает. Сколько раз пытался в жаву, но каждый раз тошниловка начиналась с момента чтения доков. Servlets and servers мать их. Спасибо OTP что хоть что-то отдают, так бы хуй кто с жавы слез.
Я про это https://stackoverflow.com/questions/44759869/while-loop-1000-times-faster-than-for-loop
>>2156
Спасибо. Что можно почитать по этой теме, а ещё про временную сложность алгоритмов?
>Ну опять же вернёмся к жава. Классный же язык? Да
О боже, нет. Не плюсы, но и там кошмара и ограничений хватает.
>Я и питоном забивал 1 ядро на 100% фуллтайм
Никто не говорит, что это невозможно. И в одном потоке возможно, легко. А уж когда у тебя сервис, который обслуживает много клиентов, то совсем легко.
При этом, правда в том, что это далеко не всегда актуально. И при этом есть методы разгона, pypy, nuitka, инструменты для разгона математики и др.
И да, конечно это не универсальный инструмент для всего. Но вот на джаве я бы что-то делать вместо питона совсем-совсем не хотел бы. И вовсе не из-за JVM.
Погоди.
1) ты можешь сразу проверить длину списка и определить будет ли количество сетов целым числом или нет
2) если нет, то добавь недостающие элементы. При том это можно сделать через comprehension.
3) вычленяй сеты.
Список тоже можно через comprehension создать или генератор.
While это просто вход в loop. А что внутри будет зависит от тебя. Я чаще всего использую while для бесконечного цикла: запрос данных - обработка или ожидание данных - обработка. Короче producer/consumer.
Так можно сказать что и if/else медленные и пиздуй Chain Responsibility пиши вместо хуяк-хуяк и готово.
Я знаю, их и скачал
Там в комментариях даётся ответ, что некорректно тестирование сделано в случае while, ошибка в коде, поэтому такой результат.
for range будет работать быстрее. И решения из itertools для каких-то задач будут работать быстрее, чем если аналогичное решение написать самому, и код короче.
Но в основном тут экономия минимальная, действительно "экономия на спичках".
Там какой-то норкоманский тест.
Проводим битву века: https://ideone.com/KBm9zW
И что мы тут имеем, разница между первым и вторым вариантом в проверке на 9999, это 0.3 секунды, отнимаем её от третьего и получаем - for 0.85, while 0.5.
Форовики соснули!
Спасибо, посмотрю.
Я встречал один раз чела, который переписывал код с учетом микрооптимизаций.
Стоило ему выяснить, что один способ быстрее другого - все, пизда, код начинает превращаться в мелену на глазах.
Вишенкой на торте его крошечного айсикью было то, что он мог спокойно при этом подключать тонны левых либ ради одного метода из каждой, работавших как говно. Вот это его вообще ни разу не смущало.
Да и наш анон-то, нихуя не шарит ещё, а уже за производительность переживает, молодец какой.
Учитывая как современные погромисты выдают софт что для него нужно квантовый комп то любой кто думает про оптимизации просто герой
Если это кто думает про оптимизацию раньше, чем приобретает базовые знания для решения простой задачки на 10 строк, то это я бы назвал аутизмом скорее.
И вообще, преждевременные и низкоуровневые оптимизации, особенно если они в ущерб читабельности, идут нахуй.
Если чел собирается выкраивать микросекунды и работать в области, где это важно, то он зря выбрал питухон.
Например? ORM оверхед априори, но зато если ты три-в-одном макака влегкую миграцию сделаешь. Я ебался с процедурами, пушто как раз в одно рыло все и делал и реально пытался в микроменеджмент ресурсов пока не выгорел к хуям.
Надо было гонять данные между микрописькамисервисами из говна и палок. Пытался в Redis, а там без гарантии доставки из очереди и как брокер неочень. Въебал RabbitMQ и сидел довольный как слон. Забил нахуй на пиковые скачки CPU и average load, лол. Тут либо шашечки либо ехать. Питон именно про ехать. Если нужны ресурсы - давай деньги. Если нет денег ни на спецов ни на ресурсы лучше вообще накорню все зарубить нахуй. А то хотят BI и шоб все реалтайме и с кучей выгрузок, а из оборудования два ядра два гига зато от HP. А тут и заказчик хочет хочет въебать потоковое видео на этом говне. Вебсокеты ему подавай, лол. Лишь бы не брать Synology и не платить за лицензии.
Норм вариант же? А ты греби и так чтобы галера плыла вперёд, а не просто поворачивала.
Чё? Ты просто неопытный, это нормально.
>А то хотят BI и шоб все реалтайме и с кучей выгрузок
Мне приходилось как-то строить отчеты из хуйни, которая ваще не рассчитана на аналитическую отчетность. У нее тупо база не приспособлена для этого, данные лежат не как надо, нет срезов, индексов не хватает и тд (вносить свои нельзя, иначе тебе ее снимут с сапорта). Но было нужно, потому что существующая BI система свои ETL запускала только по ночам, а какая-то залупа им нужна была вот прям щас, да еще в дашборде подавай.
Это был ад ебаный. Как ни объяснял я этим бакланам, что хуй оно будет быстро работать - те говорят типа бля ну как-нибудь сделай, нам бы что-то. Делаешь хоть как-то, сразу возмущаются почему медленно так.
Хз, а это имеет смысл? Ну т.е. я понимаю, что в целом-то полезно, но вопрос насколько. Вот у меня этот курс, я его почти добил, за ним следует след. курс, где будут учить всяким более сложным штукам, а не основам синтаксиса, и вот собственно вопрос, как выгоднее распорядиться временем (точно не на дваче сидеть, кек), пытаться оптимизировать код уже решенной задачки, или лучше идти дальше по курсу и изучать новые вещи, т.к. сложность будет повышаться, и оно наверное будет форсить меня писать лучше энивей.
Все придет со временем как тут тебе и говорят.
И callbacks полюбишь и wrapper освоишь.
От рефакторинга не избавиться, ты же не знаешь сколько раз они свои решения тестировали.
Иногда полезно, иногда не очень.
Но в таких писькомерных задачках все к этому стремятся.
В принципе, в процессе изучения оно само придет мало-помалу.
Ну я придумал костыль в виде сбора данных ночью, при том из-за уебищных связей и единой базы для всех бизнес процессов (европейские разработчики делали, да-да) все нахуй лочилось, и переноса в свою БД. Алсо, ещё выяснилось что чем больше ID по которым идёт запрос тем медленнее внутри БД собираются данные. На стороне БД уже был боттлнек, лол. В итоге коляска стала множественными асинхронными запросами по ID в 2 часа ночи, когда количество новые записи не критичны.
Ещё заебала тема "а как логи читать?" "ааа мне нужно через REST выгружать 10 строк за сутки". Ссссука. На тяге горящего пукана я бы мог вывести SpaceX на орбиту Марса. Спасибо Хуяндексу за их Clickhouse. На ELK ресурсов же нет.
def f(x):
...
a = map(f, s)
можно же переписать как:
def f(x):
...
a = [f(i) for i in s]
Вот хороший и наглядные примеры.
https://pyneng.readthedocs.io/ru/latest/book/10_useful_functions/map.html
Ну и map это обратная совместимость.
map стал околодепрекейтед после ввода компрехеншенов и генераторных выражений.
Мап это наследие ебучего функционального стиля, в реальности используется только шизиками и ньюфагами, ибо делает код нечитаемым. Достоинства в том что в отличии от твоего решения может применяться не только к листам, а ещё работает без копирования, с анонимными функциями, и дешевле чем любой другой способ
Всему свое место
map действительно немного depricated.
Вообще, эти инструменты заметно отличались во втором питоне по сравнению с третьим, там они проще в использовании и потому удобнее (это на память, сто лет не смотрел во второй питон). Во втором питоне пытались делать мультипарадигменный язык с сильной функциональной частью в том числе, позже многие инструменты были признаны не нужными и мешающими восприятию кода.
В общем забей, в питоне реально не очень нужная вещь. Поскольку в питоне свои фишки, вроде генераторов списков, чего в адекватном виде в большинстве языков нет. Зато анонимные функции в питоне неудобные, из-за чего функциональный стиль плохо переносим на питон.
>что создавать реальный проект на питоне не разумно, ибо слишком много жрёт
Все тяжелые задачи делаются при помощи библиотек, написанных С, которые на питоне имеют лишь интерфейс. В остальных случаях на производительность насрать, поскольку разница в производительности определенного куска кода в 10-100 раз не влияет на общую производительность программы.
>Почему никто особо не говорит о том, что создавать реальный проект на питоне не разумно, ибо слишком много жрёт?
У тебя там все реальные проекты это какие-то безумные рендеры, симуляции или бекенды обрабатывающие миллионы запросов в минуту? Люди пилят ПО и даже ентерпрайс ПО и их как-то не ебет отрисовывается их кнопка за 0.00001с или за 0.0001с.
Что-то круто взял, питон для одноклеточных сразу бери, или хотя бы питон для домашних животных.
>создавать реальный проект на питоне не разумно
Лично меня в реальных проектах парит GIL
ну и довольно слабенькая реализация asyncio
не знал бы другие языки не парило бы. Не учите другие языки )
"Питон для опущенных"
"Питон и говно - что лучше ?"
"Я и мой питон: справочник начинающего импотента"
Там не хватает нормальных signal handlers, хот и запилили asyncio.run() и вроде как (уже не в 3 ветке) будет уход от GIL для coro. Проблема в менеджменте инстансов интерпретатора как объясняли.
Обращусь. Будте покойны
Тя волнует как хочу так и начну
Ну, если я планирую эволюционировать в мидла и синьора, то про архетиктура знать нужно будет обязательно
Так же как и на других языках. Есть книги по паттернам микросервисов. Найдешь на рутрекере "микросервисы". Про монолиты забудь сразу. Неактуально уже лет 10.
Ну вот на работе мы переписывали микросервисы из простых RPC в cqrs и event sourcing, где про такие вещи почитать можно, микросервисы это же очень обобщенно звучит
Есть задача отсортировать объекты по конкретному полю.
Для этого нужно у каждого объекта сменить тип этого поля с int на str (там вперемешку из Jira приходит и по-умолчанию это вообще list)
Как это проще и правильнее всего сделать?
Ну т.е. я делаю цикл for, в котором перебираю каждый объект из списка объекта и указываю
field = str(field)
А дальше?
Бля, только что был баг из-за вот такого дезигна функции:
def my_shitty_func(value, flag=False, args, kwargs):
args и kwargs канешн разворачиваются через одну и 2 звездочки соответственно, указываю так чтоб макаба не запорола. Когда в другом модуле ее вызывали через my_shitty_func(some_value, args, kwargs) - то есть не указывая параметр flag, то самый левый аргумент из args при разворачивании звездочкой присваивался к flag
Сука, пиздец
Не мешай своим монолитом настоящим программистам писать высоконагруженные приложения, в которых при каждом чихе все модули авторизуются между собой, данные бесконечно трансформируются и гоняются туда-сюда по ресту/соапу.
а они могут мне рассказать чем старый добрый SOA отличается от их микросервисов, что они так радуются?
да это хуевый дезигн
я как-то так стараюсь придерживаться, + чтобы дефолты имели только named_only параметры
def f(pos_only, ✵args, / , pos_or_named, ✵ , named_only, ✵✵kwargs)
Схуяли?
Приведи пример архитектуры тогда для маркетплейса какого-ниудь.
Учти, что необходимы:
1. Рекомендации на основании запросов
2. Рекомендации на основании покупок
3. Рекомендации на основании топ листа продуктов
4. Рекомендации на основании отзывов покупателей
5. Рекомендации на основании категории в которой клиент ищет продукт.
При твоей архитектуре ты будешь делать просто сервис рекомендаций или разобьешь все на подзадачи?
К тому же надо еще логику лояльности и бонусов реализовывать. Ты хочешь все яйца в одну корзину забросить. Вангую, что еще и БД одна на все, лол.
А ок. В питонотреде свидетели .NET/Java EE затесались.
Кроме REST/SOAP больше ничего в голову не приходит? Ну да, ну да... Остальное же типо незащищенное нихуя.
> Схуяли?
ну я так в книжке прочитал и в интернете считают также
https://www.talend.com/resources/microservices-vs-soa/
> Приведи пример архитектуры тогда для маркетплейса какого-нибудь
делать мне вот нехуй тебе что-то доказывать я вообще другой аноний
> А Python похож на Ruby, НО есть отличия
а что не так?
> Кроме REST/SOAP больше ничего в голову не приходит? Ну да, ну да... Остальное же типо незащищенное нихуя.
> grpc
> pubsub
погугли хоть что все эти слова значат
Подголовник? Приспособленность?
А как распарсить объект?
Оказалось, что поле, по которому я хотел сортировать, может быть пустым, так что метод sorted(my_list, key=lambda x: str(x.my_field)) не работает.
Мне кажется, что будет проще создать свой список массивов и туда перекинуть все данные, после чего и отсортировать.
> ПОГУГЛИ
ну да похожие языки, более того руби вышел позже и испытал влияние питона
собсна как и soa->микро
> акронимы как бы, ну да похуй
так че там по pubsub и причем тут rest
> Грызешь лед вместо воды?
Еще есть догадки? Ну ты сможешь, я верю. Как еще реализовать попить/поссать, чтобы трендово было?
Почему мне пишет
new_issue[new_number]=[new_number,new_issue,new_release,new_status]
TypeError: 'str' object does not support item assignment
?
Если что, хочу сгенерировать новый словарь.
У тебя в new_issue лежит summary и это, по всей видимости, строка. Строка не словарь.
В плане summary?
Так-то у меня там все значения строки.
Просто я не понял, как динамически задавать словарь key
А как тебе нужно сортировать объекты с пустыми полями? В конец или в начало? Если в начало, то
lambda x: str(x.my_field) if x.my_field else '')
Честно, я заебался разбираться в структуре объектов, высранных Jira и решил тупо распарсить все в словари, а там уже и отсортировать
>В плане summary?
4 строка:
new_issue = cur_issue.fields.summary
А в последней строке new_issue пытаешься как словарь использовать. Просто обзови по-другому, ты в переменных запутался.
image = np.concatenate((left_image, right_image)).tolist()
r = []
g = [] // двумерные массивы
b = []
for x, row in enumerate(image):
r_row = []
g_row = [] // одномерный массив
b_row = []
for y, pix in enumerate(row):
r_row.append(pix[0])
g_row.append(pix[1]) // элементы одномерного массива добавляются в одномерный массив *_row
b_row.append(pix[2])
r.append(r_row)
g.append(g_row) // одномерные массивы вставляются в двумерный массив
b.append(b_row)
i = np.array([[r, g, b]]) // двумерные массивы собираются в трехмерный массив
Нужно переписать на шарпе. Подскажите, сколько измерений здесь у итогового массива i? (комментарии я писал, когда пытался расшифровать, мб неправильные)
сука ты, выложил бы хоть на pastebin какой-нибудь, гандон ебал тебя в рот убегая
> сколько измерений здесь у итогового массива i?
4
https://repl.it/repls/EmbellishedPoorCryptos#main.py
.sort изменяет сам список и возвращает None, вот и получается у тебя None[0], что естественно выдает ошибку
не умеешь читать и писать, очевидно же:
1) sorted это отдельная функция, а не метод массива
2) метод sort возвращает None, а не сам массив, поэтому индекс от него брать бесполезно
Так у него полный traceback с описанием проблемы. Дебажить инфоцыгане не учат просто. Я спокоен за кококонкуренцию на галерах.
ага. а потом тебе в ученики такого дадут
Когда-то пробовал pyqt, очень годная вещь по сравнению с tkinterom, только документацию находил онли для c++
Я давно простые числа не пробовал находить, их можно быстро без решета искать? Не делил же ты каждое число на все предыдущие
1) чтобы макака могла не знать sql вообще
2) чтобы можно было за 5 минут переехать на другую субд, которую поддерживает orm
1. Как работодатель будет смотреть на проект, не будет же копаться в коде
2. Это достаточный уровень для джуниор?
3. Сколько подобного нужно сделать, чтобы смело идти на собеседования(в планах еще как минимум телеграм бота сделать на том же стаке nginx, gunicorn, django, и минимум еще один сайт, скажите если не прав)
> если есть достаточно простой sql синтаксис сам по себе
А теперь ебни какой-то невъебенный запрос. А так можно сделать все в одну короткую строку
Почитай про sql injection.
Если хочешь оптимизацию и скорость на стороне сервера:
1. MySQL stored proc как вариант, но заебешься поддерживать. Зато никаких проблем с безопасностью. Есть пользователь который может только запускать процедуры и все.
2. Оптимизация и дебаггинг на стороне сервера и их проводит DBA, а ты только свой код пишешь.
Из минусов, в Postgres с этим будут трудности, там другим путем пошли. При миграции и расширении функционала надо все разворачивать по новой. Опять же, задача DBA.
ORM может быть медленнее, но выигрыш будет во всем, что описал анон выше.
Это нормальная практика с учётом моделей ORM - Pydantic.
По поводу оптимизации скорости работы питона можно холиварить очень долго. Для некоторых пакетов есть плюшки [speedups], например использование simplejson или rapidjson вместо штатной библиотеки.
Недавно смотрел про какие-то оптимизации при компиляции пакета Python, где-то прирост 13-20%, насчёт стабильности никто не писал. Один хрен к 4 версии что-то новое придумают.
Выложи демо на Heroku, код могут смотреть. Это из разряда "покажи как решал эту задачу".
Забыл совсем. Стэк Django это ещё и Celery в связке с Redis/RabbitMQ (я сразу на FastAPI начал, надо мной никто не стоял с плёткой), в учебниках должны упоминать об этом как и в документации.
Есть лог файл с устройств в кастомном формате без определения уровня лога. Есть ключевые слова, которые указывают на успешную операцию или сбой в алгоритме. Необходимо будет выискивать такие проблемные места и соотносить с логом более низкого уровня (лог команд по серийному порту), которые дадут более цельную картину, что привело к нарушению алгоритма.
ML в чистом виде?
бле пишу крч парсер ебаный
нахожу элементы по xpath
и тут оказывается такая хуйня что текст который я хочу спарсить это блять не элемент а сука текстнеожиданно(ожидаемо)
скажите плес как это говно спарсить я уже весь этот ебучий селениум передрочил я просто не ебу гугол не знает
элемент пикрелейтед
Это обязательно джуну? Просто я пока даже не совсем понимаю зачем redis нужен обычным сайтам, когда sql подойдет, а про celery почитаю, но тогда можно к стэку и какой-нибудь докер требовать, но это уж точно мидл уровень, как и высоконагруженные системы всякте
Если я правильно понял, то от инъекций достаточно данные экранировать просто, а вопрос был не о производительности, а скорее о гибкости использования, да и переходить на другие субд не слишком большой плюс, слабо представляю как от обычного postgre/mysql потребуется перейти к чему-то более навороченому. Остается только вариант о том, что проще не учить sql, а писать компактный орм код
На практике часто приходится писать невъебенные запросы? На деле вместо select пишется objects, filter, вместо where и убираются промежуточные слова, а невъебенный запрос на орм как раз наверное сложнее реализовать. Пока писал понял плюс орм(как минимум у джанги, с sqlalchemy не работал), джанга хранит query сеты, не делая запрос к бд, пока не потребуется что-то ответить, наверное это действительно полезно
>переходить на другие субд не слишком большой плюс, слабо представляю как от обычного postgre/mysql потребуется перейти к чему-то более навороченому
Узко мыслишь.
Представь, что ты пишешь апликуху. Ты же хочешь написать список из кучи СУБД поддерживаемых, чтобы не сужать свой потенциальный круг клиентов, и можно было поставить на любое говно? Хочешь ведь.
SQL-запросы под каждую СУБД писать и тестировать хочешь? Я бы не хотел. Стандарт стандартом, а у каждой СУБД свои специфические функции и операторы есть, заебешься под каждую вести все запросы, все актуализировать и тестировать.
А с ORM тебе не придется вообще ебаться с этим.
Облегчение миграции на другую СУБД тут не основной плюс, но полезный. Спроси у тех, кто переносил с подыхающего sybase на какой-нибудь mssql свои старые поделия.
Redis in memory или как брокер вместо RabbitMQ для Celery. Если почитать практики на Хабре можно запутаться. Мейл.ру вовсю хайпит свой Tarantool, типо превзошли Redis и добавили отказоустойчивости и надёжности. Пока даже не знаю как его щупать. Базы у меня на террабайт нет.
>>3389
Если приходится писать невъебенный запрос уж лучше тогда вьюху запилить или засунуть кочергу в анус DBA.
LRU cache? Вот тебе и кэширование нативное. >>3411
За это деньги платят, что поделать.
Иногда просто ставят задачу и сам ищешь путь как ее выполнить. А потом уже доказываешь, что не говнокод, а фича. Как задачу сформулировали, какая инфраструктура такая и реализация. Хотели Agile - нате.
Ну зависит конечно от поставленной задачи, например в прошлой задаче нашелся вариант быстрее решета, а с тем алгоритмом которым я изначально пытался, он быстрее решета искал(в изначальном варианте) итый элемент простых чисел , ну и они оба жрут меньше памяти в отличии от решета, но возможно если задача стоит найти все от 2 до n числа, решето будет быстрее всех по скорости, но и кушать больше памяти офк, если задача стоит просто узнать является число простым, то выше я кидал ссылку на пастбин, там функция была на проверку >>1902
Я не особо шарю, есть у нас проект на джанго, будь это сайт, веб-сервис,, бот, и нам нужно его внезапно на 100 серверов установить, так зачем нам нужно использовать какие-то старые бд? Но общую мысль я понял, наверное действительно удобно, просто в голове не могу представить прикладную задачу
А, чекнул, все старый перебор до квадрата с прибавлением 2-х, я уж думал я какой-то способ не знаю, спасибо
>Или вообще Асинхронность в коде.
У тебя есть склад и колонна грузовиков, едущих забирать груз со склада. Синхронно - 1 грузовик загружается, все остальные ждут; асинхронно - 1 грузовик начинают загружать, в это время то же самое происходит с другими грузовиками, но как только первый загружен - кладовщик пиздует выдавать документы ему.
Как это делается? Нужно пилить свой фреймворк и юзать эпай звонки или уже есть такое?
Нет, асинхронность это асинхронность, а мультитрединг это мультитрединг. Т.е. когда при появлении нового грузовика рядом появляется ещё один разгрузочный центр и грузовик передается разгружаться там.
>а практике часто приходится писать невъебенные запросы?
Отчетность.
Многие не хотят городить DataWareHouse и отчеты ебошатся прямо в проде.
> Ты же хочешь написать список из кучи СУБД поддерживаемых, чтобы не сужать свой потенциальный круг клиентов, и можно было поставить на любое говно? Хочешь ведь.
Нет.
Потенциальный круг клиентов купит то, что наилучшим образом подходит к софту и что ему скажут. И запустит в докере.
разумеется, у этого элемента есть зацепка выше по дереву и есть подэлементы.
Раньше так делали. А почему именно xpath ? В селениуме по-другому неудобно?
эту еботу легко порешает девопс , отдай ее дядям, не программируй, не порть фигуру.
https://www.elastic.co/guide/en/machine-learning/current/xpack-ml.html
Задача уже не для прода. Проект закрыт, просто для разминки.
По поводу ELK в курсе конечно же. Кстати оверхед ещё тот, но не всем надо ресурсы считать, когда сроки горят и жопы.
Асихронность - это когда ты решил отужинать пиццей с чаем под кинцо. Ты заказываешь пиццу, и пока доставщик не приперся, ты
ставишь чайник, и пока вода не вскипела, ты идешь выбираешь кинцо. И вдруг тебе приспичило посрать, ты сидишь на толчке, в дверь истерично стучит доставщик, на кухне уже пожар, но ты ничего не можешь поделать, потому что у тебя блокирующая операция.
https://ideone.com/vfZrro
Хочу для своего проекта сделать возможность подтверждать юзера через письмо.
Как я понимаю это делается так.
1. В таблице юзера (у меня postgresql) добавляю колонку isVerified
2. Создаю вторую таблицу с токенами подтверждения привязанную к таблице с юзерами.
3. При регистрации, выставляю поле isVerified - фолс и генерирую токен, который ссылкой высылаю на почту юзера.
4. На клиенте делаю роут типа /confirm/:id на который ведет ссылки из письма
5. На клиенте на основе этого айди шлю запрос на конфирм, удаляю запись с токеном из БД и ставлю sVerified юзеру - тру.
Я правильно рассуждаю или это иначе делается?
Так же вопрос, какой почтовый сервис лучше использовать?
Лучше чем все курсы от Boston University, а главное наглядно.
Да, примерно так.
Насчет почты, самому ебаться с почтовым сервером это гиблое дело, там надо соблюсти дохуя всего и не попасть в засранные ранее адреса, а то будут в спам кидать или вообще режектить.
Посмотри сервисы вроде mailgun.
Благодарю. Запостил сначала в JS так как я на node.js делаю бекенд, но так как вопрос от языка мало зависит, решил запостнуть и сюда. Рад что так быстро получил ответ. Там 2 дня ждал и безрезультатно(
>Один хрен к 4 версии что-то новое придумают.
Но пока разговоров про 4 версию нет, релизы будут в стиле 3.10, 3.11, 3.12 и т.п.
Формировать новую ветку будут, если захотят внести принципиальные изменения. Но вроде пока об этом не говорят.
В ближайшее время каких-то значимых изменений в языке вроде бы не намечается.
>ORM может быть медленнее, но выигрыш будет во всем, что описал анон выше.
ORM это некая серебряная пуля, которая якобы должна решать проблемы, но реально не очень решает. В результате разработчик должен думать о том, как его код с ORM будет выглядеть в виде запросов к БД. В Джанго, например, легко было во вроде бы элегантном коде по факту получить сотни запросов к БД ради генерирования одной страницы с какой-нибудь таблицей. Что мягко говоря раздражает. Надо специально модифицировать и портить код так, чтобы он разложился в нормальные SQL запросы.
Ну а разве не всегда так?
Инструмент А решает проблемы из списка, но добавляет необходимость дополнительных тестов.
Я например столкнулся с проблемами коннекторов, то что есть в SQL Alchemy в новомодных aio-libs банально отсуствует или надо пилить свою реализацию.
Что делать если БД недоступна и connection pool просто протух? Это же банальная вещь, и такое бывает. Предлагают сразу коллбэки пилить для реконнекта/запросов из реплицированной БД.
Мне кажется банально таких вещей не хватает. Tortoise ORM еще минимум 2 года будет пилить версию 1.0.х, хотя уже видно что будет куча PR и чатик в issues.
Ждун джангу. Посмотрим.
Итого макаке нужно знать как делать в запросы в орм. И прощайте все плюшки конкретной базы данных. Более того, иногда макаке придется опуститься до sql
А все потому что "а вдруг переедем на другую бд"
>2. Оптимизация и дебаггинг на стороне сервера и их проводит DBA, а ты только свой код пишешь.
вы там вообще охуели? у DBA зачастую нет никакой возможности что-то оптимизировать.
Если только не очень-очень говнокод пишете.
Все оптимизации DBA заканчиваются обычно пересмотром бизнес-логики и выкидыванием целых фич из продакшна.
И даже хуже.
В красивой теории ORM должен помочь отделить код БД от кода приложения. И в какой-то мере так и есть... Но вместо этого код фактически переезжает в представления. То есть для разработчика вьюшек всё прозрачно, но при этом он должен думать, сколько запросов на вьюшку потребуется, но под капотом фактически код выполняется во время обработки вьюшки.
И из-за этого физически не разделишь генерирование страницы и код, отвечающий за получение данных. А как раз именно это и хочется в первую очередь разделить. Генерировать страницу может другой сервис, или даже клиент сам. Но для этого нужен готовый объект с данными, который ты получаешь через какое-то API. Но готовые объект с данным в корне противоречит самой идее ORM.
В итоге от ORM почти ничего не остаётся.
так в том и смысл что нету, это просто текст в теге div в который там записано вообще пол сайта, но этот даже элементом не является и из указателей на него только xpath ни селектора ни классов ни имен ни ссылок ни атрибутов
вот ссылка если что, не вытаскиваются перевод слов
https://am-en.ru/conversations/vocabulary.html#a
уже сделал на matplotlib, а graphviz гляну
Делю 1000 - int на 1000.0 (float) , получаю 1.099, WTF.
Бтв возможно гуглю жопой как обычно, но я нипанимаю
Если запускать с консолечки через python file.py то такая же хуйня.
Как фиксить?
>>4015-кун
Да это понятно.
Почему вывод в sys.stdout.write отличается от вывода print?
Причем на 10%.
В 0.1 + 0.2 не будет 0.33 или 0.27, даже со всеми нюансами суммирования чисел с плавающей точкой.
если и баг то не у него одного, сейчас у себя чекнул, в пучарме, получил вот это
Тут явно не в вычислениях проблема, ты ведь строку передаешь в stdout. Скорее всего stdout байтики от себя добавляет.
Ну так баг во всей этой строке, а не в вычислении, это очевидно. Надо методом исключения его поймать.
Это результат функции write, количество высранных символов, лол.
Собрались эксперты.
Покекал.
Но тогда бы мне выводило на каждой строке ошибки, а выводит не на каждой
Можешь запустить, несколько ошибок в середине и в конце какой то треш
https://pastebin.com/FMzKTRVj
Ну только все починили, ты опять
Да это вообще норкоманская хуйня, там какие-то ужасы под капотом.
да я тот же самый
>>> sys.stdout.write(str('1.0'))
1.03
>>> sys.stdout.write(str('1.00'))
1.004
>>> sys.stdout.write(str('1.000'))
1.0005
>>> sys.stdout.write(str('1.'))
1.2
>>> sys.stdout.write(str('1'))
11
>>> sys.stdout.write(str(''))
0
>>> sys.stdout.write(str(' '))
1
Но это только в idle, если запускать как программу, то такого эффекта нет. Специфика питон-шелла.
Да уже ведь разобрались, сначала функция выдает в поток строку, которую ей передали, а потом возвращает количество символов в строке в стандартный поток вывода, в данном случае, туда же. Как-то так.
Какая блять специфика.
write выводит без ньюлайна в конце и в сосноли выводится возвращенный результат сразу.
ну сделай write('1.0\n'), будет как с принтом.
Именно специфика. При нормальном исполнении поведение другое, длина строки не печатается
>>> sys.stdout.write('1\n')
1
2
>>> print('1')
1
нормальное исполнение
> cat p.py
import sys
sys.stdout.write("1\n")
print("5")
python3 p.py
1
5
Ты тупой или притворяешься?
Это то же самое, что ты напишешь 3+2 и выведет 5 в шелле, а если написать 3+2 в py файле и запустить, то нихуя не выведет.
Юпитер выводит не в стдаут. Он просто в интерактивной манере вставляет последнюю строчку стдаута и метч под каждый принт стейтмент под каждую заэкзекьюченую селлу
да гуглил я похоже вообще нет варианта достать текст вне элемента только всю хуйню сразу
А почему тогда этот юпитер в первом примере с которого тред свалился в детективное агенство выводит 1.09 и иногда 1.099 если делить 1000/1000.0 ?
Бтв, вывод юпитера совпал с системным.
А сейчас не выводит никаких гуков на деревьях (символов в конце строки) на примере анона, у которого эти ебаные гуки на месте.
>всех
Тебя, нян? Или вас двое?
>решил теперь в /pr/ перейти
Я тут сижу ридонли, тому что писать нечего
И так и буду ближайшее время наверно
Просто о чём разговаривали решил проверить и что в питоне 2 не так написал, нян
>хуесос
<3
ты я так полагаю ввиду имеешь сам интерпретатор?, а то некоторые могут с каким нить башем или кмд спутать
Эта хуйня официально называется python interactive shell.
Поступает она простой строкой формата YYYY-MM-DD (которую всегда можно привести к тому виду, который захочется), надо убедиться что там не будет месяца под номером 13 или 29го дня в феврале невисокосного года. Пока что все что нашел это создавать объект datetime.datetime() и првоерять на выпадение ошибки ValueError
>Пока что все что нашел это создавать объект datetime.datetime() и првоерять на выпадение ошибки ValueError
А чем не нравится такой способ? Ничего лаконичнее, наверное, и нет.
>првоерять на выпадение ошибки ValueError
ну так норм жи. ловишь ValueError и пробрасываешь дальше какой-нибудь DateValidationException
вот еще вариант
Благодарю, Анон. Охуенно!
Join завершает поток, Lock блокирует выполнение. В документации же написано.
sys.stdout.write возвращает количество символов, которое было выведено на экран, а Jupyter печатает это количество если ты не записал его в переменную. У меня он сейчас не установлен, но такое же поведение наблюдается в консоли пайчарма.
В JS асинхронность более нативная и прозрачная. Если ты определяешь функцию через async, то при запуске через await такой функции она уже автоматом стартует асинхронно.
В питоне это не так. В питоне даже если ты оформишь функцию через async, и вызовешь её через await, выполнение всё равно будет синхронным. Тебе необходимо запустить соответствующую корутину как задачу, через вызов create_task, ensure_future, или некоторые другие вызовы.
В общем в питоне асинхронность совсем не очевидная и имеет нюансы, подводные камни.
Создаю класс, например кнопка. Кнопке задаю всякие разные поля типа текста, размера, координат и прочего. Далее создаю метод, который будет вызван если кнопка нажата.
Я хочу чтобы для каждого отдельного экземпляра класса внутри этого метода вызывалась своя уникальная функция.
Как мне это завернуть?
Пробовал при создании экземпляра в качестве аргумента передавать нужную мне уникальную функцию, а ее использовать в качестве аргумента для метода нажатия кнопки, но так не срабатывало.
ты ее со скобочками передавал или как объект?
Ставишь хендлер (функцию) как атрибут экзмепляра, хуле. Это стандарт
class MyClass:
----def __init__(self, func):
--------self.handler = func
Та я тебя с пониебом спутал, который срет непрекращая в линукс-тред, цвета на десктопе у вас похожие, извиняй.
Привет, погромисты.
Как получить класс-предок в питоне (сам объект или хотя бы имя)? Уже 20 минут гуглю, ничего найти не могу.
Допер сам вооружившись dir():
Obj.__weakref__.__objclass__
Спасибо питухону за синтаксис. Внутри кода класса это делается простым super(), но извне вот так коряво.
Можно было попробовать вооружиться гуглом сначала
>>4652
Пропустил этот момент
Всех предков класса можно найти через classname.mro() или classname.__mro__
https://docs.python.org/3/reference/datamodel.html#invoking-descriptors
Не понятно, что конкретно тебе надо? Откуда тебе надо вытащить класс предок? Из self?
Любите Петухон, посоны. Им можно хуйнуть список в множество, потом обратно в список и сразу его отсортировать в одну строку.
В Шарпе нельзя. Храни Господь питон.
Удобство или байтоебство, всегда есть два стула.
>Его я знаю слабо, поэтому набросал в Петухоне код, а потом начал переносить в Шарп.
Питон как макетная плата?
Я синтаксис шарпа знаю хуёво. Если не знать синтаксис и при этом пытаться решить какую-то задачу, то точно нихуя не выйдет. Написал в питоне, проверил что всё работает как надо, перенёс логику в шарп.
>В Шарпе нельзя
можно конечно. И более привычным "цепочка вызовов", чем в питоне где си подобно.
Окей, буду знать, спасибо.
На самом деле, в пистоне все можно представить как объект класса. Например [1, 2, 3] - объект класса list, или "иди нахуй" - объект класса string.
Читни основы ООП или в ютубе там посмотри.
>А что такое класс, и нахуя он нужен
Для моделирования объектов в твоей программе. Для наследования от других классов. Это одновремено и
>чтобы 300 раз не копипастить эту последовательность
и позволяет структурировать код, чтобы любой васян открыл твою программу, и разобрался где какой код к чему относится.
Открой любую книгу из шапки для начинающих, обычно всегда дают ОЧЕНЬ простые примеры на уровне животных, машинок и т.д.
Твой вопрос относится к концепции ООП, а не к самому питону.
Допустим, тебе в игре нужно сделать персонажа-человека. Он должен уметь ходить.
Объявляешь класс "человек" и описываешь метод "ходить()".
Теперь ты одной строчкой можешь создать объект-экземпляр этого класса.
Потом тебе понадобился персонаж-пидор. Он тоже должен уметь все то же, что человек, только еще сосать хуй.
Ты создаешь класс "пидор", наследуя от класса "человек", и все что тебе дополнительно нужно, - только описать метод "сосать_хуй()".
Я думаю что вопрос именно в том, зачем nginx как прокси до хуевенькой джанги, можно же поставить приложение хоть на nginx хоть на апач допустим непосредственно
не питонист
Есть ли хоть что-то, что на дваче не смогут пояснить через хуи и пидоров?
>Допустим, тебе в игре нужно сделать персонажа-человека. Он должен уметь ходить.
>Объявляешь класс "человек" и описываешь метод "ходить()".
>>5067
>На самом деле, в пистоне все можно представить как объект класса. Например [1, 2, 3] - объект класса list, или "иди нахуй" - объект класса string.
Я сейчас конечно почитаю, но все-таки перед этим еще спрошу. Это же язык, мы оперируем тут буквами и цифрами. Соответственно типа и объекты под них сделаны, т.е. можно взять именно числа, можно брать просто сколько-то цифр и букв вместе(строки), можно сделать их отдельными и идущими подряд в списке, можно сделать словарь и т.д. А когда мы делаем свой класс, мы же не можем ничего принципиально нового добавить. Все те же комбинации букв и цифр, значит вся суть, чтобы к нему прихуярить метод? А почему мы просто не можем сделать функцию, и хуярить ее к тому, чему хотим, без классов? Ладно, вы меня все равно сейчас пошлете нахуй читать, так что наверное пойду и займусь этим.
По сути это свой собственный тип данных, используется для долгосрочной разработки, если скрипт маленький, то не нужен.
Забей пока, рано тебе ещё голову забивать этим
Джанго демон однопоточный и мало чего умеет.
Например вот такая простая ситуация, у тебя клиент делает запрос, но ответ из-за медленного интернета долго забирает. Всё это время твой джанго процесс будет заблокирован. А nginx просто положит в буфер.
И это актуально даже при мирном использовании, когда твои клиенты добропорядочные (сервер для внутренних нужд).
Nginx может хорошо и быстро обрабатывать статику, что тоже полезно.
Как ты поставишь приложение на nginx-apache? Они не умеют питон обрабатывать. Они могут только перенаправить поток на другой сокет, но этот сокет может уже работать на другом протоколе, не обязательно на http. Задача nginx обработать http, транслировать в wsgi, подключиться к джанго, получить ответ, сложить его в буфер и отдать клиенту.
Смотри, функция тебе помогает в том, чтобы делать какое-то действие и не хранить состояние. Каждый раз функция запускается заново и не знает, что её уже раньше запускали.
С помощью классов ты создаёшь "объекты". Объект это такая штука, у которой есть состояние, то есть внутри объекта лежат переменные, которые меняют значение.
Методы класса это такие функции, которые имеют доступ к переменным объекта.
Объекты нужны не всегда, конечно.
В пистоне все сделано под объекты, и объектами мы оперируем. Класс - это тип объекта.
Смотри, например есть список l = [1, 2, 3]
l - это объект класса list
если мы напишем l.append(4) в конец списка добавится значение 4.
append() - это метод класса list, тоесть функция описаная в классе.
>А когда мы делаем свой класс, мы же не можем ничего принципиально нового добавить.
Ну навскидку, мне надо оперировать векторами. Сложение, вычитание. Или пример с персонажами. Это все реализовать линейно можно, но когда векторов или персонажей дохуя, твой код превращается в голимое чтиво. И если надо что-то изменить, добавить или убрать, надо вычищать тонны говнокода. А применив классы я просто меняю в одном месте метод, и во всех персонажей хуй увеличевается с 12 до 21 см.
Причем чтение кода превращается в подобие обучению языку, что близко всем. Ты просто разбираешся как работает тот или иной метод класса, + у тебя появляется возможность поменять поведение определенного метода, или добавить новый.
>можно сделать словарь и т.д. А когда мы делаем свой класс, мы же не можем ничего принципиально нового добавить. Все те же комбинации букв и цифр, значит вся суть, чтобы к нему прихуярить метод? А почему мы просто не можем сделать функцию, и хуярить ее к тому, чему хотим, без классов?
В случае питона фактически так и есть. Объект на самом деле фактически словарь, а методы классов это обычные функции, которым ты первым аргументом передаёшь словарь.
Но вот подумай, как ты будешь, например, просто создавать этот словарь и заполнять его значениями по-умолчанию? Тебе придётся придумывать свои велосипеды вместо конструктора объекта и т.п.
Классы - это просто значительно более удобный синтаксис, общепринятый для разных языков, плюс поддержка языка, где ты можешь смотреть типы объектов, делать наследование и т.п.
ООП пришло как расширение обычного программирование, но чем сложнее программа, тем больше плюсов ты можешь получить от ООП подхода.
Гугл в помощь.
Короче, пока тут хуйни тебе понаписали. Если у тебя ебически большой проект, то ты просто охуеешь оформлять его функциями . Ориентироваться в нём будет очень сложно, а поменяв одну функцию сломаешь нахуй всю программу. ООП структурирует большой йоба-код в удобоваримый вид. У тебя есть классы с такими-то свойствами и методами.
Допустим, ты сделал функцию, которая описывает человека, и на её основе запилил здоровенный код. Потом у человека внезапно появляется новое важное свойство - он теперь умеет срать, не снимая свитер. Если программа у тебя процедурная, то тебе придётся всё перепиливать, а так тебе будет достаточно просто наследовать все свойства от предыдущего человека и объявить, что теперь класс-наследник может то же самое, но + срать не снимая свитер.
ООП это не что-то сверхважное, как например основы синтаксиса. Ты начнёшь им пользоваться, когда в этом возникнет потребность. Пока можешь описать всё функциями - описывай функциями и не еби себе мозги.
>>5059
Это снова я. Нашел эту серию видосов https://youtu.be/25Ds7aeTyOQ , вроде очень понятно все разжевано, тут я хотя бы понимаю что происходит, не в пример заумному курсу на степике, где лектор мне кажется пытается выебнуться и задавить терминами, а не объяснить. Одна беда, автор канала хитрая жопа и часть видосов видна только донаторам. Есть что-то настолько же для дебилов, но бесплатное? (только не говорите про документацию, я же говорю, для дебилов)
Спасибо, но я курс пытаюсь проходить, в котором основы синтаксиса уже закончились, и теперь пытаются ебать как раз этим ООП видимо. Грузят про область видимости переменных, объекты и всякую такую хуйню. Беда в том, что первая часть курса, про синтаксис пилилась другими людьми и была еще туда-сюда понятна (да и темы как мне кажется проще были), а тут лектор так себе поясняет
Херню ты какую-то пишешь. Есть куча огромных проектов, написанных на Си или ещё каких простых языках, где никакого ООП нет и в помине, и ничего, работают.
Всё прекрасно модифицируется при грамотном проектировании. С ООП часто модифицировать сложнее, вдруг оказывается, что ради добавления свитера тебе надо менять всю иерархию классов, что ломает весь код вообще.
Выделение в объект становится актуальным тогда, когда ты в программе работаешь не с одним человеком, а с несколькими. Под каждого надо выделать как-то ресурсы, не отдельные переменные, а массивы, вводить идентификаторы. Или делать те же словари. Плюс ты обнаруживаешь, что у тебя засрано пространство имён.
В случае объектов ты делаешь
dog = Dog()
man = Human()
dog.feed()
man.feed()
всё более-менее понятно, а без объектов тебе надо уже писать функции вроде
feed_dog(dog)
feed_man(man)
что как бы грязно.
То есть даже без наследования и полиморфизма объектный синтаксис несёт много пользы.
Я тебе так скажу, читать книжки по теории ООП почти также бесполезно, как и читать книжки по паттернам проектирования.
Тебя грузят какой-то терминологией, зачастую ненужной, приводят какие-то искусственные надуманные примеры, а ты сидишь и думаешь, зачем эти извращения, когда можно проще.
Но реально эти технологии нужны, когда код уже очень большой и сложный, и ты сам думаешь, как бы его организовать, чтобы хоть как-то можно было адекватно спроектировать так, чтобы это дошло до рабочего состояния. Причём там ты сам в состоянии много чего переоткрыть. Но учишься больше на примерах, чем по теоретическим книжкам.
И ещё, две большие разницы, ООП вообще и ООП в питоне. В питоне номинальное ООП.
Ты должен понимать, что ООП как технология появилось из компилируемых языков вроде C++ и Java (придумали ещё раньше, но не в массовых языках). В них нет много чего такого, что совсем естественно в питоне.
Поэтому там ООП строже и стройнее. В питоне от него почти одно название, необходимость не такая острая.
Если тебе нужно понять, откуда многие концепции ООП идут и зачем они, тебе надо погружаться в C++/Java, может C#, я его просто не трогал, не знаю.
В питоне всё проще.
хуй_пизда_джигурда20052134
хуй_пизда_паук120042330
хуй_нигра_ЧВ12005321
Мне нужно в идеале разделить их на два столбца, где в одном будут хуи и пезды, а в другом - числа. Числа, к слову, разнятся в длине от 7 символов до 9.
Я подумал, что можно просто провернуть эти строчки через регулярки, вычленив числа, но код почему-то не работает - возвращает пустые множества []. Что не так?
алсо формулировки пиздец, вот в can_add True и False вообще надо выводить? А если надо, то как, принт и объект бул, или принт строка тру/фолс. Не понимаю просто.
>Гарантируется, что метод add(self, v) будет вызываться только если can_add(self, v) – True.
Вот тут тоже хуй знает, что они имели в виду? Что они обещают проверять только такими значениями, при которых это будет тру? Или я должен сделать ограничения, чтобы функция нахуй слала?
Можешь подсказать, где именно? Я посмотрел вот этот пример https://www.w3schools.com/python/trypython.asp?filename=demo_regex_set6 и дописал туда свою ситуацию - всё работает.
Я просто совсем нуфаня.
Хирьянова алгоритмы на ютубе. Практика в этом курсе очень хорошая, чего там только нет.
https://stepik.org/course/512/syllabus Ты вот этот же курс проходишь, да? Тоже сегодня его нашел, думал потыкать. Что вообще кто из анонов может про него сказать, норм?
Если я правильно понял задачу, то у тебе нужно что-то типа
[0-9]{7,9}$
а не говно вместо регулярки как у тебя
и да, если у тебя одно вхождение может быть, нахер тебе findall
делай что-то типа
pos = re.search("[0-9]{7,9}$", line).start()
для получения позиции и сплитай строку, я бы так сделал
> вот в can_add True и False вообще надо выводить
у каждой функции есть возвращаемое значение, оно идет после return. В твоей реализации return нет, значит функция возвращает None. А должна True или False
> Вот тут тоже хуй знает, что они имели в виду
имели в виду то что написали, то что метод add должен только добавлять, проверку can_add сделают они сами и внутри тебе ее чекать не надо
Если после питона и функциональщины начать погружаться в Джава ООП можно кукушкой поехать.
Тут уже скидывали статью про ОРМ. Пока доберешься до сути уже слоев 10 пройдешь и в итоге выстроить цепь связей и интерфейсов.
Про KISS (keep it simple, stupid) как-то всё стали забывать. Брать Java потому что там JVM и кроссплатформенность? Ну так себе затея, оверхед будет всегда. Как по мне, не получится что в питонеч что в джаве сразу на двух стульях усидеть (скорость разработки и скорость работы кода).
Когда говорят, что <language name 1> медленнее чем <language name 2> забывают о том, какие ресурсы уходят на разработку и какие на тесты. Python можно отдебажить на любом этапе, можно даже без unittest. Даже в проде можно будет оперативно перейти в DEBUG, а как там с Java? Хуй плавал.
Почему все дрочат на Java? Потому что заставляет писать понятный код, а не лапшу. Можно ли делать красивый код на Python без лапши и использовать паттерны? Конечно можно, в любом языке можно писать код без лапши.
JVM все равно не серебряная пуля. Она не будет решать проблемы говнокода.
>Потому что заставляет писать понятный код, а не лапшу
Вообще то ж наоборот. Жаба выразительностью никогда не отличалась. Сам же пишешь "Пока доберешься до сути уже слоев 10 пройдешь"
в питоне модули хорошо, но они же и зло. в 1 файле получается куча кода. неудобно
надуй ты .venv открыл?
держа проекты и вообще данные в винде на диске С - не только файлик потеряешь в итоге
П.С. до этого писал много парсеров, работал с потоками и по мелочи
Я подразумевал либовь жавистов к абстракции и интерфейсам.
Так пожалуйста пиши свои интерфейсы в другом файле, не проблема же.
>либовь жавистов к абстракции и интерфейсам.
Это любовь любого нормального программиста, причем начинается уже на уровне железа.
z = input("Операция" )
x = float(input("Первое число:"))
y = float(input("Второе число:"))
If z == "+":
c=x+y
print("Результат " +str(c))
elif z == "-":
c=x-y
print("Результат " +str(c))
elif z == "":
c=xy
print("Результат " +str(c))
elif z == "/":
c=x/y
print("Результат " +str(c))
else:
print("Хуйню написал!")
Всё ок, но хули ты жабу поставил?
Да и код хуйня с копипастом. Сделай модненько, словарь с лямбдами, все дела.
Господи, фейл за фейлом.
https://ideone.com/9eo3P1
Не ок, там такое:
If z == "+":
^
SyntaxError: invalid syntax
Почему?
У меня ничего не получилось бы без тебя, спасибо большое :3
Бамп, помогите пожалуйста.
>>5139
Вот это я дебил жесть, забыл прикрепить, вот весь лог: https://pastebin.com/vrAXpirG
Все понял
Как ставить хакирские цвета выучил, уже хоршо.
>Установи пакеты build_essential и python3-dev, тогда приходи.
У меня нет пароля для установки пакетов в линупс, как я понял.
Значит ли это что с помощью nginx можно сделать однопоточную программу (вроде синхронного приложения на Джанго) условно многопоточной? Так как разные соединения будут обрабатываться в разных воркерах nginx?
Этим занимается прежде всего какой-нибудь гуникорн, а не нджинкс
>Если после питона и функциональщины начать погружаться в Джава ООП можно кукушкой поехать
Объектная модель всё-таки там стройная, но платформу делали под ООП, когда был хайп вокруг ООП, и стиль программирования соответствующий выработали.
ООП подход часто снижает гибкость, чем больше слоёв, тем меньше гибкости.
ООП в питоне убого реализовано, немного раздражает. Главным образом наследование.
Но и не нужно на питоне писать в стиле классического ООП, потому что оно важно, когда язык компилируемый, с сильной статической типизацией. Те проблемы проектирования, которые необходимо в C++/Java решать с помощью развитого ООП, в питоне часто решаются проще.
Ну смотри, тебе в любом случае тогда надо запускать несколько копий джанги. А нжинкс уже в принципе может раскидывать трафик по ним, он это умеет.
То есть в промежуточных гуникорнах и т.п. решениях необходимости нет. Но тебе в любом случае необходим какой-то менеждер процессов, который будет следить, что запущено нужное количество копий джанги, перезапускать их и т.п.
В пизду этот sys.output, вообще рандомную поеботу выводит
class Base(ABC):
def __init__(self,data)
def func1(self)
def func2(self)
def func3(self)
@abstractmethod
def func4(self)
class A(Base)
def func4(self)
class B(Base)
def func4(self)
def funcb(self)
class C(Base)
def func4(self)
def funcc(self)
Нахуя нужна эта абстрактная залупа в родительском классе, если можно спокойно определить func4 отдельно в каждом классе?
Чтобы заставить наследующего от абстрактного класса, реализовать метод, который лень или невозможно реализовать в абстрактном классе. Абстрактный класс, это такой же контракт как и интерфейс. Контракты используются чтобы принудить к какой-либо конвенции в коде.
ну есть скрипт в процедурном стиле и в перспективе буду его расширять, просто охото посмотреть на уже существующие паттерны/билды на питоне, чтобы ща не велосипедить
то есть подключение к influxdb юзать pandas, например
А надо ли.
Вот я упоротый шарпист. И в шарпе же метод без класса существовать не может и вообще "классы наше все". И мне очень нравится собирать из классов, как из кубиков, граф объектов с помощью контейнера (IoC), потом просто пнул и оно покатилось. Если часть системы нужно изменить, то подкладываешь другие кубики. Потому там интерфейсы и рулят.
но в питоне меня ждал облом. импорты они же вытягивают зависимости. То есть в шарпоподходе класс обьявляет контракт и в него заталкивают зависимости, а питоне модуль сам вытягивает на себя
Конечно можно собирать граф из классов, но как то это чужеродно выглядит. Я в итоге перестал выделываться и сместил акцент с "построим нужный граф объектов" на "в конфигах переконфигурируем". И если нет особой причины делать класс, то и не делаю. Да даже есть то не всегда - модули точно так же классы синглтоны
ну классы щитай обертка на функциями, просто берешь и пачками управляешь всеми ими из входной точки, то есть если без классов лепить то нужно будет знать какая функция где находитс, кароч мб ты и прав, пойду лучше навелосипедю че нить, рано мне еще мыслить о высоких абстракциях
>ну классы щитай обертка на функциями
класс хорош тем что может инкапсулировать свое состояние и таких инстансов больше одного
а как хранилище функций - модуль такое же хранилище
А в питоне всё объект.
А если нужен контракт,то есть Protocol - он вообще для всего на свете. Вот у меня в последнем лисапеде плагины просто модули в папке.
>знать какая функция где находитс
Еще пример. В шарп например если я делаю вебапи какой я вешаю аттрибуты роутов и внешний механизм бегает по сборке и ищет эти аттрибуты и регистрирует их у себя.
В питоне вместо аттрибутов декораторы. но механизм у них обратный - они сами вызывают кого надо (если им надо). Например фастапи не сканирует модули на наличие роутов, а на каждым роутом висит декоратор, который и регистрирует функцию где оно там надо.
заведи такой же декоратор и ничего знать не нужно будет.
Погоди, а зачем здесь ретурн? В случае проверки на вместимость мы просто делаем принт, он и без ретурна работает, а в случае с добавлением монет - это же self.v внутри класса, она и так увееличивается, я в консоли чекал
Кстати, редко вижу что кто-то использует wrapper, каюсь и сам редко пользовался. Каждый раз руками прописывать логирование пиздец какой-то, теперь в следующих проектах только обертки.
Тебе в любом случае надо отталкиваться от функционала твоего приложения.
Нет универсальных методов и идеальных практик для всего.
ООП лишь инструмент. Твой код что-то делает. Тебе надо добиться того, чтобы логика была ясна, чтобы код можно было поддерживать. Из этого думать об архитектуре.
В зависимости от задачи наилучшие подходы могут быть противоположными.
ООП нужно тогда, когда в логике твоей задачи явно присутствуют ОБЪЕКТЫ. Которых много, у которых есть внутреннее состояние, над ними проводятся какие-то действия.
По-настоящему ООП работает, когда у тебя много похожих, но в то же время разных объектов, часть кода общая, а часть кастомизированная.
Это ты про рефакторинг говоришь, когда уже есть код и надо его приводить к бизнес процессам с оглядкой на сущности (о как).
А в Java/C# идут по пути описания бизнес процесса и связывании сущностей. А потом уже говнокод идёт.
https://pda.litres.ru/stiv-makkonnell/sovershennyy-kod-prakticheskoe-rukovodstvo-po-razrabotke-programmnogo-obespecheniya/?utm_source=google&utm_medium=cpc&utm_campaign=search_dsa_ohvat_f|2087774395&utm_term=&utm_content=433453034319{phrase_id}_{source}_{source_type}_{region_name}_9047028¶m_2=987239&gclid=Cj0KCQjwp4j6BRCRARIsAGq4yMHzWtMBG8_-IJQlVOmXs-2QNL6XisjSVQyqx12MBRtSjqYiEKmNf-caAo2vEALw_wcB
Спиздите этот талмуд, будет понятнее.
>Это ты про рефакторинг говоришь
все правильно он говорит. много задач которая решается тупо модулями с функциями без единого класса.
Через обертки?
Я коннекторы все расширял через классы, потом с инстансами проще работать.
Типо self.connected = False, если соединение установлено, то True и тогда не приходится при старте сразу в Exception лезть.
Питон позволяет так делать это факт, но тогда надо хорошо документировать простую функцию.
вообще не знаю о чем ты. В питоне в основе всего модули и много задач, где просто дергаешь модуль и ооп даром не нужен
вопрос всем
как организовать проект чтобы
python setup.py bdist_wheel
не засирал все на свете. ладно он срет на уровне где сам лежит, так еще и внутри рядом с пакетами создает projectname.egg-info
бесит
будет вызван pip для этого питона. ведь pip всего лишь модуль для питона.
когда в системе несколько питонов, что обычное дело для всяких там линуксов когда 2.7, 3.6 и 3.8 стоят и поди разбери где чей pip
Самое сложное ещё впереди
>поди разбери где чей pip
В принципе можно вызвать командой pip3 или pip3.8.
Если ставишь в виртуальное окружение что-то, то можно просто указать полный путь до pip соответствующего, и всё сработает как надо без активации окружения.
В телеге? Или запилить веб-страницу?
А нахуя ? Возвращается результат рекурсии а я к нему звездочку прибавляю разве нет ?
А всё понял опертор + же с возвращаемым работает значением
Это была хуевая реализация алгоритма поиска пути в Macromedia Flash, который я сделал "из головы".
Но там я не передавал в новый вызов значение, массив с ценами пути хранился в глобальной переменной, а в самой рекурсивной функции были условия запуска следующего шага/остановки.
Пиздец духота. Пройди практику у хирьянова на рисование фракталов рекурсивно лучше. Нахуй тебе такие задачки. http://judge.mipt.ru/mipt_cs_on_python3/labs/lab8.html
В первую очередь это удобная архитектура, когда nginx быстро обрабатывает большую часть клиентов и только при необходимости проксирует на вебсервер для джанго, так же мы стараемся максимально заранее формировать кверисеты и только когда нужно делать запрос к бд, просто чтобы не перенагружать систему
Человек, который хочет найти проект, чтобы сделать что-нибудь интересно, стэк указал, разобраться с чем-то новым смогу
re, random, math
скайнет вестимо.
сяпки
ЧТо делать если питонопараша выдает ошибки из Си и спп?
Думаю, опытные господа итт сталкивались с таким, когда библиотека на сишках, а обертка хуй пойми как наговнокодена на петоне.
Гуглить.
Да кому не похуй ей богу, реквестс это скорее про работу с апи. Мне нужно было написать навыки с курсов? Или раз уж стэк, то писать про nginx и gunicorn? Когда это нахуй не будет нужно
Возможно ты поел говна не установил сторонние либы для ОСи. Как python-dev для линуха например
ну чтобы код положил данные и я этим хелпером пошел и проверил что они там какие надо
ну и обратное - закинул в базу данных (не хочу скл городить) и выбрал тестируемым кодом
очень не хочется писать велосипед на 1 раз
okay google python read file line by line
1 читаешь весь файл в память
2 сплитом разбиваешь на строки
3 делаешь словарь "номер - строка"
и потом уже итерируешь словарь
признаю. я забыл отсортировать по ключу словарь. посыпаю голову пеплом )
Как только нажал кнопку отправить знал что этот ответ будет, переформулирую, как это сделать?
блин ну это вопрос из разряда "как положить бегемотика в холодильник"
ну а какого ответа еще можно ожидать
чтение инпута какое то странное.
просто не может не быть в инпуте не 2 значения
и [] не нужен
и проверка ниже не имеет смысла
короче забей, я дегенерат. с формулированием запроса я разобрался, мне нужно сделать так, чтобы при написании команды последовательно считывалось три сообщения
на каких?
потому что вот я который знать не знает про хттп2.0 моментально нагуглил hyper и по одному взгляду на пример понял как в нем шлется конкурентные запросы
вдумчиво изучаешь основные концепции любого языка
чтобы аж очень вдумчиво и основательно в общих парадигмах
потом вктываешься в любой язык. Кроме нейросетей.
пайтон вроде освоил, requests, json, и всякое такое. думаю этого не хватит, может для гита чето запилить?
в виде веб суйта?
Чёт я хуй знает что ты добиваешься своим словарём. На мой взгляд решается от противного: если есть буквы в 1м слове одинаковые И во втором слове на позициях этих букв буквы РАЗНЫЕ, то ответ - нет, иначе - да.
Не нихуя, не проходит, короче какая-то изъёбистая комбинаторная хуйня, тут одним проходом не получается, думал, что такой метод сработает
Шо?
Вообще автор фреймворка на сайте написал почему он вообще взялся за FastAPI и да, с оглядкой на Flask. Простота и удобство разработки + всякие приблуды для документации в виде OpenAPI.
А что не так? Он от команды encode ещё и databases взял для примера. Это ж FOSS
Это кстати не он твитил чет, типа его собеседовали куда-то на разраба и послали нахуй, потому что недостаточный опыт работы с этим фастАпи?
Он.
Encode кстати и uvicorn тащат, они правда меня нахуй послали два раза: по поводу кастомного логгера (я хотел асинхронный въебать) и по поводу запуска uvicorn в виде child process, сами что-то там нахуевертили и теперь с 0.8.6+ так делать нельзя.
>А что не так?
Да нет, все так, просто смотрю на документацию и вижу практически то же самое, что и в каком-нибудь фласке/айохттп, не без своих фишечек, конечно, но в целом все то же
Так уже ничего нового не выкатят. Либо uvloop и быстрые декодеры, либо комбайн all in one.
Нет, мало того, я загуглил и на стеке тоже никто не может) Ебал я этот headhunter с такими задачками
https://ru.stackoverflow.com/questions/1163395/Превратить-первую-строку-во-вторую-заменяя-одни-буквы-на-другие
https://ru.stackoverflow.com/questions/1164776/Задача-Преобразования-слов
Да условия вафлёрские
я согласен с тем что просто нужно сверять буквы на их местах как выше писали
ну это если узнать "взможно ли"
а не сколько для этого надо преобразований
там есть "выходные данные - 1"
а если правда ложь то не вдумываясь на коленке так
https://onlinegdb.com/rJeKPibQw
Покажите плис примеры хорошего кода на питоне как пример, можно с гита чтонить.
Хочу запилить свою аиб по советам анонов.
- Умею в хостинг и домены, есть опыт, пили доры. На чем можно сделать аиб чтобы разобраться.
Хочу также в работу питон погромистом. Что требуют, какие нужны знанния, что востребовано по нишам. Нужно знать как написать клиент-сервер, этого хватит?
если бы я ее понимал.
я заметил это
Входные данные: абаб ааах
Выходные данные: 0
Преобразовать нельзя, так как 'б' не сможет оказаться одновременно 'а' и 'х'.
а значит нужно просто проверить, что если для какой то найденной буквы в какой то позиции соответствует какая то буква во втором слове
то для всех вхождений этой буквы обязана быть такая же выходная буква
то есть если где то встретили "а" и оно в другом слове как "б" то значит нужно проверять и остальные места с "а", что им соответствует "б"
и через зип идет обход букв, а charmap хранит соответствия встреченных букв было->соответствует и по повторной встрече буквы проверяет что целевая буква такая же, как была в первый раз
то есть
если буква где то не совпадает, значит она была изменена
а значит она обязана везде не совпадать одинаково иначе в другом месте она будет заменена не на то.
а значит преобразование невозможно
ну можно переписать if in
но ранний оптимизатор сказал "а ну быстро оптимизировать бл.."
но это туфта ибо смотря сюда
д ⇒ я (ааббяя) - промежуточная "я"
а ⇒ д (ддббяя)
я ⇒ а (ддббаа)
они явно хотят какой то преобразования учитвыющий алгоритм. а не такой " в лоб"
Как установить этот промт в данную директорию? Можно ли изменить директорию? Что промт вообще делает?
Потому что у тебя venv. Виртуальная среда свою копию интерпретатора делает и пэкэджи. почитай документацию, ладно? Даже у джетбрейнса она есть. Очень тупые вопроса начались. Неинтересно.
Да вот у меня тоже чувство закрадывается что они хотят чтобы мы построили цепочку трансмутаций букв и уже согласно неё проверили. Но я рот ебал так делать, когда в задаче ни слова про это нет.
Да в тесте битые данные не даются, не в этом проблема была, а так это просто экономия времени, зачем что-то придумывать, если данные подаются всегда в одном формате
Это копия, сохраненная 11 марта 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.