Это копия, сохраненная 1 февраля 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>2487129 (OP)
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://goonlinetools.com/snapshot/share/ - для листингов, без регистрации, но с капчей
#######################################
Вопросы-ответы:
— С чего начать изучать питон?
У питона намного лучше официальная документация, чем у большинства других языков. Есть там и учебное пособие для начинающих: https://docs.python.org/3/tutorial/introduction.html , неофициальный перевод на русский язык: https://digitology.tech/docs/python_3/tutorial/introduction.html (для питона версии 3.8, но разницы почти нет)
— Какие книги считаются лучшими?
На слуху чаще всего Лутц, но там очень много воды. Ещё на слуху Марк Саммерфильд, Эл Свейгарт "Автоматизация рутинных задач с помощью python". Эти книги рекомендуют чаще всего, но книги довольно старые, а питон развивается.
— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать даже для версий 1.x, т.к. принципы остаются теми же. Но лучше хотя бы с версии 2.0, слишком много мелких изменений в базе.
— Какие веб-фреймворки стоит учить в начале двадцатых?
Что бы не говорили, Джанго живее всех живых и умирать не собирается (и Django REST Framework), очень перспективный асинхронный FastAPI, асинхронный AioHTTP. Flask ещё где-то используется, но уже legacy. Прочие фреймворки или у нас экзотика, или это вымирающее легаси как Торнадо.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но частично переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Ролик на американском языке про многопоточность и асинхронность, построение своего event loop с нуля, помогает понять, как устроена асинхронность внутри: https://www.youtube.com/watch?v=MCs5OvhV9S4
— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется
— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
старая версия шапки, треды 90-148 и ранее: https://dumpz.org/bASGKD8cCFDf
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
текущий исходник: https://goonlinetools.com/snapshot/code/#8gd2g1snu3l8i26k0bc6k9
class Pook:
____@input_event('quit')
____def quit(self):
________self.save()
________sys.exit()
но это исполнится во время импорта и зарегистрирует классовую функцию Pook.quit и будет пытаться вызвать Pook.quit(self) вместо some_object.quit(). мне же нужно, чтобы это работало с bound method-ами на инстансах. чтоб self работал
как это сделать?
Если мне за питон платят, то зачем учить твою тухлую жабу? Чтобы лазить по корпоративных канализациях в резиновом костюме?
Уж если куда катиться, то в жс - порриджевать, нихуя не делая.
Ну тебе самому не стыдно? Если тебе будут платить за то что ты сосешь, это значит что ты не гей?
Почему мне должно быть стыдно за питон? Потому что ты дурачок с детскими комплексами?
> Почему вы не пересядете на корпоративный кукан Оракла или Майкрософта
Фиг знает, очком не вышел.
нормально всё работает в анаконде. у тебя прога просто с ошибкой валится, запусти через консоль
Прямым способом наверное никак
Класс это объект, у которого есть элементы, методы. Когда ты делаешь декоратор у метода, при создании класса его элементы заменяются на другие, но остаётся всё равно один объект-класс с элементами-методами.
Ты хочешь, чтобы у тебя у каждого инстанса был свой собственный метод, а не использовался метод класса. что не совсем вписывается в модель ООП и того, как это работает в питоне
Ты ведь после этого не можешь использовать конструкцию вида
obj = Pook()
Pook.quit(obj)
а это подразумевается
А что, мем из нулевых про таксистов учащих жабу уже не актуален?
>просто бабки
Сказки. Пердиксы боятся конкуренции и распускают слухи.
>реально же самому выучиться
Да, но это на год и более, если есть способности
>За месяц-полтора возможно
Читай выше. За месяц ты даже метаклассы и асинхронное программирование не выучишь
>60-80к
Без опыта надо готовиться за 20-40к работать с полгода хотя бы.
>метаклассы
Это и есть ООП? Т.е. ты, обращаясь к классу, создаёшь объект, который отрабатывает методы, а потом схлопывается, будто его и не было, но оставляет за собой информацию, которая была прописана в методах (либо ничего не оставляет)?
>асинхронное программирование
Это что за йоба? Это что-то из дата-сайенс? Пример приведи самый простой.
Нибамбит-эдишен?
По такой логике человечек + 1с должно быть непомещающееся на экран количество тянок
чем хуже - тем лучше ведь?
Практику делай с каждым примером. Желательно несколько и разное
Так создавай.
>>09941
Ну что вы за люди-то, а?
Какой блджад вебсервер? При чём тут асинхронное программирование? Мы тут серверы пишем и изобретаем велосидпеды или простыми словами пытаемся разобраться в сути?
Ссать и срать одновременно - это ассинхронное программирование или ссать, а потом срать (или срать, а потом ссать) - это ассинхронное программирование?
Минимум с текущими требованиями, если не проебываться (как я) и повезет думаю полгода, если не повезет - год.
За полтора месяца выучишь ты в лучшем случае разберешься с самим языком более менее (этого абсолютно недостаточно)
Нашел программу Bat_To_Exe_Converter https://bat-to-exe-converter-x64.en.softonic.com/download, которая конвертирует .bat файлы в .exe. Так же она позволяет скрывать командную строку при запуске .py файла, установить иконку полученному .exe файлу. Программа даёт возможность установить ассоциацию .py файлов с полученным .exe файлом, позволяя тем самым запускать .py файлы в нужном окружении Anacond'ы двойным щелчком мыши. После конвертирования .bat файл можно удалять.
Ладно, если так сильно хочешь, то держи в двух словах: https://bbc.github.io/cloudfit-public-docs/
хреново, блин. такой сахарок приятный. придется в ините регистрироваться
да, у меня так сейчас (без враппера есессн)
python старше, чем Украина
Какое-то хуйло скопипастило доку из стандартной биллиотеки и пары сторонних библиотек и назвал это книгой
Я когда в универе учился и писал курсач кучу книг перерыл и обнаружил, что всякие ученые и преподы которые пишут новые книги тупо копипастят куски из разных книг 60-70-х годов и выпускают это как свою книгу. Причем зачастую копипастят с ошибками. Мне больше всего понравилось как я смотрел книгу, а там аннотация была что этот учёный посвещяет её какому то своему учителю. Я чуть не расплакался, а при беглом осмотре обнаружилось, что произведение состоит из выдранных кусков трёх старых совковых книг, спизженно было всё вплоть до названия разделов и самого текста.
Та я просто проорал, но это печально на постсовковом пространстве во многих областях в той же медицине, протоколы лечения например, наука находится на уровне 60-70 годов прошлого века.
давай-ка, переведи на русский ВСЮ документацию asyncio, а мы посмотрим
Товарищи питонисты, как мне заставить две хуеты обрабатывать файл одновременно?
Например, башем я бы делал что-то вроде:
tar -cf - ./shit | xz -9 -c - > ./shit.tar.gz
Как мне провернуть тож самое с tarfile и pgzip? У второго в примерах только строки, но наверняка это говнище должно и с файлами уметь работать.
почему всё так ебано?
Я очень много раз пытался ставить себе питон, не для того чтобы писать код, а для прикладных задач. И каждый раз, установив пакет, у меня не получалось достучаться до консоли, команды не принимает, пишет что неверный синтаксис.
Не занимаюсь кодингом, но есть нужда в том чтобы скомпилировать софт, все лежит в архиве. Есть ли на данный момент онлайн сервис который делает это за тебя в облаке?
Сам разраб при этом пишет что все легко делается через Nuitka, но я не смог эту библиотеку добавить, руки кривоваты
Наверное, это так и называется, да.
Я, короче, пытаюсь ужать 500 гигов данных, и мне не очень хочется хранить промежуточный tar на диске.
>PyCharme
Я бы, конечно, посоветовал бы это говнище раздутоене использовать, но дело твое. pyqt5-sip, pyqt5-tools установлены?
Вангую*
tarfile сам умеет сжимать, можно не ебаться с буферами
А если нужен таки буфер, то вроде никак. tarfile в них не умеет.
>при работе с .ui файлами
Посмотри плагины в сторе, а также потыркай гугл на тему PyCharm'а и qt5. PyCharm из коробки банально не умеет в эти файлы.
Смотри стриминговые json-парсеры, вроде ijson.
Блин, он это в один поток делает. Это чудовищно медленно, особенно на машине с 64 cpu. Как бэ, я могу и дальше subprocess дёргать, но интересно как сделать это без костылей.
Ну а всё-таки? Просто подозреваю, что там какой-нибудь BytesIO нужен, но он разве не целиком всё в ram грузит?
Да, верно, через это и делается подобие пайпов. Просто я не вижу, чтобы tarfile отдавал bytesio наружу. Если найдёшь - можно попробовать.
Я вижу что можно открыть через tarfile bytesio объект и дальше работать, меня смущает только, что не окажется ли на моём серваке всё забито питухоном, а потом oom убьёт всё к хуям?
Не должно, но зависит от того, как это внутре тех либ реализовано. Лучше протестить, чтоб наверняка. Либо чекнуть код.
Имагинируйте мое ебало, когда я сижу в X5
Алёбля, а как ты собираешься сжимать последовательный поток данныз многопоточно?
Более того, очень даже выгодно когда файлы одного типа последовательно и однопоточно подаются на вход в gzip. Сам подумай почему.
Вообще непонятно нафига что-то писать, есть bash все это делает и нужно просто разобраться с subprocess
Не надо игнорить в смысле
Вот еще что-то интересное
https://www.percona.com/doc/percona-xtrabackup/2.3/xbstream/xbstream.html
>Алёбля, а как ты собираешься сжимать последовательный поток данныз многопоточно?
А в чём проблема? Сжатие вполне параллелится.
Ну а как баш тож самое делает? Вот я и пытаюсь понять. Во-первых чисто лулзов ради, во-вторых, опыт.
Вот я для xtrabackup и делаю обёртку. То xbstream иногда подводит и между версиями хуёво соображает.
gz - нет, в силу алгоритма, мало какие алгоритмы сжатия в параллель работают, потому что у большинства принцип накопления словаря в зависимости от текущего потока в том или ином виде
>Ну а как баш тож самое делает? Вот я и пытаюсь понять. Во-первых чисто лулзов ради, во-вторых, опыт.
погоди, так это ты начал спрашивать про модуль в питоне?
man 2 pipe.
прочитать классические книги и reference api - вот это опыт. а у тебя опыт бесполезного глупого тыканья.
А зачем? С чего все началось?
Просто непонятно зачем чисто аминскую проблему решать с помощью программистов. Ну поперебирай тулзы и какая-нибудь заработает. Программу надо ведь не только написать, но еще и найти баги и поддерживать годами.
А хотя понятно. Заебать десяткам людей мозги на Дваче - бесценно и бесплатно.
У меня тут недавно обновилась программа qpress и весь бекап по пизде пошел. скорее всего это потому что Percona - это уже не пара русских пацанов, а <вставьте_обидное_национальное_прозвище>
В общем, теперь бекап с помощью mariabackup просто зависает навсегда. Я перешел на сжатие с помощью gzip в конвеере, но как-то медленновато стало работать.
Разве xbstream может подвести тоже?
Да, знаю. Ток как запостил заметил.
from toolbox.termcolors import colorize
from toolbox.s3tool import S3Wrapper
from toolbox.xtrabackuptool import XtrabackupWrapper
__all__ = ['s3', 'termcolors', 'xtrabackup']
s3 = S3Wrapper
xtrabackup = XtrabackupWrapper
Отвечу на свой вопрос сам, спасибо ЛОРу:
with pgzip.open(f"{name}.tar.gz", "wb", compresslevel=9) as fw, tarfile.open(mode="w|", fileobj=fw) as tf:
tf.add(f'{self.backup_dir}/backup/.', arcname='backup')
Да бля. Ебаная макаба.
Нужно сделать что бы у пользователя на сайте(Django) появлялись новые комментарии в режиме реального времени. Т.е. при добавлении комментария по постсэйв сигналу у человека на сайте автоматом погружался новый комментарий. С бэк частью всё понятно, вопрос что гуглить и курить что бы реализовать это на фронт части? Мне в голову пришло только отправлять запрос с клиента каждые 30 сек по time.sleep. Но я знаю что есть правильное решение.
Помоги плиз, Антончик!
Если платят турецкой лиров, то Турции
Без шуток.
Естественно, собрать его, особенно не зная всех конфигов и хоткеев - квест не легче чем генту установить, после сидения на виндовсе. Но окупается значительно.
Ищи то, что тебе подойдет. Перепробуй что можешь.
У пайчарма проблема, что он сильно громоздкий. Индексация и ревалидация кеша на каждое открытие проекта, причем не быстрое. LSP бывает подвисает жестко. Интеграция с гитом, но очень куцая, бисект и локальное игнорирование файла нельзя сделать.
Профилировщик - мне кажется единственная сильная и безконкурентная сторона. Историю гита тоже очень удобно просматривать.
лучшая иде для питона так-то
понятно, что никто не сидит и от нехуй делать строчит дифирамбы пичарму, чтобы создать у тебя и других мимокроков впечатление охуенности ПО. и наоборот: кому-то явно нехуй делать, и он сидит говнит пичарм ИТТ почем зря, может на срач рассчитывает, но всем лень/похуй
>локальное игнорирование файла нельзя сделать
Можно, добавляешь правки в другой ченжсет и забываешь про него
472x360, 0:05
В пандасе формирую таблицу в необходимом мне виде.
usecols="B,E,V,AI,R"
Но выводятся столбцы в алфавитном порядке, как в эксель файле. Как сделать, чтобы столбцы шли в том порядке, в каком я прописал в юзколс?
ХЗ как эти кликеры устроены, наверное не опознаёт некоторые элементы управления как кнопки. Ты же можешь функционал кнопки сам реализовать, просто перехватываешь клик-эвент, смотришь на чём был курсор и в соответствии с этим поступаешь. Кликнуть можешь в абсолютно любое место. И тебе не надо явно регистрировать сам объект как обработчик клика.
у таблицы НЕТ ПОРЯДКА столбцов, алло!
Чем окупается-то? Красноглазием? Тем, что после настройки вима можно сразу устраиваться middle lua developer? На каждый новый чих весь день сидеть и разбираться, как перенастраивать все плагины?
>list(cols)
Не смог нагуглить как это использовать, у меня код на 5 строк, а в гугле у всех простыни какие-то.
Есть функция которая проверяет одинаковые буквы в слове которые идут подряд если есть возвращает true если нет то false
def double(word):
for i in range(len(word)-1):
if word== word[i+1]:
return True
return False
Вопрос такой какие тут preconditions ?
>if word[ i ] == word[i+1]:
Прадумова такое што трэба показваць код праз сэрвісы разметкі. Другая - твае слова мусіць быць даўжэй за адну літару.
>всякие ученые и преподы которые пишут новые книги тупо копипастят куски из разных книг 60-70-х годов
Добро пожаловать в рашку, страну воровства и плагиата, в том числе интеллектуальной собственности.
{'vnet0': {'addrs': [{'addr': '192.168.122.86', 'prefix': 0, 'type': 0}], 'hwaddr': '52:54:00:aa:03:7b'}}
Как проще всего вытащить айпишник оттуда? Это еще интерфейс один, а может быть несколько - тогда нужно самый первый взять
Используй функцию type(), чтобы понять какой тип у переменной. Понимание типа многократно способствует возможности работы с ней.
https://pastebin.com/2wKuLfr1
Чё?
first_if_name = list(out)[0]
print('The first IP of the first Interface:', out[first_if_name]['addrs'][0]['addr'])
Написал для работы расчётную программу на питоне - всё отлично, но слишком медленно работает. Затык - в алгоритме нахождение точки пересечения луча и многоугольника (фактически луча и треугольника). Функция ray_polygon_intersection выполняется 98.7% от общего времени работы программы.
Возникла идея переписать эту функцию на C++ для ускорения, тем более, что изначально она на нём и была написана - https://ru.wikipedia.org/wiki/Алгоритм_Моллера_—_Трумбора
Но вот вопрос, а ускорится ли работа программы? Там в основном ведь работает numpy, а эта библиотека и так на C написана. Понимаю, что очевидный ответ - взять, запустить эту функцию на обоих языках и сравнить, но я совсем не умею с C++ работать, после питона натурально шиза какая-то. Так может, я зря сейчас мучаюсь?
Покажи код где у тебя numpy вызывается. По коду выглядит так будто ты можешь все распаралелить
Могу. Но это не решение.
У меня в проге лучи кидаются тысячами и всё тормозит.
При этом на доисторической программе ЦНИИмаша с похожими задачами лучи бросаются сотнями тысяч - и всё считается очень бодро. Разумеется, никакого распараллеливания там нет, программа 97 года компиляции, может вообще на фортране писалась, чёрт его знает. А может и на С.
Я пока не понимаю, как деды из прошлого века меня так обгоняют по скорости.
Нухуя себе.
Заменил np.cross и np.dot на самопальный пикрилейтед. Прирост производительности - 5.8 раза!!!
Мда, цензурных слов относительно numpy у меня больше нет.
Жалко я раньше умных людей не почитал.
https://stackoverflow.com/questions/1988091/poor-numpy-cross-performance
numpy эффективно работает когда проиcходит ебание здоровенных матриц, с мелкими значениями оно крайне хуево взаимодействует.
Можешь еще cython навернуть
https://cython.readthedocs.io/en/stable/src/tutorial/cython_tutorial.html
>но я совсем не умею с C++ работать, после питона натурально шиза какая-то
Возьми какой-нибудь раст, там более похоже на питон.
Ну я всё-таки надеюсь сладить с этой одной несчастной функцией в C++ и интегрировать её прям в питон. Через dll, или как там это делается, надеюсь, не будет очень сложно.
Меня питон вполне устраивает, исключая такие вот редкие косяки производительности.
Имею в виду эту единственную функцию на расте написать вместо с++, а не весь проект менять.
Например если у меня есть 100500 измерений по 4 float значений каждое, какой формат выйдет выгоднее?
array.array
Вот допустим есть список (list_1), он состоит из списков(list_N) их и надо сортировать.
list_N состоит из десятков элементов.
[
['23', 'text1', [1,2,3],'Боря', 'хуй', 'пизда', 'джигурда'],
['24', 'text2', [1,2,3],'Боря', 'хуй', 'залупа', 'джигурда'],
['23', 'text1', [1,3,2],'Боря', 'хуй', 'пизда', 'анти джигурда'],
['23', 'text0', [1,2,3],'Боря-лох', 'хуй', 'пизда', 'джигурда'],
]
И так миллион раз. Видно что данные в элементах повторяются но их слишком много. Нужно отсортировать все эти эллементы так чтобы они шли друг за другом масимально "гармонично" что-ли. Чтобы соседние элементы минимально отличаслиь друг от друга.
Очевидно что нужно проходить циклом по каждому элементу и сравнивать его со всеми другими. Но может в питоне есть какое-то особе волшедное решение для таких задач. например диффлиб - который кстати не подошел, он высчитывает "индекс похожести" каким-то своим способом и возвращает не удовлетворительный результат по моему случаю.
Нейронной сетью. Сначала отсортируй руками, потом сделай много рандомных сортировок, обучи модель, чтобы из рандомных делала ту, которую хочется тебе, а потом её используй для сортировки.
невозможно сделать корректно, потому что нет линейной упорядоченности, возможны принципиально разные результаты сортировок, традиционные алгоритмы не пригодны
Спс. Не уверен что это мне подходит, но есть над чем подумать.
все можно отсортировать.
тебе нужно просто определить операцию сравнения или операцию расстояния чтобы использовать уже определенные операции сравнения чисел.
мне кажется на программистов свалили задачу которую раньше выполнял математик.
может вернешь им?
https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.euclidean_distances.html#sklearn.metrics.pairwise.euclidean_distances
вообще, я бы не занимался сортировкой тут.
преобразуй эти строки в номинативные переменные и сохрани данные в виде sparce matrix.
Дальше посчитай евклидовы расстояния попарные (https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.euclidean.html) ну и начни сортировать от 0 прикрепляя наименее отличающийся к каждому следующему.
Очевидно способов посчитать расстояние - множество.
Способов собрать сортированные список - множество.
Но человек все равно посчитает такие данные близкими, ведь это же компьютер так решил :))
вот тут мы видим пример такого рассуждения. давайте загоним в нейросеть чтобы с снять с себя ответственность : >>12651
хуй знает как тебе помочь. у тебя не с сортировкой, а с постановкой задачи проблема. формализуй, что ты считаешь гармонией, и что такое удовлетворяющий тебя результат. сортировка тут это самое простое
https://pypi.org/project/pyuic5-tool/0.0.1/
https://github.com/Abdelatief/Pyuic5-Tool
Я хочу заебашить курсач. Допустим, у меня есть твиты вет. клиник (которые лечат только кошек и собак) и я хочу с помощью NLP+ML разделить все твиты на "кошачьи" и "собачьи". Допустим, я хочу таким образом классифицировать 100 тыс. твитов.
Итак вопросы:
Первое: можно ли с помощью NLP+ML анализировать текст не только на тональность (позитив/негатив), но и на "кошачьесть", "собачесть", при наличии офк test и validation выборок?
Второе: я правильно понимаю, что если я хочу проанализировать 100 тыс. твитов, то мне вручную для обучения модели придется классифицировать 10-20% от этих ста тысяч?
Огромное спасибо за ответы, это реально поможет перестать мне прокрастинировать, поскольку через гуглинг и чтение документации порой бывает очень сложно найти ответы на фундаментальные вопросы.
если элементы повторяются, то lru cache от functools сильно поможет
Каманда у кансоле:
pyuic5 -o mainwindow.py mainwindow.ui
дзе mainwindow.ui - шлях да твайго інтэрфэйсу.
Але табе ня трэба гэта. Ужывай uic.loadUi('mainwindow.ui', self). Прыклад https://pym.dev/p/2mba6/
Ты не понял оно должно автоматом при запуске приложения в IDE обновлять .py файл с учётом внесённых изменений, без необходимости вообще вызывать консоль.
Там автодополнения кода нет и через точку нельзя обратиться к членам формы.
>Первое: можно ли с помощью NLP+ML анализировать текст не только на тональность (позитив/негатив), но и на "кошачьесть", "собачесть", при наличии офк test и validation выборок?
Да пожалуйста. Мы не против любой движухи.
Обеспечишь ли ты ожидаемую людьми точность?
Хоть курсяк и не диплом, защищать ты его будешь перед людьми очень хорошо понимающими суть научного метода и метрики достижения научных заслуг, даже если им влом погружаться в nlm.
И им не понравится твое издевательство над ними (метриками)
>Второе: я правильно понимаю, что если я хочу проанализировать 100 тыс. твитов, то мне вручную для обучения модели придется классифицировать 10-20% от этих ста тысяч?
Вообще-то, желательно пометить все имеющиеся данные. 10% - это граница чего? Кто ее провел?
Не всё можно упорядочить
Попробуй упорядочить комплексные числа. Вот у тебя 4 числа,
1, -1, i, -i
по модулю одинаковые, расстояния между ними или 2, или sqrt(2)
А теперь отсортируй их и обоснуй, почему так, а не иначе
Создается отдельный .py файл с кодом:
from converter import convert_ui
convert_ui("MainForm.ui")
Каждый раз после редактирования в дизайнере .ui файла запускаем скрипт и он заново конвертирует нужные .ui файлы без вызова консоли. Благодаря работе с pyuic5 функция автодополнения работает и есть доступ к членам формы через точку
Линейный порядок можно предъявить для любого множества. Более того, по теореме Цермело любое множество можно вполне упорядочить (правда не всегда получится построить такой порядок конструктивно). Комплексные числа можно, например, просто сравнивать лексикографически, или сначала по модулю, а потом уже лексикографически.
в пыхе нет культуры постоянно запущенного кода. после обработки запроса все ресурсы автоматически освобождаются и в следующий раз начинаются вычисления заново.
Только представь сколько предварительно вычисленных данных можно хранить глобально в твоем приложении.
несмотря на то, что они пытаются это исправить, нет культуры - нет движения.
>А теперь отсортируй их и обоснуй, почему так, а не иначе
а схуяли? я могу выбрать любое правило. Хеширование или еще что-то.
Это тебе придется обосновывать почему я не могу это сделать так, а не иначе.
Илитно же.
Ну знать там двадцать ходовых хоткеев заебись - что-то подкрутить на сервере, а хуевертить какие-то конфиги-плагины и превращать его в НЕХ это очень на любителя.
да ничем. нахуй не нужны в вебе другие языки кроме жс, всё лучшее у жсеров, остальные чисто костыли для тех кто жсом не хочет пользоваться
А насколько нормально делать вот так?
Вдогонку, как понять вообще, что принятое тобой решение не говно? Как бы, с моей стороны, если код делает свою задачу, значит он не говно. Однако всегда находятся чуваки с нюансами и говорят, что вообщет так не принято.
>А насколько нормально делать вот так?
А какие альтернативы этому ты представляешь?
>Вдогонку, как понять вообще, что принятое тобой решение не говно? Как бы, с моей стороны, если код делает свою задачу, значит он не говно. Однако всегда находятся чуваки с нюансами и говорят, что вообщет так не принято.
В каком сценарии? На роботе будет тимлид; на гитжабе, если код популярный, то кто-нибудь отпишет или даже отрефакторит; пока учишься на стак оверфлоу или реддите можно попросить отревьюить. А там и сам будешь знать, как принято.
> А какие альтернативы этому ты представляешь?
Никаких. Я только это смог придумать.
> В каком сценарии?
Да в том и дело, что я в основном для себя пишу. Я девопс и иногда, короче, приходится самому делать инструменты. Лида нет, как бы, я один. На питухоне в компании пишу тоже только я. Ну и короче хочется, чтобы никто потом не охуел, разгребая километры скриптов, написанных мной. Они с одной стороны простые и логичные, а с другой стороны, это может я так считаю, а другой припрётся и короче, не поймёт нихера.
А, так можно было. Окей.
У меня в finally подчищаются хвосты от работы скрипта, чтобы при следующем запуске не наебнулось говно из subprocess.
оно для этого и придумано
Ничего не поделаешь тогда. Попробуй полуркать по ключевым словам code smell, там научат, как не надо делать.
Если тебе так интересно, не сталкивался.
Я последние лет 25 не сталкиваюсь с ситуациями когда код ведет себя необъяснимо. Вот когда меня посадили на VAX VMS после ПК - вот это была проблема и растерянность !
А у тебя Гугл есть, декомпозиция задач и отладчик.
Заделал кастомные роли у юзеров, в админке проверяем возможности смотреть/редактировать определенную модель согласно проверке роли юзера. Все бы ничего но у меня юзеры к ролям соотносятся many-to-many через промежуточную таблицу, каждый раз при проверке будут вызываться запрос в БД, что в общем-то пиздец накладно. Как это обойти?
>python 2.7
>centos покрылся мхом
спешу сообщить твоим коллегам, что это не сервер, а отрыжка.
Переустанавливайте все там на ubuntu 22.04.
2022 год на носу!
Вот есть например словарь.
dict = {1:'', 2:'',}
Нужно в нем проверять ключи.
Если я например сделаю для ключей отдельную переменную и буду проверять ключи в ней.
dict_keys_var = dict.keys()
if 'some_key' in dict_keys_var:
pass
Это лучше чем каждый раз обращаться к dict.keys() ?
if 'some_key' in dict.keys():
Ну т.е. если я выполняю dict.keys() в этот момент создается список ключей. А если я это делаю в цикле, то список ключей будет делаться много раз, значит лучше поместить этот список в переменную?
со значениями так можно делать. но с ключами это лишнее. просто делаешь if key in dict, и будет работать
>будет работать
Лол ну понятно что будет. Вопрос про оптимизацию. Каждый раз при обращении будет список из ключей создаваться, или этот список - готовый объект в памяти, который уже создался когда-то там вместе со словарем?
Это мапка, там за тебя все создано уже
Блять, меня уже трясёт от этого пидорства, помогите разобраться. Есть некий код на питоне, он отлично работает из консоли. Но вот при попытке выполнить этот код из шелл-скрипта - питон просто не выполняет его. Т.е. команда типа "python zalupa.py" просто не работает, а плюс ко всему питоновкая пидорасина ещё и возвращает код завершения 0, без выхлопа. Дальше ахуеннее - кладу код питона в другую соседнюю папку - он работает из скрипта, но при переключении на другого юзера опять такая же хуита. Права на доступ к папке чекал. Просто из консольки работает всегда. Перемещаю другим юзером - уже не работает у первого из скрипта.
В этом дерьме есть логи самого интерпретатора? Как это вообще дебажить, если он код 0 возвращает? До выполнения питоновского кода похоже даже не доходит, по крайней мере первые строчки уже не отрабатывают. И я нихуя не понимаю в чём разница запуска из консоли или скриптом, его же запускает один и тот же шелл, под одним и тем же юзером. Окружение? Но какого хуя оно начинает работать в другой рандомной папке?
Версии питона менял, если что.
> Есть некий код на питоне
я один хрустальный шар разбил, а другой потерял, звыняй
но скорее всего проблема либо в коде, либо не в нём
>До выполнения питоновского кода похоже даже не доходит
Так доходит или не доходит? Если не доходит - то при чем здесь питухон тред. ты где-то на стороне обосрался. А если доходит - то, ну хуй знает. Расставь по всему коду маркеры и смотри какие сработали, чтобы локализировать "проблему".
python3 -m pip
Преимущество питона - изобилие библиотек, в том числе C++. И многопоточность.
Для веба преимуществ не видно. Сам питон - язык незрелый, по ООП недоразвитый как php4, страдает несовместимостью версий. Документация никакая. С зависимостями ебля. После php выглядит как мопед после люксового авто. Короче еще лет 10 до уровня пхп и джавы.
У тебя некая проблема с администрированием unix системы.
Недавно команду придумал:
python -V
Ею можно определить работает ли сам и нтерпретатор из-под юзера. Еще прикольная команда есть:
which python
показывает путь к данному интерпретатору. Ну и дальше там всякие
ls -al *.py
показывает права доступа к файлам, скрипту например...
>джавы
Думаю перекатываться в бэкенд-разроботку из бэкенд-автоматизации и раньше думал про джавуна ней тесты пишу, но после полугода скриптов на петухоне как-то нет желания дрочить фабрики фабрик
Или я не прав и джава - охуенно, а я тупой уебан?
зато в нем все удобно и работает.
Просто вслух проорал с этого визга.
Пыхер порвался.
выглядит как какая то каша.
Девочка написала лютейшую кашу без понимания зачем она это все собирала, если можно было сделать проще.
Это как видел пример кода где чел на питоне работал с циклами на манер С
На типе
for i in range(0, a):
....list1
Может все таки хоть доку по питону разочек откроют?
Джава имеет за собой поддержку больших корпораций, поэтому её выбирают крупные компании. Однако, для веба она очень медленно пишется в отличие от интерпретируемых языков, дороговата в разработке. Джава хороша как язык в возможностях ООП. Пхп её в этой плане копирует, сохраняя при этом простоту и легкость написания кода под веб.
Короче, для бекенда по размерам проекта я вижу такую иерархию:
- java и php - для больших проектов
- python и ruby - для средних
- js и typescript - для мелочевки одностраничной
Так же эта чушка написала Oneline if condition, но из других ифов это оставила как есть в несколько строк.
Для чего она воткнула зип для 3х элементов в которых блять еще и tuples, не ясно не понятно..........
action is not None - тут уже сразу все ясно становится.
Епттваю мать. Тут до каждой строчки можно доебаться. 13ти летнее дите хвастается как может переусложнить 2 + 2 на питоне.
Привет. Не знаю.
Нет, ты.
Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь.
Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки.
Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию питоньего кода - PEP8, чтобы от зубов отскакивало.
Когда напишешь свою первую имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent.
Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce.
Отсос хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.
Пикрандом
Почему не целые числа сгруппировались плохо? Не суммировались, а просто в одно строчку все значения.
9,041,060,841,6213,659,814,86
Как суммировать их?
Не создали. Учитывая, что проблема обсуждается часто, то, вероятно, что это из-за философии python. (Поправьте, если не так).
Для того, чтобы остановить поток, необходимо подать сигнал завершения. В редких ситуациях можно использовать булёвый флаг name_thread.daemon = True, чтобы поток стал демоном и он завершился с завершением основного процесса - это плохо, если выполняется работа с БД, файлом и т.д, а ресурсы, как сказано в руководстве, "may not released properly"; поэтому так делать не надо, если попадает под эти случаи.
Ну иначе пришлось бы Thread().start() два раза писать.
По заветам DRY так делать нельзя
А то что ошибки из треда никак не обрабатываются это неважно
Это как? Я новичок
А как же го вместо пхп?
А как надо обрабатывать ошибки тредов? Только не как в DRY с этого примера, а нормально.
мне хотя бы вкатываться никуда не надо.
она могла это вынести в отдельную структуру и собрать отдельно от лупа, который разползся на 2 строчки.
вот мои нелепые неработающие потуги:
https://pastebin.com/JH3kyDPk
print(type(type(int)))
в вариантах ответа "class "type" нету
хули от меня хотят то, я гуглил но такого примера не нашел, я понимаю что когда ты пишешь там type(10) тебе выдаст что это int, но тут то хуле
мимовкатун
я написал, выдает <class 'type'>
но в вариантах ответа этого нет, максимально близкое по смыслу это type'type', это одно и тоже получается чтоли? Я уже специально не правильно ответил, просто хочется на будущее знать.
охуеть, найс курс походу будет, третьему питону сколько? 14 лет? До сих пор старые методички отправляют лол.
Ну скобки у принта есть, видимо апдейтили со второго и прошляпили эту конкретную хуйню.
ебать ты детектив
>>она принимала динамический кортеж типов и возвращала итератор с аналогичной сигнатурой
>>так, чтобы пичарм знал типы распаковываемых переменных
чиво блять? пайчарм то откуда может знать что у тебя может быть там внутри, если ты это нигде не описал. Сделай дженерики епта.
Реквестирую советы по улучшению кода.
https://www.onlinegdb.com/1o0ZpYsdLt
Все это похоже на утку которую когда то пустили и теперь все ее разносят.
Он же явный пример easy to learn, hard to master.
Чи не?
А он и не должен меняться, i внутри for и i, которому ты присваиваешь внутри итерации, это разные имена, у второго своя область видимости, и на следующей итерации он перезаписывается i из for.
> змiй такой язык медленный,
Потому что медленный
>для "лохов"
Нигде не пишут
>При этом это один из наиболее развивающихся языков, новые версии выкатывают быстро,
Какая разница?
>появился нормальный многопоток/процессинг,
Языку сто лет в обед, стыдно, что только появился.
>скорость работы повышается через либы всякие на сях.
Если бы был быстрый, то либы были бы на питоне, логично?
>Он же явный пример easy to learn, hard to master.
Hard to master-то где? Или ты про необходимость переписывания логики на си, если нужна скорость?
Чета он последний абзац не выводит, нужно вхолостую enter нажимать, чтобы вывел, с чем это связано, непонятно
https://onlinegdb.com/ctmXmq5jZ
Не та картинка, вот
МЕРТВЫЙ ТРЕД
@
МЕРТВОГО ЯЗЫКА
Пусть срёт. Он хоть погромирует, а не тянучку ищет или курсы для сорокалетних покупает.
Если ты еще не вкатился то почти никак, если у тебя нет никаких вещей, которые ты хотел бы автомотизировать
Потому что его распиарили как язык для вкатышей для заработка на "обучении" дебилов, пускающих слюни на 300к/сек.
Точно. Лучше бы это время на джаваскрипт потратил.
я думаю TypeVarTuple это то что я ищу. надо бы пистон обновить
Всмыле не попадешь? А ты думал, что все мидлосеньки сразу на такие должности попали?
>Всмыле не попадешь? А ты думал, что все мидлосеньки сразу на такие должности попали?
Щас на любую открытую вакансию с нулем опыта откликается по 300 человек, и требования к джуну стали как к мидлу 5 лет назад.
> foo.bar(Spam, Eggs, Qux)
1) берет один или больше типов компонентов с объекта foo
2) все указанные компоненты обязаны присутствовать на объекте
неудачные варианты:
> foo.get_components(Spam, Eggs, Qux)
> foo.get(Spam, Eggs, Qux)
> foo.get(Spam, Eggs, Qux)
пункт 2 не используется. кажется, будто сообщаешь функции возможные варианты - "поищи такое, такое и такое, чо найдешь возвращай"
боле-лимение:
> foo.find_set(Spam, Eggs, Qux)
но слово set в питоне занято другим, а функция возвращает тупли в порядке указанных аргументов
Я вкатился 5 лет назад, недавно специально смотрел собесы джунов, не особо там все и поменялось. При том, что опыт работы над крупными проектами будучи джуном ты не получишь даже если сотни книг перечитаешь.
Ад самага пачатку йдзеш памылковым шляхам. Не пішы ў назве функцыі як яна працуе. Пішы якую справу яна робіць у кантэксце дамэна: гатовіць яешню, ці правярае пошту.
5 лет назад не было такого дикого хайпа и конкуренции за право быть червем-джуном
ой какой мидлу. чо фантазируешь. в вакухах просто примерный скилсет пишут. могут взять и с заметно меньшими если мозги на месте.
Я в 2019 году свичнулся из аналитика данных в питухон разраба, при этом питон знал на уровне пердолинга датафреймов в пандасе + реквесты + бс4 + склалхимия + паймонго. Всё писал в функциональном стиле, линтерами не пользовался, гитом не пользовался, тесты не писал, с докерами не пердолился. Теперь представь, какой я говнокод писал (да и продолжаю писать). При этом взяли на ставку мидла, и взяли просто потому что на собесах всех больше понравился + был норм опыт работы с БД, неплохо шарю в скле. До сих пор работаю, поменял за это время уже 2 места, на текущем месте уже старший разработчик (сеньерская ставка), зп апнулась по сравнению с аналитиком данных в 3 раза.
У меня был просто опыт в ИТ, в плане именно питон разраба у меня был опыт как у червя-пидора. Мне пришлось с нуля изучать штангу, веб, докеры, редисы и паттерны, которые по хорошему я должен был уже знать, когда меня брали на эту позицию.
Вернее все еще хуже - сохраняется но не целиком. Все это запускаю в docker-compose, логи в консоли (StreamHandler) прекрасно вижу, каждые 10 секунд туда высирается сообщение "Hello world!", но почему блэт я не вижу этих логов в файле celery.log, которые указал при конфигурировании логов? Там всего 1 единственная запись - "Celery is ready!", где остальные бля?
Предвижу кукарек не тему уровня логирования. Скажу так: я пробовал ставить какой угодно, всем похую. Я и там и там поставил уровень warning - в файл пишется только первая запись. Пробовал кидать эксепшн в dummy-таске, в файл traceback не пролезает в файл, логгер почему-то просто отвалился, какого хера?
https://stepik.org/course/154/syllabus
https://stepik.org/course/96018/syllabus
https://stepik.org/course/217/syllabus
https://stepik.org/course/1547/syllabus
еще отсюда много
https://www.youtube.com/user/zaemiel
https://www.youtube.com/c/SeniorPomidorDeveloper
https://www.youtube.com/c/%D0%94%D0%B8%D0%B4%D0%B6%D0%B8%D1%82%D0%B0%D0%BB%D0%B8%D0%B7%D0%B8%D1%80%D1%83%D0%B9
https://www.youtube.com/c/ArjanCodes
https://www.youtube.com/@anthonywritescode
Плюс часто просто шел и гуглил если что-то было непонятно.
Самую базу по питону (синтаксис итп) похуй где учить, я вроде на кодкадеми это делал.
Вообще я сумбурно учился, не стоит на меня ориентироваться.
На собесе спрашивали про многопоточность/многопроцессорность/асинхронность много, про алгоритмы немного, вроде какая сложность добавить элемент в лист, сортировку пузырьком на бумажке написать не просили, про тестирование. Про паттерны спрашивали, но на них я уже запинаться стал, про веб мало спрашивали. Показал проекты свои (учебные), вроде все на этом.
Нормальный пацан устанавливает логирование через сигнал celery.signals.setup_logging.connect
Чекай канал freecodecamp, полноценным джуном конечно не станешь, но там все подробно разжевывают.
Нужно снимать показания счетчиков и отсылать хозяину хаты.
Я это делать забываю.
Хочу сделать петухон скрипт, который смотрел бы сегодняшний день месяца и если я на сегодняшний месяц не снял показания срал бы постоянно в трей нотификаторы "Сними счетчики".
Как понимаю, нужна библиотека по работе с виндовым треем и виндовыми уведомлениями.
И всё это должно висеть в автозагрузке компа фоном 24/7 и не жрать много ресурсов.
цем в пупок
Все пиздят, что питончик самый простой язык , но я чот сомневаюсь, какие подводные при изучении,? Реально ли попасть на работу в ДС после полугода изучения?
С кем придется конкурировать?Если он самый простой, не значит ли, что кроме технарей туда идут и обычные Васяны? Насколько котируется в айти тех вышка?
Мои перки: B2-C1 инглиш, 3 месяца работы ручным макакой(не зашло, бросил), полгода работы it сапортом в неплохой айти компании.
Кароче мне тут наверное нужен тот, кто вкатился по сути с нуля в ДС без тех вышки. Есть такие ребята?
Купи esp32 с камерой за пару баксов и снимай показания автоматически, вот это заебись задачка.
Если ты говоришь про дата сайенс, то полгода - мало, если ты не супер гений, но я в этом сомневаюсь.. Сайты парсить, наверное, можно научиться за полгода, но тоже требует усилий.
Ну например вместо thread.start взять concurrent.futures,
с каждого треда возращать future и потом палить в .result()
По дефолту питоновские треды молча дохнут и никому ничего не говорят
И для класса B (172...) регулярка отказывается работать пока не заэкранирую бэкслэшем "16-31" -> "16\-31".
Жалуется на какой-то range.
Хотя на сайтах верификации регулярок все отрабатывает нормально.
Чё это за хуйня?
Они сделали костыль в виде soft keywords для совместимости, лул. Это типа кейворд, но его можно использовать в виде имени, чтобы не ломались старые скрипты с такими именами. Но зная что он уже есть, лучше не использовать, да.
>>17967
Ты неправильно понимаешь классы символов.
[0-255] это не от 0 до 255, а от 0 до 2 и 5.
[16-31] это не от 16 до 31, а 1 и от 6 до 3. Так наоборот нельзя, вот он и ругается. Другие движки может и не ругаются, просто делают не то, что ты думаешь.
Понял, в общем регулярки не умеют вычленять числа из строки, нужно оперировать цифрами и разбивать необходимое число на совокупность цифр.
Но вообще это переусложнено, эта первая галка должна чуток сократить. А вообще, гугли сразу готовые варианты для айпи, это дохуя частая задача, так что готовых оптимальных вариантов должно быть навалом.
>это переусложнено
двачую. разбил стринг по точкам, сконверил в инты, проверил диапазон. еррор чекинг по желанию
Есть модуль питона в стандартной библиотеке
https://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address
> >>> ipaddress.IPv4Address('10.231.33.21').is_private
> True
> >>> ipaddress.IPv4Address('110.231.33.21').is_private
> False
Во времена, когда люди верили в великую силу чисел, оказалось, что волшебник Пифуман предал все народы и стал помогать Зерону.
Чтобы посетить башни обоих злодеев одновременно, нам следует разделить магию числа, которое защищало нас в дороге.
Чтобы поделить трёхзначное число, нам нужно составить из него минимально и максимально возможные двухзначные числа.
Формат ввода
Одно трёхзначное число.
Формат вывода
Два защитных числа для каждого отряда, записанные через пробел.
Пример 1
Ввод
103
Вывод
10 31
Пример 2
Ввод
787
Вывод
77 87
Мой код:
https://www.online-python.com/0CQPJBtb8A
Вопрос. ЧЯДНТ?
Все проверки проходит кроме одной, а что в ней - хз.
Во времена, когда люди верили в великую силу чисел, оказалось, что волшебник Пифуман предал все народы и стал помогать Зерону.
Чтобы посетить башни обоих злодеев одновременно, нам следует разделить магию числа, которое защищало нас в дороге.
Чтобы поделить трёхзначное число, нам нужно составить из него минимально и максимально возможные двухзначные числа.
Формат ввода
Одно трёхзначное число.
Формат вывода
Два защитных числа для каждого отряда, записанные через пробел.
Пример 1
Ввод
103
Вывод
10 31
Пример 2
Ввод
787
Вывод
77 87
Мой код:
https://www.online-python.com/0CQPJBtb8A
Вопрос. ЧЯДНТ?
Все проверки проходит кроме одной, а что в ней - хз.
number = int(input("The number is: "))
min_num = min(number / 100, 101)
max_num= max(number / 100, 101)
print(f"The minimal number is {min_num} and the maximal number is {max_num}")
Когда ты конвертируешь все возможные двузначные строки в инт, у тебя минимум находит некорректное однозначное число, например для '100' минимум по твоему коду будет int('01') = 1
Бери любой который на английском. Чем свежее - тем лучше.
который подороже бери, больше знаний получишь
Взял бы на Степике от Биигик. Там первые два курса бесплатные, их тебе для самого начала хватит
Ты, очевидно, в новостях прочитал об этом. Но прочитал невнимательно.
"накодить" легко.
нужно чтобы предсказатель еще и угадывал с приемлемой точностью. Вот с этим очень большие проблемы. Там в новостях даже не указана точность.
Например, есть фильм с Бредом Питом - Человек, который изменил всё (2011)
Там забавно. Посмотри.
Суть в том, что в американском бейсболе действительно была культура чисел. Они годами в докомпьютерную эпоху выпускали справочники и тд.
С европейским футболом все не так предсказуемо. За это болельщики и любят спорт.
У тебя наивное понимание науки и мира.
Удивительно, что оно нередко не только среди двачеров.
Некто Карл Пирсон заложил основу научной революции и с тех пор все ученые к прогнозу добавляют уверенность в прогнозе. Но их никто не слушает (
Фонбету, конечно, на это все насрать. Для него главное реклама
Аргентина только что проиграла Саудовской Аравии.
Уверен (с уверенностью 99%) что почти все модели такое не предсказывали.
Вот таков реальный спорт.
матч кстати был охуенно жёстким
а что если все этим матчи забигдатить? все мельчайшие параметры?
алсо кстати че кто ставил на саудитов выиграли миллионы?
> а что если все этим матчи забигдатить? все мельчайшие параметры?
... то ничего не произойдет.
все привлекательные способы заработать на пустом месте давно уже обдуманы людьми.
Кроме тех, которые ещё не обдуманы.
Напоминаю, техи для создания ядерки появились гораздо раньше, чем сама ядерка.
Я и так уже дообдумывался до того, что работаю в микрофинансах и тащу мир в ад
Ебанешься так описывать. Тут какие-то кривые Безье... Мне кажется есть какой-то умный способ
Догадаешься, где треугольник, прямоугольник, парабола и сектор круга?
в игропроме кривые рисует дезайнер.
А твоя хутика это какое-то тестовое задание на интегралы. Нахуй не нужное.
d = str(random.randint(100, 999))
_ = sorted(d, reverse=True)
print(d/+' >> ' + ''.join(_[:2]) + ' ' + ''.join(_[1:]))
ебать ты глазастый. я уж пошел гуглить чем искать коллизии точки и фигуры из кривых безье либой bezier вроде
прям рилворлдкейсом пахнуло, йопта. всегда выборка значений внутри странного набора простых геометрических фигур оказывается
>>21109
>>20606
>>20577
>>20558
На самом деле это задание из раздела "Условный оператор" из "Основы Питон" от Яндекса. Там по ходу задания так составлены что процентов 50 норм, еще 40 посложнее и 10 изъебистые.
https://academy.yandex.ru/handbook/python
Алсо Яндекс и яндексоидов рот ебал, чтобы они там все сдохли, путинисты обоссанные.
Учитывая ситуацию, почти без разницы куда, лишь бы устроиться.
бля я так и делал, но я вот смотрю на аннотацию со стороны и вижу как будто список из ОДНОГО словаря, а не из многих
list[dict] - лист диктов
> вижу как будто список из ОДНОГО словаря
это для туплей специально так сделали, чтобы типы данных на лету описывать
https://docs.python.org/3/library/typing.html#special-forms
tuple[dict] - тупль из одного дикта
tuple[dict, dict, dict] - тупль из трех диктов
tuple[dict, ...] - тупль диктов
Пацаны, тут случилась небольшая оказия. В celery мы из Джанги вытягивание содержимое нескольких таблиц и засовываем их в pandas-датафреймы, что-то типа:
stores = pd.Dataframe(Store.objects.all().values())
preset = pd.Dataframe(Preset.objects.all().values())
items = pd.Dataframe(Item.objects.all().values())
Было бы неплохо эти операции сделать параллельно, т.к. это простой SELECT, но в каждой такой таблице по миллиону строк а в ссаной Джанге все они делаются последовательно. Кто-то может сказать "но чел бля, у тебя ж celery - засунь все в разные celery-таски!", по началу идея вроде здравая но вы учли оверхед на сериализацию/десериализацию? Если celery-таска будет в результате выдавать список с миллионом словарей это пздец, поэтому все это надо сделать в рамках одного таска. Как обычно в Джанге такое решают? Тредов наплодить?
Норм, но лет через пяток, когда нужная версия уже будет на любом холодильнике.
Иногда в компрехеншнах нужно.
Нужны советы по следующему вопросу. Я пилю диссертацию параллельно с проектом. Суть проекта заключается в создании симуляции классической настольной игры Монополия для нахождения оптимальных выигрышных стратегий. Проект пишу на Python. Научрук сказал, что прикольно бы было сделать это с использованием машинного обучения. Если с созданием условий для игроков в виде ролла костей, карточек шанса, условий при попадании в тюрьму и прочего я не испытываю проблем, то в части с машинным обучением я полностью проседаю. Я не могу установить отправную точку. Мне нужно сделать хотя бы 4х игроков ИИ, которые будут играть в Монополию и набираться опыта, чтобы с каждой итерацией игры они играли лучше и лучше, но я хз как именно сделать модель. Забить им правило, чтобы они сперва покупали хоть какую-то улицу, а потом пытались собрать сет из них? Но не будет ли это тупо алгоритмом действий? Алсо, не ясно как быть с аукционами и моментом, если игроки захотят поторговаться друг с другом, чтобы получить недостающие улицы которые уже есть у других игроков. Даже начал читать Grokking Machine Learning чтобы как-то разобраться в этой теме.
>Научрук сказал
Это такой же научрук как у нас тут лиды с 3 годами опыта?
Спизданул - пусть читает литературку и рассказывает как.
https://www.bbc.com/russian/vert-fut-51673199
> Почему Монополия - на самом деле очень плохая игра
>"Все сводится к везению, - говорит Рейнольдс. - Цели в ходе игры не меняются, поле все время одно и то же. Никакой особой стратегии не существует. Добавьте еще то, что приходится долго ждать своего хода, и вы поймете, почему людям так скучно в нее играть
Ну и что тут можно оптимизировать?
Ну собственно он меня и послал читать книжки по данному вопросу. Есть какая-то проблема в его решении? Я просто не шарю. У меня направление Big Data, и мы поверхностно проходили машинное обучение, так что его применение здесь мне показалось логичным.
Выбор сета улиц как минимум.
Ну читай
https://www.researchgate.net/publication/289403522_Learning_to_play_monopoly_A_Reinforcement_learning_approach
И литературку в конце.
И все что нагуглишь про RL
Грессер Лаура, Кенг Ван Лун
Г91 Глубокое обучение с подкреплением: теория и практика на языке Python. — СПб.:
Питер, 2022. — 416 с.: ил. — (Серия «Библиотека программиста»).
ISBN 978-5-4461-1699-7
Спасибо, анонче.
Джангисты, нужна помощь!
https://stackoverflow.com/questions/60042351/editing-posts-in-a-django-blog
У меня функция edit 1 в 1 как у молодого человека.
Оно как бы работает, подсасывает данные в нужную форму, сохраняет, вот только оно сохраняет мне новый пост, а не отредактированную версию старого.
Что я делаю не так?
Пока писал, осенило, что, возмоно, дело в том, что в поле форма нет нкиакого упоминания об id (хотя пост я нахожу по id), может быть где-то тут собака зарыта...
сохраняешь форму, но не пишешь её в базу с помощью commit=False
затем присваиваешь старый id, чтобы не создавалась новая запись в бд
и затем .save()
и ещё в Джанго есть метод update()
В Европе только 4 страны пишут на JavaScript - это Ирландия, Грузия, Армения и Крым
нюмпяй
Анончерс, спасибо тебе!
>>но вы учли оверхед на сериализацию/десериализацию
Ну так посчитай что быстрее будет. Откуда мы знаем что у тебя там за объемы и сложность твоего говна.
Норм
Foreign Key тут также ни при чем, он обозначается ключиком в правом нижнем углу, тут FK нет
Может потенциальные ключи или индексы?
И как тебя тайп хинты спасут, еблуша? Они помешают в рантайме сконкатить 2 фрейма, где в первом тип колонки флоат64, а в втором - инт64? И расскажи поподробнее про статическую типизацию, mypy, cython, а то гуглить лень.
Выше уже писали про пайдантик. Либо создавай свой датакласс и пиши свой `__post_init__` с кастомной валидацией.
Забыл ещё про attrs.
ох ебать.а ты слыхал что датасаентисты всю эту "программную инженерию" в рот ебут и прекрасно себя чувствуют?
Я не отрицаю что она может быть полезна, но ты пришел на чужое поле свое порядки наводить. С pandas ты не справишься никак.
Это я их в рот выебу если они такое у меня будут мутить
Потому что я сейчас вынужден разбираться с их помоями, и мне не в кайф в них копаться. Часть я поправлю остальное будет уже на них, если они не будут соблюдать эти конвенции, будут выебаны в жопу ПМом и лидом
>>22957
>в рантайме
Статическая типизация это не про рантайм. Typescript тоже в рантайме не делает нихуя
>Typescript тоже в рантайме не делает нихуя
Так он компилится в жс. Что мне мешает всем поставить всем any и в конфиге компилятора уровень проверки минимальный поставить?
for i in range(100, 200+1):
# Store i as a string on a separate variable
var = str(i)
# Split i
var_parts = var.split()
# Go through the parts
for i in var_parts:
if i % 17 == 0:
sum = sum + i
sum(n for n in range(100,201) if not n % 17)
>>22977
Тоже думал что с pd нихуя не поделать, но оказывается что есть способ
https://github.com/CedricFR/dataenforce
>Потому что я сейчас вынужден разбираться с их помоями,
ты чьмо и кодерок взаимозаменяемый.
а датасаентист - учоный и светило.
какое твое дело?
>>2523470
Ну жак устройся программистом, да заработай.
В работе тоже придётся изъебываться так же, как и в задаче с пайтонтьютор?
сам на питоне писал только в школе но интересно изучить.
А тут как раз на хакатон наткнулся. был бы рад чтоб меня подтянули (раньше писал на laravel(php)) и хочется найти друзей/знакомых в этой нише
Сделать ты можешь как угодно, но проще и удобнее будет через классы.
Если сейчас не можешь это переварить пока ньюфак, то поймешь потом со временем.
Создай на функциях онли вариант игры shoot-em-up (где кораблик внизу, а сверху на него летят враги). И реализуй на функциях снаряды врагов, снаряды игрока, появление кораблей врагов и их исчезновение при попадании по ним игрока или при достижении нижней границы экрана этими кораблями.
Просто попробуй. А потом это же сделай на классах.
>пример задачи, которую можно выполнить с помощью классов и нельзя с помощью функций
Рекомендую пыху, там на каждый класс стдлибы есть по 50 дублирующих его функций засирающих глобальный неймспейс, рекомендую, еще захочешь.
>А потом это же сделай на классах.
В следующей серии - поясните за преимущества классов, перенес функции в де факто статик методы, ниче не поменялось, только объявление классов добавилось.
а ты и не поймешь пока не будет работать в коллективе.
Вопрос не в удобстве. И нет такой задачи, которую нельзя было бы выполнить без классов.
Классы - инструмент поддержания порядка в большом легаси-говне.
Как только будешь это держать в уме, сразу поймешь все ООП и классы.
второй важный фактор - возможность менять программу под изменяющиеся требования кабанчика, который либо сам не знает чего хочет, либо действительно условия ведения бизнеса меняются со временем.
К этому относятся все варианты мантры DRY (Don't Repeat Yourself).
Почему программисты такие тупые и объясняют все мантрами - я не знаю
Как-нибудь коротко, без "global" с перечеслением всех переменных.
Ты куда-то не в ту сторону думаешь, для чего это?
Гугли замыкание.
Обязанности:
- Писать pytest под разные железки для проверки интерфейсов.
- Писать простенькие bash скрипты.
- Поддерживать инфраструктуру (коммит-хуки, репозитории, CI/CD и не пизди).
- Верстать доки по всякой хуйне.
- Диджитал подай-принеси.
Куда можно пытаться развиваться?
Девопс? Дальше в QA расти?
Не чувствую своей незаменимости, а значит зарплата расти не будет.
Прогресс идёт очень медленно потому что работа связана с железками.
Любая проблема с железкой тормозит мою работу.
Если что-то сломалось мне нужно ждать пока другие люди починят и заменят.
Если появилось что-то новое мне нужно ждать пока примут коммиты по поддержке новой ебанины.
Сделай ретерн ф3 из ф1.
Зачем создавать функцию внутри функции, но при этом вызывать её снаружи?.. Ты осознаёшь, что ты делаешь? Пространство имён не просто так придумали, с которым у тебя тотальное непонимание.
1. Один из не самых лучших вариантов - это создать функцию, который передавать какой-либо аргумент. На основе значения аргумента выполнять действия и возвращать результат через return, если это необходимо.
https://pastebin.com/utk7iGK7
2. Нормальный вариант - это создать класс, у которого шаблон Singleton, и вызывать методы.
https://pastebin.com/ec6uhcHs
На работе у тебя код будет в десятки и сотни тысяч строк... И не всегда с документацией. И не всегда будет в коллективе кто-то, кто смог бы объяснить что здесь, откуда, почему и куда (люди могут умирать или уходиться с работы).
И на работе ты будешь отвечать за деньги кабанчика.
Ну к примеру, мне нужна переменная 'TestValue = 1024'
Только не говорите что все необходимо учить самому, курс для меня будет бесплатным, надо только выбрать
0, Дублируй код / данные на pastebin и аналогичные сайты. Нет желания печатать текст вручную, когда можно обойтись.
1. "Вытащить значения", которые будут сохранены в словаре:
https://pastebin.com/4ySvJ9wq
> присвоить переменным
Подскажи, пожалуйста, а как возможно создавать переменные автоматически и, что самое главное, обращаться к ним, если их название (вышеупомянутая TestValue) может быть произвольным, т.к... пользовательские данные могут быть различные; можно буквально генерировать псевдослучайные данные (см. информацию о random).
Я знаю, что можно динамически создавать объекты, если есть класс.
Нужен парсер такого файла. Это я хз какой формат. Бывают стандартные, типа json, toml, для них качаешь библиотеку (или встроенная) и скармливаешь файл конфига. Они тебе в ответ, обычно, выдают dict с конфигурацией из него.
Школу для чего? Иди на Степик, там курсы от Биигик. 2 бесплатных первых. На 3-6 месяцев тебе хватит с головой.
А 80 к можешь в окно выкинуть, если у тебя опыта пока нет.
это какой-то нестандартный файл.
Нет такого формата.
Максимально близко к nginx config.
То есть, это neat config: https://github.com/iafan/Config-Neat
Пиши сам, хуле как непрограммист.
tg: https://t.me/Nothing_unknown
import requests
page = requests.get('https://translate.google.com/?hl=ru')
tree = html.fromstring(page.content)
prices = tree.xpath('//a[2]/div[2]/text()')
prices = str(prices).encode('utf-8', 'replace')
print(prices)
Котаны проблема с кодировкой, энкодами декодами дрочился, читаемого ничего так и не получил, строку с болдом можно удалить и посмотреть что получается на выходе, что-то примерно такое ['СоÑ\x85Ñ\x80аненнÑ\x8bе'], что сделать чтоб эта галиматья нормально отображалась?
>На работе у тебя код будет в десятки и сотни тысяч строк
Предположим, что джуна на такое сразу не кинут, но понимаю, о чём ты.
Умру за деньги кабанчика. Ну или уволят.
Готового решения, к сожалению, не подскажу, но напишу, что возможно поможет разобраться с проблемой.
Если получить тип у переменной prices, то будет list.
При получении информации о типе 0 элемента list будет lxml.etree._ ElementUnicodeResult. (Добавил пробел; надеюсь, что imageboard не уберёт подчёркивание).
https://stackoverflow.com/questions/53459703/type-lxml-etree-elementunicoderesult-cannot-be-serialized
Тебе необходимо читать документацию о lxml.
https://lxml.de/tutorial.html#parsing-from-strings-and-files
>tree = html.fromstring(page.content)
>>> type(page.content)
bytes
tree = html.fromstring(page.content.decode())
Друг, в аргументы передавай свою хуйню. И как ты функцию вызываешь, у тебя там разве не должны быть строки в аргументах?
>в аргументы передавай свою хуйню
Так а сохранять где, чтоб потом снова взять это значение? Ретерн что ли делать?
> разве не должны быть строки в аргументах
Да, там строки. Это я просто для примера сделал.
Блин, ну это колхоз какой-то. Нагромождение хуйни. Это больше кода, чем у меня сейчас. И что делать если if не вызывается? Значит еще больше ифов добавлять. Хуйня какая-то, с записью в глобальную гораздо удобней.
Ты городишь наколеночный celery/системные таймеры? Тебе для саморазвития или просто не знал?
Ну вообще глобалы на свой страх и риск используй. А так, передаешь свой словарь в аргументы, внутри функции его меняешь и его же возвращаешь в самом конце, после всех ифов. И вместо трех вызовов функции сделай цикл нормальный внутри функции.
Есть надежный способ как переделать глобалы на неглобалы.
Создаешь класс, все глобалы делаеш аттрибутами класса, все свободные функции соответственно превращаешь в методы. Потом создаешь один экземпляр класса и на нем все что нужно запускаешь.
можно
f1.f3()
Но выше f1().f2()
Ошибка вылетает на 8 строке. Как я понял нужно c помощью скрипта вынуть инфу о блоке в блокчейне с помощью ключа. Так еще сам скрипт который выдали с ошибками
AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'?
При попытке изменить на encode получается замкнутый круг.
Пробывал загрузить ключ в отдельную переменную тоже не работает.
Да , причём прямо на лекции слёзно требовали установить 3 питон на виртуальной машине -_-
Сначала нужно функцию вызывать, чтоб в области видимости стали видны её атрибуты (функции), дальше можно без скобок достучаться до её атрибутов (функций).
>>26312 (Del)
Не понел сраказма.
>Сначала нужно функцию вызывать, чтоб в области видимости стали видны её атрибуты (функции), дальше можно без скобок достучаться до её атрибутов (функций).
Выглядит как дерьмовый дизайн, если честно.
Да ваще язык для говноедов, дебилов и олигофренов, все в пхп.
Хочу следующие:
def zalupa(n,m):
.....
map(zalupa,xyu.items())
Так header_hex это строка, сшитая из нескольких других строк. Она уже строка, ей не нужен decode()
decode() нужна, чтобы байтовую строку превратить в обычную
просто сотри decode()
>map
https://docs.python.org/3/library/functions.html#map
For cases where the function inputs are already arranged into argument tuples, see itertools.starmap()
??
10 секунд процессорного времени и 1 мб в день хватит.
А можешь конкретнее сказать что мне нужно? AWS Lambda?
Я в вебе совсем ноль, писал свой клиент-сервер для локалки на плюсах минимальный со своим простейшим протоколом, знаю про всякие udp и прочее, но что там с такими крупными платформами, или с авторизацией - вообще без понятия.
Нужна функция реагирования по событию (чтобы с любого айпишника можно было его отправлять), и чтобы оно само раз в несколько часов по своим таймерам могло отправлять сообщение на айпишник. А это выглядит как то что оно в фоне никак не работает, а только откликается на запросы.
https://aws.amazon.com/free/
На год бесплатный триал. Ну и подобные сервисы довольно дешевые. Чтобы откликаться на запросы машина должна работать 24/7. Не знаю сервисов, которые бы могли поднять машину по запросу, и чтобы она в остальное время спала.
ЕС2 я имел в виду. Хотя Lambda звучит как что-то подходящее. Не разбирался, но тебе стоит посмотреть.
Чтобы их ставить, очевидно 👍
Посмотри на с++ код sfml, там множественное наследование и очень простая логика классов, смотришь и сразу понимаешь что лаконичнее не напишешь и классы тут уместны.
Но ведь функции можно объединять внутри функций.
>>26904
>Посмотри
Посмотрел. Всё равно непонятно зачем нужны классы.
Чем они принципиально от функций отличаются? Поясните нюфагу же, ну.
Вот надо мне запилить ОБЬЕКТ который считал бы количество залуп. В каком случае мне нужно делать функцию, а в каком класс. Что такого в классе чего нет в функции?
>Но ведь функции можно объединять внутри функций.
но это не так модно, как внутри класса
можно еще пустой инит пихнуть, чтобы казаться умным
Ты про функциональные объекты с методом __call__ или про обычные классы?
Функции - когда у тебя какая-то операция над данными. Сортировка, там, нормализация векторов, что хочешь.
Классы когда тебе нужно хранить сложный объект с кучей параметров. Пример - дискорд-бот, ты создаёшь экземпляр бота, он логиниться, и он уже может принимать и отправлять сообщения, и при этом он должен в себе хранить соединение, айдишники и прочее, а при отсоединении всё это убрать? И его можно передать в параметр функции, которая используя переданного бота отправляет прогноз погоды на сервер условно говоря.
Ты точно хочешь подобную задачу решать без классов? Да хотя бы как ты бота будет передавать в функцию? Как словарь с полями?
>Что такого в классе чего нет в функции?
Магические методы, наследования, инкапсуляция, полиморфизм
>как ты бота будет передавать в функцию? Как словарь с полями?
Блин? ну с какими он данными там работает? такие данные и будут передаваться куда следует. Абсолютно точно так же как и с классом же, не?
Я правильно понимаю, что класс это такой обьект ООП, который в себе СОХРАНЯЕТ свое собственное окружение с данными, переменными вот этим всем и может с ним туда-сюда передаваться. И в этом его особая отличие от функций, которые из себя представляют просто алгоритм, а данные для них надо сохранять отдельно. например в глобальной среде, а это не удобно?
Функции и классы - это вообще разные категории объектов, я не понимаю что ты спрашиваешь уже.
Ты можешь практически любую программу написать вообще без классов (если не считать, что строки и списки - тоже классы), но это будет очень невыразительно.
Предположим у тебя есть функция отправить - куда можно передать как изображение (по ulr или набор байтов из файла) так и простую строку.
Как ты предлагаешь хранить строки и изображения без классов, и какой у тебя будет код обработки всего этого?
Я знаю как это написать в таком виде без классов, но не знаю как написать чтобы код был понятный, его было просто редактировать и изменять и в нём было сложно ошибиться. Совсем не знаю.
>Функции и классы - это вообще разные категории объектов,
>вообще разные
Ну если они ТАКИЕ РАЗНЫЕ то обьясни нюфагу в чем между ними разница, что может класс чего не может функция? Может они не такие уж и разные?
>>26957
>Как ты предлагаешь хранить строки и изображения без классов
Ну если так поставлен вопрос, то почему бы не хранить это в каком-нибудь массиве в глобальном окружении. Где тут необходимость классов, не понимаю. Чому так сложно объяснить?
Классочелядь опять соснула у функциябогов. Ничего нового.
Ну так я в отличие от Валерия не упиваюсь своим невежеством. Я понимаю что много не знаю и хочу разобраться.
Скучно уже, ты просишь разницу между микроволновкой и радугой показать.
>Где тут необходимость классов, не понимаю.
Классы необходимы, так как они используются в 99% либ. Ты конечно можешь их не использовать и написать свои на функциях.
>Чому так сложно объяснить?
Код напиши того что я предложил, про отправку картинок и текста.
Везде в рекламе - питон может все.
Мой вопрос. Чего питоне НЕ может делать?
>обьясни нюфагу в чем между ними разница, что может класс чего не может функция
Вопрос семантики, удобства разработки и поддержки. Почитай, что такое наследование, инкапсуляция, полиморфизм. Конечно в питоне можно всё то же самое делать и без классов - в конце концов кроме ООП есть множество других парадигм программирования. А вот в джаве без ООП уже никуда
>>27040
>>27058
Ладно, скажите хотя бы про локальную видимость данных.
Вот в функциях локальное пространство создается при вызове функции и удаляется сразу когда функция возвращает что-нибудь.
А в классах как? Локальное пространство класса со всеми переменными и данными сохраняется всегда? Это бы имело смысл и было бы тем отличием, которое я ищу.
Сам проверить сейчас не могу.
>почему бы не хранить это в каком-нибудь массиве в глобальном окружении
Тут-то ты и попался, петушок global'овский. Потому что одна из основных идей в программировании это максимальная абстракция и разделение ответственности.
Ты когда в автомобиль садишься, ты же не видишь через панель двигатель, под ногами карданный вал и мост, а под жопой кучу электроники и асфальт?
Никто тебе не мешает, почти как в C, хуйнуть свои данные в массив и делать с ними что хочешь. Сначала одной функцией тебе надо обработать первые n элементов, потом второй функцией m элементов, а потом третьей каждые n+m/3. Вот только проебёшься с указателем и одной функцией зацепишь данные, которые для неё не предназначены, или словишь сегфолт.
Функции это черные ящики, они нужны чтобы что-то получить (или не получить) и что-то вернуть (или не вернуть), при этом у них может быть побочный эффект, который может влиять на что-то в другой части программы.
При их вызове ты ожидаешь тот результат, который описан в их интерфейсе. При этом данные, с которыми она работает, не привязаны к самой функции. И функция не хранит состояние этих данных (про замыкание молчим).
Классы это панели управления, под капотом которых черные ящики, они нужны чтобы данные и функции, с которыми эти функции работают, обернуть под единую абстракцию с общим интерфейсом.
При создании объекта ты ожидаешь, что объект хранит конкретные данные и имеет конкретные рычаги управления этими данными.
В итоге получается, что ты можешь всё написать на функциях, но данные у тебя хуй знает как будут елозить по программе и не будет отдельных зон ответственности за эти данные, если только переносами не отделишь группы функций и переменных, которые отвечают за конкретное что-то. Читать и тестировать потом такой код намного сложнее. В случае изменения сигнатуры функции тебе придётся править взаимодействие с ней в разных частях кода, если она не разово вызывается, а в классе достаточно метод переписать.
>>27061
И у класса и у экземпляра класса (объекта) свои области видимости, и существуют они ровно до момента, пока ты на них не удалишь ссылку или живёт процесс.
>в функциях локальное пространство создается при вызове функции и удаляется сразу когда функция возвращает что-нибудь.
Необязательно, ты можешь возвращать функцию или сделать замыкание или декоратор и тем самым прокидывать данные.
>почему бы не хранить это в каком-нибудь массиве в глобальном окружении
Тут-то ты и попался, петушок global'овский. Потому что одна из основных идей в программировании это максимальная абстракция и разделение ответственности.
Ты когда в автомобиль садишься, ты же не видишь через панель двигатель, под ногами карданный вал и мост, а под жопой кучу электроники и асфальт?
Никто тебе не мешает, почти как в C, хуйнуть свои данные в массив и делать с ними что хочешь. Сначала одной функцией тебе надо обработать первые n элементов, потом второй функцией m элементов, а потом третьей каждые n+m/3. Вот только проебёшься с указателем и одной функцией зацепишь данные, которые для неё не предназначены, или словишь сегфолт.
Функции это черные ящики, они нужны чтобы что-то получить (или не получить) и что-то вернуть (или не вернуть), при этом у них может быть побочный эффект, который может влиять на что-то в другой части программы.
При их вызове ты ожидаешь тот результат, который описан в их интерфейсе. При этом данные, с которыми она работает, не привязаны к самой функции. И функция не хранит состояние этих данных (про замыкание молчим).
Классы это панели управления, под капотом которых черные ящики, они нужны чтобы данные и функции, с которыми эти функции работают, обернуть под единую абстракцию с общим интерфейсом.
При создании объекта ты ожидаешь, что объект хранит конкретные данные и имеет конкретные рычаги управления этими данными.
В итоге получается, что ты можешь всё написать на функциях, но данные у тебя хуй знает как будут елозить по программе и не будет отдельных зон ответственности за эти данные, если только переносами не отделишь группы функций и переменных, которые отвечают за конкретное что-то. Читать и тестировать потом такой код намного сложнее. В случае изменения сигнатуры функции тебе придётся править взаимодействие с ней в разных частях кода, если она не разово вызывается, а в классе достаточно метод переписать.
>>27061
И у класса и у экземпляра класса (объекта) свои области видимости, и существуют они ровно до момента, пока ты на них не удалишь ссылку или живёт процесс.
>в функциях локальное пространство создается при вызове функции и удаляется сразу когда функция возвращает что-нибудь.
Необязательно, ты можешь возвращать функцию или сделать замыкание или декоратор и тем самым прокидывать данные.
На хрена мудрить?
Алсо, помню что в html кокодемии нас учили в плане js, что весь код должен в идеале находится в функциях. Вообще весь.
Ты находишься на одном из таких форумах. Ну, ещё есть чаты в телеге для бегиннеров.
Так выше уже писали про функции, что это просто последовательность команд, которую можно оформить единым блоком, который потом можно вызывать многократно в разных частях программы, но чел начал ебать мозг про "зойчееем квассы када уже есть ункции, ря квассы нинужныы".
В жиэсе вообще нет нативных классов, там классы это синтаксический сахар над функциями, т.е. там действительно классы могут быть ненужоны.
def minimax(board, isMaximazing):
#Когда доступных ходов больше нет, смотрим кто победил
if ' ' not in board.values():
score = 0
if isMaximazing:
if checkWhichMarkWon(computer):
score = 1
elif checkWhichMarkWon(player):
score = -1
else:
if checkWhichMarkWon(computer):
score = -1
elif checkWhichMarkWon(player):
score = 1
return score
#Лучший ход для компьютера
if isMaximazing:
score = -800
for i in board.keys():
if board == ' ':
board = computer
minimax_score = minimax(board, False)
if minimax_score > score:
score = minimax_score
move = i
#Лучший ход для человека
else:
score = 800
for i in board.keys():
if board == ' ':
board = player
minimax_score = minimax(board, True)
board = ' '
if minimax_score < score:
score = minimax_score
move = i
print(score)
return move
def computerMove():
#Скопировать текущую позицию для минимакса
new_board = board.copy()
move = minimax(new_board, True)
#Сделать ход
insertLetter(computer, move)
def minimax(board, isMaximazing):
#Когда доступных ходов больше нет, смотрим кто победил
if ' ' not in board.values():
score = 0
if isMaximazing:
if checkWhichMarkWon(computer):
score = 1
elif checkWhichMarkWon(player):
score = -1
else:
if checkWhichMarkWon(computer):
score = -1
elif checkWhichMarkWon(player):
score = 1
return score
#Лучший ход для компьютера
if isMaximazing:
score = -800
for i in board.keys():
if board == ' ':
board = computer
minimax_score = minimax(board, False)
if minimax_score > score:
score = minimax_score
move = i
#Лучший ход для человека
else:
score = 800
for i in board.keys():
if board == ' ':
board = player
minimax_score = minimax(board, True)
board = ' '
if minimax_score < score:
score = minimax_score
move = i
print(score)
return move
def computerMove():
#Скопировать текущую позицию для минимакса
new_board = board.copy()
move = minimax(new_board, True)
#Сделать ход
insertLetter(computer, move)
В шапке.
Всегда казалось, что Питон какой-то слишком простой и "волшебный" язык на фоне прочих, но js это какой-то совершенно особенный случай.
Мне после питона жс показался ещё более простым языком. Его сложность в спецификациях, кучи апи и нагромождении инструментов вокруг языка (babel, webpack и т.п.)
А с питоном так нельзя что ли?
Соблюдением pep8/name/type convension и настройкой конфига pylint/flake8/mypy занимается команда в нормальных местах, а не берётся само по себе или из репо тимлида-хуесоса.
Так что конкртено может квас, что не может ункция? Ты можешь на мой ответ ответить или да?
Вот в квасе есть семь залуп, а в функции только две с половиной.
Есть такое и если есть то что это?!?!?!?!?!?!11111
Тебе уже выше отвечали, магические методы и параметры, наследование, полиморфизм
У тебя вопрос уровня как лучше какать в яму, на корточках или взять стул и в нём очко выпилить. Сри как тебе удобно, но с стулом вероятность провалиться в яму меньше и другие могут с него срать.
Guido van Rossum on Python 4.0
https://youtu.be/qC5Po77bfKI
>Так что конкретно может класс, что не может функция?
По сути - ничего. Классы для пидоров, давно установлено уже. Функции проще
Чё там, опять что-то сломают?
Потому что в церковь не ходят.
#get 'Spurs' value from team column
df.loc[df.team=='Spurs'].values[0]
Для ДСера это кажется логичным но для меня - нихуя. Давайте поглядим, что у нас внутри квадратных скобок?
df.team=='Spurs'
Это ж блять булево значение! Результат сравнения. Но по логике pandas это выражение говорит "найди строчки в датафрейме df где поле в колонке team равно 'Spurs'"
И че? Значение df.team=='Spurs' было вычислено до того как положено в df.loc[]
Или ты имеешь в виду как оно работает в рамках питона?
Тогда через реализацию метода __getitem__.
Это не булево значение, а серия (кортеж) из индекса и булевых значений.
loc первым параметром принимает эту серию и возвращает отфильтрованный по индексу результат
== у объекта df тоже переопределен через __eq__.
Насчет кортежа напиздел, это нампаевский массив, но суть не поменялась.
Все куда проще
Петухонщики перегрузили сравнение у объекта DataFrame. Оно возвращает не булево значение
@dp.message_handler(content_types = types.ContentType.TEXT)
async def send_welcome(message: types.Message):
img = Image.open("C:/Users/MY MSI/Desktop/gaduka/nazi_nigger.jpg")
draw = ImageDraw.Draw(img)
draw.text((450, 450), str(message.text), (255, 255, 255))
img.save('nazi_nigger1.jpg')
photo = open('C:/Users/MY MSI/Desktop/gaduka/nazi_nigger1.jpg', 'rb')
await bot.send_photo(message.chat.id, photo)
Может все, но хуево. Десктоп, мобилки, фронт (да и то это сложно назвать фронтом, учитывая итоговую компиляцию в жс, да и вообще это просто забавная игрушка на данный момент, даже не серьезно) это смешно. Да и в бэке питон сосет у нормальных языков. Вот и остаются всякий машоб, бигдата и скриптики для сисадминов. Ну и питон полезный язык для не-программистов, как вспомогательный инструмент.
надо в draw.text передавать font, а у фонта есть size
графику может делать, игрульки разные без 3Д, и сурьёзные программы ту же 1Ц уёбищную запилили бы на пистоне лучше!
Планирую вкатываться после защиты докторской по медицине занесла нелёгкая, навыки в стат. обработке и визуализации есть, то есть я сейчас стараюсь закрыть область с получением данных, наведением в них порядка и т.д. Может что-то не так понимаю.
Посмотрел твой код и ошалел, не говорю что не правильно потому что не понимаю.) А не понимаю потому что все что там пишешь на этом этапе ты не проходишь и писать и думать я полагаю нужно примитивней на уровне пройденного материала. То же сначала не получилось, не найдя ответа в инете немного посидев прошел задачку.
вот код
a = str(input())
a1 = a[0]
a2 = a[1]
a3 = a[2]
min1 = int(min(a1, a2, a3))
max1 = int(max(a1, a2, a3))
min2 = int(a1) + int(a2) + int(a3) - min1 - max1
if min1 == 0:
print(str(min2) + str(min1), str(max1) + str(min2))
else:
print(str(min1) + str(min2), str(max1) + str(min2))
Это копия, сохраненная 1 февраля 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.