Этого треда уже нет.
Это копия, сохраненная 26 апреля 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Питон тред №108 /python/ 1883441 В конец треда | Веб
Тред, посвящённый языку программирования Питон, #108

Предыдущий: >>1873283 (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
2 1883524
>>1883433 →
Кхм, спасибо.
Значит, первый вариант лучше. Хотя мне не очень нравится загромождать код лишними буквами (типа, почему бы сразу в параметре не установить нужное дефолтное значение, а не оперировать на основании None он или нет), но если так правильнее, то я приму.
3 1883531
>>883524
Ах черт, ну конечно.
У меня ж там рандом, а со второй записью self.a всегда будет возвращать одно и то же число, сгенерированное на старте программы. Тогда конечно это херня.
4 1883657

>КОКОКО У НАС ЯЗЫК БЕЗ ЧЕТКОЙ ТИПИЗАЦИИИ ВСЕ РАБОТАЕТ И ТАК ЗАЕБИСЬ


>ПУК СЕРЕНЬК ЦИКЛ ФОР НЕ РАБОТАЕТ С ДАННЫМИ ТИПА ИНТЕДЖЕР)))))


Пиздец параша, нахуй я только время потратил на эту недопарашу? Лучше попробовал доучить кресты.
5 1883667
>>883657
Лучше бы ты с мамкиной шеи слез уже.
image.png711 Кб, 709x572
6 1883698
>>883657
Конечно, братан, если ты не осилил чтение ошибок в питоне, но в плюсах тебя однозначно ждет успех.
7 1883798
>>883657
а чё не так с фором, просто типичного инт и и++ фора нету и всё тут, а только проход по элементам
8 1883815
>>883657
Даун тупой

for i in 'four':
#loop of 0,3

kys
9 1883818
>>883798
Не обращай внимание на уточку. Он просто увидил фор из крестов и все что выглядит по другому для него неправильно.
10 1883822
>>883698
Главное на C++ начинать с "fuck you", а не с "пошёл нахуй". Иначе сначала придётся курить мануалы по работе с юникод-строками, переводе из одной кодировки в другую и т.п.
11 1883860
>>883815
>>883798
>>883698
>>883667
Говноеды не палятся. Пиздец питон дегенератский язык, я хуею.
1357809564141.png1,5 Мб, 1152x980
12 1883868
>>883860

>не осилил простейший язык для вката, которым обучают даже пятилетних детишек


>ЭТО НЕ Я ИМБЕЦИЛ, ЭТО ВЫ ГОВНОЕДЫ!

13 1883877
>>883868
Мальчик, я на си писал когда ты под стол ходил.
14 1883886
>>883877
Писал, да.
15 1883889
>>883877
Что нибудь кроме лаба1 и лаба2 написал?
16 1883891
>>883815
for i in 'four':
f
o
u
r
image.png247 Кб, 680x709
17 1883894
18 1883909
Гайз, а программирование на питоне ещё бурно развивается? Или самый мощный бум уже прошел и тем, кто знает джанго в совершенстве можно писать 3 строчки в день, есть пиццу флорентину и не развиваться дальше?
19 1883919
>>883877

>не может прочитать документацию по методу range()


>я на си писал


На хуе ты писал.
20 1883948
>>883909
Да, развивается. Каждый месяц новый фреймворк, который надо знать. Вот типа FastAPI.

И в целом в тренде надо быть. Например если не знаешь новые фичи по тайпингу из 3.8, то ты заплесневел.

Одно счастье, в 3.9 так ничего не вкатили и в 3.10 не собираются.

Джанго ХЗ, но наверное особенности 3 версии тоже знать надо.
21 1883963
>>883948
Как разрабы обычно узнают о новых фичах своего языка?
22 1883964
>>883948
Спасибо
Я просто уже месяц в ваш питон вкатываюсь. И думаю: "а надо ли мне оно". Может в инженегрии остаться перспективным специалистом за 320 рублей в час. У нас с начала 00-ых (когда начали везде ПЛК ставить) ничего не изменилось. И то это изменение на мне косвенно сказалось.

Олсо напишу что меня бесит в ваших тредах:
Жалобы, что приходится думать и что вы пишете при этом всего 100 строчек в день. Я, например, могу 2-3 дня над чем-то поразмышлять, а потом как обезьяна месяц сидеть и реализовывать. И я вам в этом действительно завидую.

Добра тебе
23 1883968
>>883964

>а потом как обезьяна месяц сидеть и реализовыват


Это например что?
24 1883971
>>883948
И ещё вопрос. На моём заводе считается работать 60 часов в неделю - обычным делом (бывали месяца, когда я меньше 70 ч. не работал). А в целом по специальности если звонят в выходные, то обязан ответить иногда и если что зайти на совещание.

Слышал, что у программистов дикие переработки. Насколько дикие?
25 1883974
>>883971

>иногда


лишнее
хотел написать, что такое и ночью бывает, но тогда если не предупредили, то можно говорить, что не слышал
26 1883982
>>883971

>Слышал, что у программистов дикие переработки


Это зависит от конторы и очень зависит от ПМа. Если твой ПМ - бесхребетный слизняк, который не может или не хочет отстаивать интересы своей команды, то в тебя будут постоянно лететь блокеры, хуёкеры. Типична внезапная смена приоритетов, когда ты два дня корпишь над задачей, а потом она внезапно попадает в холд и надо срочно сделать вот это и вообще оно уже должно быть сделано вчера. В таких условиях твои попытки запланировать свои законные выходные дни могут быть смехотворными. Выходишь в субботу и не ебёт. Потому что НАДА.
27 1883989
>>883982

>Типична внезапная смена приоритетов, когда ты два дня корпишь над задачей, а потом она внезапно попадает в холд и надо срочно сделать вот это и вообще оно уже должно быть сделано вчера.



Бля, это моя фирма на 100%. Особенно про вчера.

Но у нас поинтересней. Задача ПМа - выжать из тебя все соки, за как можно меньшие деньги. И обычна цена рабочих часов o-малое от срывания сроков (потому что твою работу ждет десяток других инженегров) или благосклонности заказчиков.
А за сотрудников впрягаются руководители отделов, их цель, чтобы работник никуда не ушел.
28 1884054
>>883964

>а потом как обезьяна месяц сидеть и реализовывать


Обычно так и бывает. Месяц строчишь как угорелый, вываливаешь море функционального кода.

Спустя полгода надо добавить маленьку фичу или что-то подправить, ты открываешь код, ругаешься матом на того, кто этот говнокод высрал, неделями думаешь, как именно внести несколько строк кода, чтобы заработало и не развалилось.
29 1884056
>>883989

>Бля, это моя фирма на 100%.


90% проектных работ. Причём не только в программировании.
1.JPG58 Кб, 514x656
30 1884058
Свойство - это объект с методами, которые позволяют косвенно обращаться к атрибуам и зачастую в чем-либо ограничивают такой косвенный доступ. ©Цитата из книги

Такое впечатления, что автор специально старался написать это максимально непонятно.

Объясните пожалуйста доступным языком, что такое свойство. Например в этой вот программе.
31 1884059
добрый анон, помоги. вкатываюсь в питон. прочитал и изучил книгу "укус питона" по совету из прошлого треда, и подошел следующий вопрос - что дальше? пока прохожу проект эйлера по питону, но не знаю что именно читать и учить дальше.
32 1884062
>>884058
Суть вот в чём.

У тебя объект может иметь какие-то атрибуты, переменные, с которыми ты можешь работать напрямую
class MyClass:
____def __init__(self):
________self.num = 0

obj = MyClass()
obj.num = 123

Это не всегда хорошо, потому что у тебя нет контроля. Ты можешь некорректное значение присвоить, число не из диапазона или не число вообще. Может быть пользователь вообще не должен менять сам эту переменную - например, это счётчик количества вызовов метода и др.

Вот для этого и нужны property. Они для тебя как просто переменные объекта. Но реально прямого доступа у тебя к ним нет, он делается через сеттеры-геттеры.

Вот в этой программе у объекта нет переменной name. Но для пользователя эта переменная есть, всё выглядит так, как будто эта переменная есть. Но ты не можешь присвоить некорректное имя, пустое в данном случае. Ты можешь какие-то дополнительные действия делать, если меняешь имя.

В принципе это лишь синтаксический сахар, без сеттеров-геттеров это делается сознанием методов
setName()
getName()
и работой через них.
33 1884070
>>884062
Лол, помню баловался шарпом в бородатые годы, там эти геттеры-сеттеры надо было руками прописывать на каждую хуйню, пиздец занятие.
Потом вроде добавили сахарку под это дело.
34 1884082
>>884070

>в бородатые годы


Это в 2005? Авто-проперти добавили сто лет назад
35 1884093
>>884082
Где-то так, да.
36 1884095
А чем заниматься кроме лаба2-то на пайтоне
37 1884143
>>884058
В питоне нет свойств, тебя наебали.
38 1884145
>>884070
Хуею, что Джава до сих пор не утащила {get; set;} себе.
39 1884158
>>883909
Джанго-програмист != пайтон-программист
40 1884175
Сап прогач. Не прочитал еще ни одной книжки, закончил только что(3 недели) курс на степике, куда двигаться дальше?
41 1884179
>>884175
Че за курс?
42 1884181
>>884179
Поколение пайтон, курс для начинающих
От АйкьюОпшн
43 1884182
>>884175
В курс по алгоритмам от CSS.
44 1884184
>>884182
Dekuji!
45 1884196
>>884145
TypeScript первый придумал, c# сперла с TS как обычно, Java слизывает с C# но оооооооченб медленно и криво
46 1884295
>>884058
Это связано с инкапсуляцией, если ты не в ооп, то тебе это нахуй не надо, чекай приватный и защищенный методы, а так это гавно без задач.
47 1884344
сап аноны, допустим есть два beep-звука подлинее и покороче, каким образом можно различить их?
48 1884345
>>884344
тупанул, есть последовательность beep сигналов разной длины морзе которая дается на вход, каким образом можно расшифровать эту последовательность? По факту, мне нужно узнать только длину этих сигналов, и дальше уже сопоставлять с алфавитом, но каким образом можно узнать длину сигнала?
49 1884353
Сап.

Система: Windows 10
Версия питона: 3.9
Библиотека: только стандартная, нет возможности загрузить какие-либо дополнительные пакеты.

В буфере обмена лежит растровое изображение формата .BMP, а точнее скриншот, который туда попал после симулирования нажатия клавиши Print Screen.

Питоновский ctypes позволяет мне взять изображение из буфера обмена и сохранить его в файл, но есть одна проблема, выходной файл имеет большой размер.

После того как я конвертировал BMP в PNG библиотекой Pillow размер уменьшился до приемлемого без каких-либо потерь качества.

Собственно вопрос в том, как на стандартной библиотеке (Pillow в неё к сожалению не входит) возможно конвертировать BMP в PNG ?
50 1884361
>>884353
Читаешь это. https://ru.wikipedia.org/wiki/BMP
Потом это https://www.w3.org/TR/PNG/
Пишешь свой конвертер из одного формата в другой.
51 1884363
>>884345
Посчитать разность времени начала и конца сигналов? Да не, вряд-ли.
52 1884365
>>884345
А как получаешь? Через микрофон? Ну так пиши стрим и анализируй любой либой что работает с форматом того стрима, что пишешь. Это примерно как найти начальную { и конечную } но другой формат данных.
53 1884422
>>884175
Я уже месяц как вкатываюсь.
У меня была программа: 1 курс от Bioinformatics institute, теперь второй курс. ЕЩё алгоритмы почитал "grokhing alghoritms"
1608374931488.jpg27 Кб, 644x483
54 1884465
Сап аноны, почему переход на новую строку вызывает ошибку в функции?
55 1884477
>>884465
Потому что open() строит класс, одним из методов которого является метод .write() который что-то записывает в твоей файл.

Вызвать метод во время инициализации класса незя.

Но если очень хочется, то можно, просто вместо реального файла используй виртуальный.
Модуль io класс BytesIO() позволяет сразу что-то в виртуальный файл записать.
1608375520863.jpg41 Кб, 820x483
56 1884478
>>884465
Я там какую-то хуйню на пирил прикрепил. Вот новая пикча.
Почему \n вызывает ошибку при вызове функции?
57 1884483
>>884477
Советуй сюда: >>884478 бро.
58 1884485
>>884478
Потому что метод .write() экземпляра класса файла принимает только 1 аргумент, а ты передаешь ему 2 строки.
Напиши "some_function" + "\n" и ошибок не будет.
59 1884489
>>884485
Понял, спасибо.
60 1884564
Q all! Как в проектах с гитхаба искать откуда оно все начинается? Точку входа, так сказать. Клонировал проект себе, открыл и охуел от количества файлов и классов. А так хочется посмотреть как люди делают годные вещи, освоить методологию разработки.
61 1884567
>>884564
ну бывает если выделить название функции он тебе найдет файл где она объявляется, по-моему это весь функционал подобного рода
62 1884594
>>884158
Чем занимается пайтон-программист?
63 1884606
>>884594
Душит своего пайтона.
64 1884609
>>884594
Математикой
65 1884610
>>884609
Это DS, а не пайтон-программеры
66 1884645
>>884594
Логикой. Тут же большая часть - описание полей для моделей и формочек, прочей, можно сказать, серверной версткой, а остальное все за тебя делается.
67 1884648
>>884645
И суть даже не в том, что в Джанго ограниченые возможности на кастомизацию логики, а в том, что Джангоебы как правило ограниченные сами по себе и считают, что кроме их фреймворка ничего не существует.
68 1884665
Двощ, помоги.
Есть одна функция test, которая отдаёт bool или int
Как исправить код так, чтобы не вызывать её два раза:

if test(arg):
var = test(arg)
...
69 1884671
>>884665
var = test(arg)
70 1884674
>>884665
Как обычно, стоило спросить и сразу понял, что можно переменную присвоить до проверки...
71 1884717
>>883441 (OP)
как я понял, при запуске файла *.py интерпретатор вставляет вместо всех импортов код соответствующих модулей, вместо всех вызовов функций - код самих функций, а есть возможность посмотреть на код, который после всех этих махинаций получится?
не спрашивайте нахуя это мне
72 1884752
Сап двач
Как можно сделать это через регулярные выражения?

>Найдите все натуральные числа, не находящиеся внутри или на границе слова;



Заранее благодарю вас за помощь
73 1884763
>>884665
хуевая логика у тебя, функция должна одно из возвращать
74 1884764
>>884763
У меня функция ищет хуйню в хуйне и возвращает фолс если не нашла.
75 1884841
Господа, помогите, пожалуйста. Хочу в JSON оставить только уникальные ключи. Никак не могу сообразить как сделать. Щит-код тут https://ideone.com/Zy3e6s
76 1884847
>>884764
Наверное тогда логичнее делать Optional[int]?
77 1884854
>>884841
То есть тебе надо чтобы второго owner2 не было в массиве, да ?
78 1884861
79 1884864
>>884861
пизда
new_owner_id = list(dict.fromkeys(owner_id))
80 1884871
>>884864
тут вопрос в том, что в JSON пары {owner_id : media_id}, а твой код вернет только уникальные значения owner_id без пары media_id, что, как сам понимаешь, нас не устраивает. нужен еще один какой-то хитрый ход.
81 1884876
>>884871
тут вопрос в том что я тебя про массив спросил, а не про JSON
из json'а лишний owner вместе с media исчезнуть должен ?
82 1884887
Ты какую-то хуйню обьясняешь, покажи что должно стать из этого жсона.
83 1884888
>>884887
внатуре долбоеб какой-то, если есть возможность до преобразования в джсон убрать лишние элементы, нахуя их из итогового джсона убирать
84 1884892
>>884876
да, из JSON owner_id вместе с media_id должен уйти. сорян, если туплю.
вот так должно получиться: {'result': [{'owner1': 'media1'}, {'owner2': 'media2'}, {'owner3': 'media3'}]}
85 1884894
>>884888
потому что важно сочетание owner_id: media_id. если из начального массива убрать лишний owner_id, то нарушается сочетание с media_id.
86 1884909
>>884717

>при запуске файла *.py интерпретатор вставляет вместо всех импортов код соответствующих модулей,


Нет, не верно.
Интерпретатор "делает импорт" и запускает код из модуля только один раз. То есть если ты в нескольких файлах проекта импортируешь скрипт, то он выполнится лишь один раз.

Ты можешь легко в этом убедиться, вставив отладочный print в модуль.

В этом принципиальное отличие от #include в Си.

Импорт - это создание в памяти объекта-модуля.
87 1884914
>>884909
Си си рагацци.
improving 88 1884955
Привет всем, есть тут челы на лвл джун которые изучают джангу. Хочу связаться для дальнейшего развития вместе. Я заебался развиваться один
89 1884994
>>884914
тэйк э ченс оф мии
90 1884995
>>884909
ну кстати import.reload() модуль импортирует еще раз
91 1885031
>>884955
Привет. Я думаю в джангу вкатываться. Но я пока совсем слаб и изучаю теорию. Думаю до джанги дорасту через месяц.
Вот на этом я остановился >>884752
92 1885032
>>884564
Смотри историю коммитов на гитхабе. Но обычно если проект уровня hello world, забивают на нормальные коммиты
93 1885141
>>885031
напиши мне в телегу @chvmq
94 1885198
>>884887
https://ideone.com/Kcxv9F
вот такой код делает по красоте.
95 1885288
>>884955
лвл джун это, к сожалению, реализация слабого бэка магазина (товары, корзина, заказ, покупатели и менеджеры) за 3 дня
96 1885427
>>885198
Так пихай сразу в зипе в словарь, к чему этот второй заход.
97 1885435
>>885288
Где ты видел джунов которые маназины делают за 3 дня? По твоей логике, за год выодит до 100 магазинов. Я мастеров-старперов с таким кол-вом не видел
98 1885440
Как можно получить координаты окружности нужного диаметра с определённым шагом?
Screenshot from 2020-12-20 15-18-57.png18 Кб, 399x240
99 1885442
>>885427
>>885198
Как я понял задачу, должны быть только уникальные значения. То есть owner2 не должен выводиться вообще, поскольку дважды присутствует.

Я бы так сделал: https://ideone.com/sFIHqQ

Сначала считаем, сколько раз owner в owner_id присутствует, можно руками, но корректнее используя collections, потом проходим по owner и добавляем в вывод те элементы, число вхождений которых = 1.

Может быть Counter даже может какие-то ещё для этого инструменты имеет, но я слёту не вижу.

Если данные какие-то особо большие, то можно думать об оптимизациях, в зависимости от данных.

Например, если там словарь размером в сотни тысяч, а уникальных значений единицы, то надо иной подход использовать, чтобы не перебирать весь этот огромный список.
100 1885443
>>885440
Используя синусы и косинусы, понятно же.
101 1885493
>>885442
я так-то мимовкатыш, вообще про collections не слышал.
сделал вроде https://ideone.com/Kcxv9F, щас погоняю на данных, посмотрю где отрабатывает, где не отрабатывает.

>>885427
вот оно отличие профи от вкатыша. не сообразил, что можно сделать все сразу.
102 1885503
>>885440
любая точка B (x; y), координаты которой удовлетворяют уравнению (x)2 + (y)2 = R2, принадлежит окружности радиуса R или в твоем случае (x)2 + (y)2 = (D/2)2
103 1885518
Напишите мне регулярку пожалуйста, надо вытащить только месседж.
Сам не могу, я тупой.

https://pastebin.com/icMuXr3A
104 1885523
>>885518
блядт почему-то удалилось на той хуйне, не понял
короче вот сюда кину как дурачок

<div class="message">
----- BEGIN MESSAGE -----<br />
O3eUssKKCz0Nj2p2JJLrI3dVxmcvBrUgkY0DgAdJZ3m9WB1wbDNJwQvU3xfuPZBZOrsURwtHqGGc8yy91cJoS59Mte684xYIPgtxDM4TjBWh0lhSnQ76M6I5bF353RDIYW5sz0cJsYQjaY1nFYjhVSdWn7RgOlOD8KWyBY7UNO3NCU17JbfvTih6fZcUbRo9saxTYvEC9xgCi7zR8EdRMkNS9QCbyQaQQyAFT47TselAbKi9flRSvvAvb3wzJxgqVGVFBToTXAjZbsZhDGZZ1ql3kHsT5zaR5WnxGCgu2qj3I8abF01wgcprKIaF7bm3XArt2xNUOWOmVOoqEfNLh32SB3nz4AtS0KbS8ODMBhZnVeEqjh2raV9CPn2KNmsEWtnV8QxAXnNJrh0BpSSqESSj6LTKXbeKvrvt8TTW6xvnFlPU4xbygTHcvrMjsRTN9e77XRTUef8JqNukbvIhfgkBxXKQEtuDysBl9l6dq4NHH8RIuqQzx00VNBCiUWMifeuepqiGlVdSUVreb7DzXukBWMJGzmPEq9IGqQcCCfkm0Bq2yUrmfBO1eoyDAd8QdHmuopWQu73lykdX5vabXO212qvsut9y1mSfBEWWCQ700bOWwOXjsPbl6wDrQDPHPxMg2y3ve0m520RoFEyYkz9hVCyB5e8LCLSu9LQeC2auSSInn7bxwbFiD3Jz8IaAjTVjuBoWtohb7QpkNrI9sdhW7Rl5pmvz6gIqIWd1bk390ijDARDSVLFSsROI4a70hGgPskHuuAtlJDP9ljS6UnPd4uMYuJOCfVhy5OTqfcCOGhNRqvObJtfEORt9q7BwTJVPoE5tHx7dFKVW6zXGT3axKtw1rYoax9PLDL4a92eEDZqzoe6886vIqSAIGOI4NoFg0AhZsluVaLlpPhnOeJmvsN3ZrCT4RpbHPix8tRTus5K8dYMixZDQCxFTZpOGEPekXBihj2CBXcz10c9o1C5tZBcPQQmlwqvkSEr1wUskXSbOVb2MEY6tp995Qlgc<br />
----- END MESSAGE -----<br />
</div>
105 1885524
>>885518
Не робит.
106 1885529
>>885523
Тут тоже хуйня вышла символы табов появились
Сюда залил короче
https://dumpz.org/aZ9BqaRWEWMn
извините за хуйню выше
107 1885534
>>885529
Что document.querySelector('.message').innerText возвращает? Потому как ты запостил визуальное отображдение DevTools, и в зависимости от того, есть ли там linebreaks и любые другие символы типо табов в "сыром тексте" - регекс будет разный.

Можно, конечно, сделать более униваерсальный, но тогда производительность его будет раз в 5-7 хуже.
109 1885626
>>884752
Сам разобрался. Достаточно использовать группировку.
Всем изучающим re modul рекомендую тег VERBOSE
110 1885657
>>883441 (OP)
Парни, мне приспичило добавить новый метод в объект, ноч-то я обсираюсь с реализацией

Кратко поясню что творится. Есть Присвоение вроде
self.employee_repository = CachedRepository(EmployeeRepository())

Как вы наверное поняли CachedRepository выступает как декоратор и работа с EmployeeRepository осуществляется через через небольшой набор методов этого декоратора. Мне приспичило его немного расширить, но вносить изменения напрямую в класс CachedRepository для одного моего кейса - уебанство. Я попытался сделать трюк вроде:
self.employee_repository.my_shitty_method = EmployeeRepository.my_shitty_method

Но закономерно обосрался, потому что этот метод первый принятый аргумент постоянно интерпретирует как self да и вообще я работаю с методом не того класса. Как это сделать нормально?
111 1885704
>>885657
Не понял, но КО подсказывает, что надо сделать свой класс, унаследовав его от CachedRepository, и переопределить в нём нужный метод. Причём если не хочется переписывать весь метод, то можно его в твоём классе декорировать

class MyCachedRepository(CachedRepository):
____def shitty_method(self, args):
________do_some_stuff
________ret = CachedRepository.shitty_method(self, args)
________do_more_stuff
________return ret

как идея
Cph5i3BUkAUijhn.jpg153 Кб, 915x1200
112 1885711
>>885657

>Как вы наверное поняли CachedRepository выступает как декоратор и работа с EmployeeRepository осуществляется через через небольшой набор методов этого декоратора.



Нет, не поняли.
113 1885713
>>885704
Про super мы конечно же не слышали.
16075426920340.jpg60 Кб, 828x525
114 1885789
Посоветуйте книжку по питону для неновичка, перекатывающегося с C++ или java или типа того? Чтобы за 3-4 вечера вкатиться и через неделю устроиться на новую работу.
115 1885791
>>885789

>Чтобы за 3-4 вечера вкатиться и через неделю устроиться на новую работу


Хорошо пошутил.
116 1885805
>>885791

>>Чтобы за 3-4 вечера вкатиться и через неделю устроиться на новую работу


>Хорошо пошутил.



Человек имеет 20-летний опыт программирования.
117 1885817
>>885805

>Человек имеет 20-летний опыт программирования.


Это не имеет значения. Питон сильно отличается от крестов или джавы, поэтому перекатится за пару дней не получится.
118 1885825
>>885817

>Питон сильно отличается от крестов или джавы


Ой ну кому ты лечишь? Бейсик без номеров строк это
119 1885826
>>885817
Чем?
120 1885836
>>885817
В принципе можно устроиться на работу на язык X, не имея никакого опыта работы на языке X. Особенно для таких языков, как питон, на C++/Java сложнее.

Но для этого надо иметь какую-то особую компетентность, нужную в проекте. Просто опыт программирования вообще ни о чём, слишком разные направления есть, ты можешь быть очень крутым в одном, но совершенно не знать другую область и у тебя просто мозги к другой области не подготовлены.
121 1885838
>>885826
Всем. Ну в смысле очень многим.

Вообще, если когда ты долго пишешь на языке X, а потом за неделю учишь язык Y, ты потом будет на Y писать как на X. А ничего хорошего в этом нет.

Разные языки это разные возможности и поэтому разные подходы к написанию кода и проектированию программы.
122 1885841
>>885836

>В принципе можно устроиться на работу на язык X, не имея никакого опыта работы на языке X.



Ну не совсем, исходники читал в разное время, естественно

> Особенно для таких языков, как питон, на C++/Java сложнее.


>


>Но для этого надо иметь какую-то особую компетентность, нужную в проекте.



Всё так и есть
123 1885842
>>885838

>Всем. Ну в смысле очень многим.


>


>Вообще, если когда ты долго пишешь на языке X, а потом за неделю учишь язык Y, ты потом будет на Y писать как на X. А ничего хорошего в этом нет.


>


>Разные языки это разные возможности и поэтому разные подходы к написанию кода и проектированию программы.



Так я именно такую книгу и прошу, в которой будет объясняться не как hello world написать, а в чём нюансы устройства языка.
124 1885896
>>885826

>Чем?


Динамической типизацией. Сама по себе она не сложная, но если ты до этого много лет писал на джаве, то будет очень сложно отвыкнуть.
125 1885979
>>885896
А зачем отвыкать?

И, вроде, в пистон зачатки статической типизации завозили?
126 1886021
>>885979
Оно же просто декларативное для читаемости. Даже если ты объявишь типы питон не будет ругаться если ты положишь туда что нибудь другое.
127 1886098
На всякий случай дублирую в питонтред.

Есть алгоритм на C++, там много файлов и h, и cpp, но графику гораздо удобнее прописать на python.
Как можно вызвать функцию в которую вложено дохуя других функций из питона?
Учить CLI нет ни времени, ни желания надо сдать проект в уни. Про C API знаю, но можно ли там, допустим, написать функцию, которая принимает аргументы из питона, форматирует их и вызывает нормальные cpp функции?
128 1886102
>>886021
Есть специальные инструменты для контроля. Причём даже в рантайме можно контролировать.

Но это, конечно, не статическая типизация.

Статическая типизация там, где код компилируемый, и переменная отображается на машинный или байт код, и один тип просто физически не может быть заменён другим без специальных телодвижений.

В питоне же всё объект, а переменная это всего id этого объекта. Причём в случае иммутабельных типов вроде int при изменении значения переменной каждый раз меняется ссылка, потому что мы меняем сам объект, а не значение переменной в объекте.

С такой архитектурой добавить статическую типизацию без радикальной переделки платформы невозможно. То есть получается, что помимо id объекта переменная должна ещё хранить как-то его тип и сверять этот тип при каждом изменении значения. Это сложно, криво и накладно.

Любая фича имеет свои большие плюсы и минусы. Динамическая типизация в том числе. В той сфере, в которой используется питон, динамическая типизация скорее в плюс. Многие вещи на C++/Java просто рехнёшься писать, или же они там будут криво и неудобно сделаны.
129 1886107
>>885842
Как вариант, в шапке есть книга intermediate-python.pdf (и epub возможно). Как раз про разные нюансы и фичи языка.

Хотя и этого недостаточно.

Во-первых полезно поднимать какие-то кишки.

Во-вторых просто нюансов недостаточно, потому что мало знать про инструмент, надо ещё уметь им правильно пользоваться. А это только с опытом приходит.

Потому что вот когда пишешь на одном языке, ты просто привыкаешь решать какие-то задачи одним способом, и даже уже не задумываешься. А тут тебе надо их решать совсем иначе. То есть ты можешь делать, как привык, но это криво будет.
130 1886284
Пистоны памаХите
Есть лист со словарями нада бы сдвинуть все значения в ключе ассет на пустые значения снизу ну мол если одно занчение пусто то один раз, если два - то два раза т.е. на кол-во пустых ключей последних
Screenshot20201221155039.png178 Кб, 1577x990
131 1886286
>>886284
отклеилось
132 1886347
>>886284
>>886286
Нихуя непонятно.
Screenshot171231.png146 Кб, 1335x990
133 1886355
>>886347
Та изи же
Вот есть принт первый там дву пустых внизу - это мой кейс
Нужно сдвинуть значения ключей вниз как на принте 2
Только на принте 2 я просто заменил первые 2 на последние а первые потёр но мне нужно именно сдвигать дальше оставляя вначале пустые
134 1886357
>>886355
У тебя: 1122__ -> __2211
Ты уверен, что должно быть так, а не:
1122__ -> __1122
?
135 1886369
136 1886420
>>886098
Так тебе что надо из питона с++ вызывать, или из с++ вызывать питон?
137 1886444
>>886369
Спс, так
В убывающем бы еще порядке
Оно чета key=reversed не ест
138 1886460
>>886444
оберни всё в reversed
139 1886466
>>886444
sorted(..., reverse=True)
140 1886486
Учу джаву. Недавно посмотрел видос про http и там клиент-сервер был на питоне. Очень удивился, что у вас можно возвращать несколько значений из одной функции и это применяется в таких основах.
Это действительно удобно?
141 1886492
>>886466
>>886460
Спс, работает как и хотел
142 1886512
>>886486
Не знаю, что ты видел, наверно, что-то вроде

def foo():
return 1, "qwerty", 2

Это не несколько значений, а одно, это кортеж(tuple), просто набор значений, коллекция. Здесь нет ничего такого, что было бы принципиально невозможно в джаве, просто в питоне это сделано так, что применять легко удобно и естественно. Да это применяют, но не сказать, что б прям очень часто
Screenshot20201221-210448~2.png56 Кб, 1122x427
143 1886525
Там использование функции для коннекшона было. Логику то такую можно замутить в джаве завернув в классы и геттеры.
Но вот именно способ прямая противоположность джаве.
С одной стороны вон как легко и лаконично. А с другой думаешь, уж если где то можно запутаться в переменных, то в таких случаях.
wojak-pre-doomer-unshaved.png112 Кб, 817x920
144 1886664
Анон, как начать зарабатывать хоть немного денег, чтобы начать платить за квартиру?

Есть ли какие-нибудь несложные задания, которые оплачиваются?
145 1886665
>>886664
Есть простое задание, сдавать туз в аренду, через пару лет будешь человеком. Базарю.
146 1886666
>>886665

>базарю



Хорошо, что ты прошел этот путь.
Но мне что-то ближе к кодингу.
147 1886667
>>886666
Но ты просто подумай, вокруг кодинга - щас хайп, каждый дебик стремится. Задумайся какая конкуренция, в би уже писали что это приводит к снижению зп. И задумайся, сколько анонов хотят того же, и вот, чем ты лучше дургих и почему именно ты?
148 1886670
>>886667
Я просто спросил есть ли работа.
Зачем ты сразу накинулся
149 1886671
>>886670

> есть работа?


да есть. Причем всегда востребованая. И кстати, да, в перервых ты можешь таки кодить в свое удовольствие. Как хобби.
image.png571 Кб, 554x1080
150 1886679
>>886107
Спасибо ббро!
Screenshot 2020-12-22 at 18.33.58.png172 Кб, 1386x1026
151 1887205
Как работает команда введенная в терминале
python3 manage.py runserver

python3 manage.py -- Тут все ясно, стартануть файл .py в python3

А вот к чему относится команда runserver я не понимаю?
В man python3 нет ключа runserver.

Как это работает?
152 1887236
>>887205
Это аргументы скрипта. На твоем скрине они сидяят в sys.argv.
153 1887256
>>887236
Благодарствую. Поковырялся там.
154 1887478
Пожалуйста научите пользоваться asyncio как PRO.
Где взять инфу?

Конкретная задача:
Каждые 30 секунд запускать 100 одинаковых асинк методов которые отличаются только разными аргументами. Аргументы инициализируются один раз при запуске кода и записываются допустим в лист.
155 1887482
>>887478
Ну спам же какой-то, уебывай.
156 1887493
>>887482
mcstatus + aiogram
157 1887559
Пацаны, а можно как-то узнать, если метод вызвали из функции? Т.е., я перегружаю __add__, но хочу чтобы если его вызывали присваиванием, то возвращался новый инстанс класса, а если вызывали, например, через print(A(anus)+B(пися)) возвращалось что-то другое, гуглить не умею там все на ангельском...
158 1887617
Есть челы у кого свои кланы в кодворзе, возьмете меня к себе?
159 1887635
>>887617
Какой ранг?
160 1887638
>>887635
5ку. Но я стараюсь прогрессировать.
161 1887829
>>887478
и че так и не ответит никто?
>>887482
Один чел отреагировал и тут же слился
162 1888046
Есть Лист в котором лежит один OrderedDict
Как достать этот словарь и записать в переменную чтобы избавится от List-a поверх него в одну строку, ну чтобы переменная была просто словарём а не словарём внутри листа
ну я могу циклом ФО но как-то тупо выглядит
image.png18 Кб, 1113x90
163 1888079
Вот такую ошибку выдает, если форма в джанго не валидна, но как понять что именно не валидно? Как понять где ошибка?
image.png20 Кб, 1083x60
164 1888116
>>888079
Нашла сама, кому интересно вот ответ
изображение.png39 Кб, 351x292
165 1888156
>>888116

>Нашла


Иди суп учись варить. Программирование не женское дело.
166 1888157
>>888156
я трап, иди в шахту, еблан
167 1888161
>>888157
Что же ты здесь делаешь богомерзкое создание? Зачем явилось в наш мир из глубин ада?
168 1888172
169 1888178
Как по быстрому вкатиться к вам зная плюсы? Питон в первую очередь нужен для мл и автоматизации рутинных задач.
IMG-20201212-WA0007.jpg116 Кб, 1280x1268
170 1888269
Привет аноняши, хочу вкатиться в программирование и начать зарабатывать деньги. Как быстрее всего это сделать? Английский не знаю, компьютер - МакБук 15
171 1888318
Есть чо почитать про декораторы и, главное, посмотреть в каких случаях они мастхев? Прикольная штука.
172 1888359
>>888269
научиться гуглить для начала. неожиданно, да?
173 1888377
>>888269
может оно тебе не надо?
174 1888507
>>888359
двачую. без умения искать информацию сложно будет, особенно в погром-ироваии
IMG20201223203519607.jpg6 Кб, 451x238
175 1888592
Аноны, поясните плиз как сделать подобную форму.

Что функция брала как аргумент сет (лист/тупл) и рекурсивно повторяла себя несколько раз, ветвясь, каждый раз дополняя сет новым (но различным для разных ветвей) значением?

Для этого обязательно использовать копию или можно как-то иначе?
176 1888620
Коллеги, есть модель A и модель B для изображений для модели A. В модель A загружаю зип архив и через save распаковываю архив и сохраняю через bulk_create() все файлы в модель B в цикле через A.objects.bulk_create([
B(img="media/{}/{}/{}".format(title, number, i), chapter=A)
]), но выходит ошибка Cannot assign "<django.db.models.query_utils.DeferredAttribute object at 0x000001911DF299C8>": "B.chapter" must be a "A" instance.

chapter это форин на модель A

Решил через функция типа. for i in zip: a.obj.create(img="name", chapter=Chapter.obj.last())

но мне кажется это очень плохая практика.
177 1888645
>>883657
Какие кресты, маня, если ты даже это понять не смог?
Уже вижу как тебя в спп треде опускают

>>884175
Шапка же
178 1888655
>>883657
А почему итератор должен работать с числом?

Ты можешь математически итерировать число? Нет? Ну и соси хуй, быдло.

Питон - один из самых близких к матлогике языков. Твоё возмущение непонятно. Это вполне логично что число нельзя итерировать.
179 1888918
>>883657

>>КОКОКО У НАС ЯЗЫК БЕЗ ЧЕТКОЙ ТИПИЗАЦИИИ ВСЕ РАБОТАЕТ И ТАК ЗАЕБИСЬ


>>ПУК СЕРЕНЬК ЦИКЛ ФОР НЕ РАБОТАЕТ С ДАННЫМИ ТИПА ИНТЕДЖЕР)))))


>Пиздец параша, нахуй я только время потратил на эту недопарашу? Лучше попробовал доучить кресты.



Вкатывайся к нам, у нас всё ок с этим только вакансий нет
https://2ch.hk/pr/res/1831629.html (М)
180 1888969
Коллеги нужна помощь анона мудрого.

У меня слаг в модели может быть неуникальным. То есть его уникальность идет только по форину в модель которую он привязан.

при попытке перейти по слагу я получаю ошибку, что получено 2 слага. как мне достать именно тот слаг, который мне нужен?
181 1889126
Господа data sience что вы делаете на работе?
Обрабатываете таблички бабы сраки из бухгалтерии и на основании их делать ml модель, презентацию, power bi графику?
182 1889185
Colleagues, good afternoon! There is a model book and a model chapter. Each book has many chapters. Each chapter is tied to a specific book, and if the slug of the chapter is made unique, then when book1 - chapter1, I cannot create book2 - chapter 2, an error is generated. If you make the slug non-unique, then an error is issued that one argument was expected, but 2 was passed.

How can I solve this problem? I want the slug to be a number and django understands that along the path / book1 / 1 / you need to take a slug with number 1, which is tied to book1 specifically, and not to pay attention to the slug with number 1, but tied to book2.

if the slug is unique, then I calmly end up in the right book and the right chapter, but everything collapses when I need to get there as intended.

The path is built like this: / book1 / 1 (chapter) / etc. book2 / 1 / etc

class Book(models.Model):
some code

class Chapter(models.Model):
book= models.ForeignKey(Book, verbose_name="title", on_delete=models.CASCADE)
number = models.PositiveIntegerField(verbose_name="num chapter")
slug = models.SlugField(unique=True, verbose_name="slug_to", null=True, blank=True)

def save(self, args, kwargs):
self.slug = self.number
super().save(
args, kwargs)

Views.py

class Base(View):
def get(self, request, args, kwargs):
book = Book.objects.all()
return render(request, "base.html", context={"book": book})

class BookDetail(DetailView):
model = Book
context_object_name = "book"
template_name = "book_detail.html"
slug_url_kwarg = "slug"

def get_context_data(self,
kwargs):
context = super().get_context_data(kwargs)
context["chapter"] = Chapter.objects.filter(title=self.object)
return context

class ChapterRead(DetailView):
model = Chapter
context_object_name = "chapter"
template_name = "chapter_read.html"
slug_url_kwarg = "int"

def get_context_data(self,
kwargs):
context = super().get_context_data(
kwargs)
context["imgs"] = ImgChapter.objects.filter(chapter=self.object)
return context

urls.py

from django.contrib import admin
from django.urls import path
from .views import


urlpatterns = [
path("", Base.as_view(),name="book_list"),
path("<str:slug>/", BookDetail.as_view(), name="book_detail"),
path("<str:slug>/<str:int>/", ChapterRead.as_view(), name="chapter_detail")
]

html

base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>tf</title>
</head>
<body>

{% for i in book%}
<a href="{{ i.slug }}"> {{i.name}}</a>
{% endfor %}

</body>
</html>

book_detail.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ book.name }}
{% for i in chapter %}
<a href="{{ i.slug }}">{{ i.number }}</a>
{% endfor %}
</body>
</html>

chapter_read.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>

{{ chapter.number }}

{% for i in imgs %}

<img src="{{ i.img.url }}">

{% endfor %}

</body>
</html>
182 1889185
Colleagues, good afternoon! There is a model book and a model chapter. Each book has many chapters. Each chapter is tied to a specific book, and if the slug of the chapter is made unique, then when book1 - chapter1, I cannot create book2 - chapter 2, an error is generated. If you make the slug non-unique, then an error is issued that one argument was expected, but 2 was passed.

How can I solve this problem? I want the slug to be a number and django understands that along the path / book1 / 1 / you need to take a slug with number 1, which is tied to book1 specifically, and not to pay attention to the slug with number 1, but tied to book2.

if the slug is unique, then I calmly end up in the right book and the right chapter, but everything collapses when I need to get there as intended.

The path is built like this: / book1 / 1 (chapter) / etc. book2 / 1 / etc

class Book(models.Model):
some code

class Chapter(models.Model):
book= models.ForeignKey(Book, verbose_name="title", on_delete=models.CASCADE)
number = models.PositiveIntegerField(verbose_name="num chapter")
slug = models.SlugField(unique=True, verbose_name="slug_to", null=True, blank=True)

def save(self, args, kwargs):
self.slug = self.number
super().save(
args, kwargs)

Views.py

class Base(View):
def get(self, request, args, kwargs):
book = Book.objects.all()
return render(request, "base.html", context={"book": book})

class BookDetail(DetailView):
model = Book
context_object_name = "book"
template_name = "book_detail.html"
slug_url_kwarg = "slug"

def get_context_data(self,
kwargs):
context = super().get_context_data(kwargs)
context["chapter"] = Chapter.objects.filter(title=self.object)
return context

class ChapterRead(DetailView):
model = Chapter
context_object_name = "chapter"
template_name = "chapter_read.html"
slug_url_kwarg = "int"

def get_context_data(self,
kwargs):
context = super().get_context_data(
kwargs)
context["imgs"] = ImgChapter.objects.filter(chapter=self.object)
return context

urls.py

from django.contrib import admin
from django.urls import path
from .views import


urlpatterns = [
path("", Base.as_view(),name="book_list"),
path("<str:slug>/", BookDetail.as_view(), name="book_detail"),
path("<str:slug>/<str:int>/", ChapterRead.as_view(), name="chapter_detail")
]

html

base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>tf</title>
</head>
<body>

{% for i in book%}
<a href="{{ i.slug }}"> {{i.name}}</a>
{% endfor %}

</body>
</html>

book_detail.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ book.name }}
{% for i in chapter %}
<a href="{{ i.slug }}">{{ i.number }}</a>
{% endfor %}
</body>
</html>

chapter_read.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>

{{ chapter.number }}

{% for i in imgs %}

<img src="{{ i.img.url }}">

{% endfor %}

</body>
</html>
183 1889335
>>888046
Бро, если найдешь как, скинь. Чота аж интересно стало.
184 1889379
>>888269

>Как быстрее всего это сделать?


Конечно же, записать на курсы онлайн-программирования Skillbox! Это чудестные прикрастные курсы, где лудшие учетиля тибя научат прогромеровать и уже черз читыре дня ты получиш сиртефекат об акончании и можеш сразу же устроица на работу с зар платой 300к/наносек!
185 1889382
>>888318

>Есть чо почитать про декораторы и, главное, посмотреть в каких случаях они мастхев?


Да.
186 1889386
>>886021

>питон не будет ругаться если ты положишь туда что нибудь другое


ИДЕЯ ругается, но только ворнингами, конечно.
Но вообще это довольно раковая хуйня. Особенно когда-то какой-нибудь восторженный еблан, радуясь охуенности питона, пишет метод, который возвращает кортеж из инта, строки, даты, говна, мочи, еще одной строки, неба и Аллаха, а ты потом разгребаешь это дерьмо в дебаге.
187 1889392
>>888046
piston = [{}]
sila, = piston
188 1889400
>>888046
А индексацией не достать?
dct = lst[0]
189 1889405
>>889400
так не интересно
190 1889479
Двачик, помоги с pandas

Датафрейм я считал, но как сделать итератор из этой штуковины, чтобы получить строку я нигде не нашел

И вся суть задания в следующем:
У меня есть таблица в эксель.
В ней 2 листа

Первый лист: params. В нём есть 3 группы столбцов. Каждая группа содержит 2 столбца: имя_параметра и значение_которое_надо_подставить

Второй лист: objects. В нём есть следующие столбцы: имя группы, __неинтересные столбцы, имя_параметра, __неинтересные столбцы, значение_параметра.

Цель - проставить все параметры из первого листа во второй. Как это можно сделать?
191 1889486
>>889386
Он программист он так видит. Кто ты такой чтобы критиковать его искусство.
192 1889491
>>889479
Не пробовал .loc/.iloc?
193 1889492
>>885817
Представлю как чел с плюсов, будет в хуилион строчек пытаться добиться оптимизации, в то время как дзен питона говорит "простое лучше чем сложное, явное лучше чем не явное ".
По PEP8 тоже нужно выдрачиваться, не смотря на автокоррекцию IDE.
194 1889494
Дорогие дата инженеры
Что читать и учить чтобы вкатиться в эту сферу?
195 1889517
>>889479
df1 = pd.read_excel('ЙОБА EXCEL', sheet_name=params)
df2 = pd.read_excel('ЙОБА EXCEL', sheet_name=objects)

возможно df1.stack() для свертывания в длинную

df1.merge(df2, on=[имя_параметра],how='outer')

how='outer' - тут ставишь методы которые тебе нужны (inner,left,right)
196 1889518
>>889491
Нет, попробую. Не думал, что мне так быстро помогут.
Спасибо!
197 1889519
Анчоусы, помогите с моком разобраться.

Есть объект collect
Есть метод fill
Когда вызываю collect.fill()
То внутри происходит замена полей и разная херня. Этот объект не присваивается никому, только сам себя обновляет. Как замокать его, чтоб он подменялся на этом методе на нужные мне данные?
198 1889551
>>889486
Я, как минимум, не ебаный джун.
199 1889580
>>883948
всё чел ты заплесневел, в 3.10 запилят паттерн матчтинг как в расте
https://www.python.org/dev/peps/pep-0622/
200 1889589
Двач, я тупой и знаю об этом, но я не понимаю!

beaufort = 6 # сильный ветер
is_raining = False # дождя нет
temperature = 16

if (not is_raining or beaufort <= 4) and temperature > 20:
print('Идём гулять, на улице хорошо')

else:
print('Сидим дома, читаем Практикум')

Я не понимаю, как правильно "прочитать" отрицание.
Если is_raining не равно False (т.е. равно True) (т.е. идет дождь)...
То Идем гулять...

Это же не логично!
201 1889590
>>885657

>>Но закономерно обосрался, потому что этот метод первый принятый аргумент постоянно интерпретирует как self да и вообще я работаю с методом не того класса. Как это сделать нормально?


в статик метод заверни, я про декоратор @staticmethod , при таком декораторе первый аргрумент больше не self, но и self в теле фунции больше использовать нельзя
202 1889604
>>889589
is_raining переименовываешь в not_raining и приравниваешь это к True, потом
if (not_raining or beaufort <= 4) and temperature > 20:
print('Идём гулять, на улице хорошо')
203 1889608
>>889604
Так да, это логично и понятно.
Я не могу понять почему написано именно так, как в том примере, который я скинул. Так и нужно?

И, опять же, я правильно читаю if not is_raining:
Если is_raining не равно False (т.е. равно True) (т.е. идет дождь)
?
204 1889641
>>889589
Если is_raining будет false, то есть дождя нет, то часть логического выражения в скобках будет true. И как будто бы можно идти гулять, если температура норм
205 1889645
>>889641
Т.е, для совсем тупых:
В итоге мы имеем, что дождь как бы идет, но если температура норм - мы можем идти гулять?
206 1889674
>>889645
(not is_raining or beaufort <= 4) and temperature > 20

(нет дождя или слабый ветер) и не холодно тогда идем гулять

т.е. в принципе мы согласны и в дождь гулять если ветер слабый, главное чтобы не холодно

равно как мы согласны и в ветер гулять если нет дождя, опять же лишь бы не холоднл

я лично когда в джаваскрипте не понимаю таких вывертов логики открываю консоль браузера и тестирую лол
207 1889689
>>889379
Купил подписку, начал заниматься. Спасибо за совет, цмок
208 1889737
>>889551
Будь осторожен. Ты можешь кого нибудь обидеть такими высказываниями.
209 1889822
>>889689
Умничка, так держать! У тебя все получится!
210 1889861
>>889674
Так в самом условии стоит it_raining = False.
А в теле уже not is_raining (соответственно, not is_raining == True, т.е. дождь идет. Опять же, следуя логике, если отсутствие дождя it_raining = False)

Пишу не с целью доебать, просто пытаюсь понять, что я делаю не так.
После того как в начал тупить в редакторе - исписал весь лист а4.

И самое странное, что это же, блять, элементарно. Циклы, алгоритмы, рекурсия были намного проще. А тут какой-то пиздец.
211 1889880
>>889589
Основное правило составления условий: для if ты пишешь положительное утверждение, для elif'ов - все остальное. Никаких ! или not в первой строке не писать, если это возможно. Поэтому:

if (is_raining or beaufort > 4) and temperature <= 20:
--print('Сидим дома, читаем Практикум')

else:
--print('Идём гулять, на улице хорошо')


Поэтому теперь ты можешь спокойно менять булку is_raining с False на True и следовать логике условия.

Этого >>889589 ни в коем случае не слушать, никаких переменных или методов с not в имени быть не должно, чтобы в коде никогда не было каловой массы вида if not is_not_registered()
212 1889893
>>889880
Спасибо!

Это пример с Я.Практикума, собственно. Буду знать, еще раз спасибо.
213 1889895
>>889880

> Основное правило составления условий



Алсо, если ты еще здесь, а где про такие тонкости можно прочитать?

Это Лутц, Кнут и т.д.?
214 1889905
>>889893
Ну, это плохой пример. Ревью у вменяемого разраба он бы не прошел. Главное правило кода - писать так, чтобы его можно было легко читать. Потому в разработке 90% потраченного времени - это чтение того, что уже есть. Когда ты тратишь дохуя времени, чтобы вникнуть, что за хуйня написана в условии, то должна прийти разумная мысль переписать это говно.
>>889895
Такие тонкости переходят, что называется, из уст в уста в рабочей среде. Синьоры всегда подпнут джуна на ревью, говнокод не пройдет, что называется. Опять же, в разных коллективах разные нюансы по код-стайлу. Я помню, как в моей рабочей флудилке срались даже по поводу того, надо ли обосабливать ретурны пустой строкой. Спойлер: надо.
215 1889910
Colleagues, good afternoon! There is a model book and a model chapter. Each book has many chapters. Each chapter is tied to a specific book, and if the slug of the chapter is made unique, then when book1 - chapter1, I cannot create book2 - chapter 2, an error is generated. If you make the slug non-unique, then an error is issued that one argument was expected, but 2 was passed.

How can I solve this problem? I want the slug to be a number and django understands that along the path / book1 / 1 / you need to take a slug with number 1, which is tied to book1 specifically, and not to pay attention to the slug with number 1, but tied to book2.

if the slug is unique, then I calmly end up in the right book and the right chapter, but everything collapses when I need to get there as intended.

The path is built like this: / book1 / 1 (chapter) / etc. book2 / 1 / etc

class Book(models.Model):
some code

class Chapter(models.Model):
book= models.ForeignKey(Book, verbose_name="title", on_delete=models.CASCADE)
number = models.PositiveIntegerField(verbose_name="num chapter")
slug = models.SlugField(unique=True, verbose_name="slug_to", null=True, blank=True)

def save(self, args, kwargs):
self.slug = self.number
super().save(args, kwargs)

Views.py

class Base(View):
def get(self, request, args, kwargs):
book = Book.objects.all()
return render(request, "base.html", context={"book": book})

class BookDetail(DetailView):
model = Book
context_object_name = "book"
template_name = "book_detail.html"
slug_url_kwarg = "slug"

def get_context_data(self, kwargs):
context = super().get_context_data(kwargs)
context["chapter"] = Chapter.objects.filter(title=self.object)
return context

class ChapterRead(DetailView):
model = Chapter
context_object_name = "chapter"
template_name = "chapter_read.html"
slug_url_kwarg = "int"

def get_context_data(self, kwargs):
context = super().get_context_data(kwargs)
context["imgs"] = ImgChapter.objects.filter(chapter=self.object)
return context

urls.py

from django.contrib import admin
from django.urls import path
from .views import

urlpatterns = [
path("", Base.as_view(),name="book_list"),
path("<str:slug>/", BookDetail.as_view(), name="book_detail"),
path("<str:slug>/<str:int>/", ChapterRead.as_view(), name="chapter_detail")
]

html

base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>tf</title>
</head>
<body>

{% for i in book%}
<a href="{{ i.slug }}"> {{i.name}}</a>
{% endfor %}

</body>
</html>

book_detail.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ book.name }}
{% for i in chapter %}
<a href="{{ i.slug }}">{{ i.number }}</a>
{% endfor %}
</body>
</html>

chapter_read.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>

{{ chapter.number }}

{% for i in imgs %}

<img src="{{ i.img.url }}">

{% endfor %}

</body>
</html>
215 1889910
Colleagues, good afternoon! There is a model book and a model chapter. Each book has many chapters. Each chapter is tied to a specific book, and if the slug of the chapter is made unique, then when book1 - chapter1, I cannot create book2 - chapter 2, an error is generated. If you make the slug non-unique, then an error is issued that one argument was expected, but 2 was passed.

How can I solve this problem? I want the slug to be a number and django understands that along the path / book1 / 1 / you need to take a slug with number 1, which is tied to book1 specifically, and not to pay attention to the slug with number 1, but tied to book2.

if the slug is unique, then I calmly end up in the right book and the right chapter, but everything collapses when I need to get there as intended.

The path is built like this: / book1 / 1 (chapter) / etc. book2 / 1 / etc

class Book(models.Model):
some code

class Chapter(models.Model):
book= models.ForeignKey(Book, verbose_name="title", on_delete=models.CASCADE)
number = models.PositiveIntegerField(verbose_name="num chapter")
slug = models.SlugField(unique=True, verbose_name="slug_to", null=True, blank=True)

def save(self, args, kwargs):
self.slug = self.number
super().save(args, kwargs)

Views.py

class Base(View):
def get(self, request, args, kwargs):
book = Book.objects.all()
return render(request, "base.html", context={"book": book})

class BookDetail(DetailView):
model = Book
context_object_name = "book"
template_name = "book_detail.html"
slug_url_kwarg = "slug"

def get_context_data(self, kwargs):
context = super().get_context_data(kwargs)
context["chapter"] = Chapter.objects.filter(title=self.object)
return context

class ChapterRead(DetailView):
model = Chapter
context_object_name = "chapter"
template_name = "chapter_read.html"
slug_url_kwarg = "int"

def get_context_data(self, kwargs):
context = super().get_context_data(kwargs)
context["imgs"] = ImgChapter.objects.filter(chapter=self.object)
return context

urls.py

from django.contrib import admin
from django.urls import path
from .views import

urlpatterns = [
path("", Base.as_view(),name="book_list"),
path("<str:slug>/", BookDetail.as_view(), name="book_detail"),
path("<str:slug>/<str:int>/", ChapterRead.as_view(), name="chapter_detail")
]

html

base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>tf</title>
</head>
<body>

{% for i in book%}
<a href="{{ i.slug }}"> {{i.name}}</a>
{% endfor %}

</body>
</html>

book_detail.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ book.name }}
{% for i in chapter %}
<a href="{{ i.slug }}">{{ i.number }}</a>
{% endfor %}
</body>
</html>

chapter_read.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>

{{ chapter.number }}

{% for i in imgs %}

<img src="{{ i.img.url }}">

{% endfor %}

</body>
</html>
216 1889911
>>889910
Нахер ты это спустя 30 постов репостишь? Просто бампани свой пост.
И нахер ты пишешь на ингрише?
217 1889912
>>889905
Спасибо, мил человек. Добра тебе.
218 1889913
>>889911
не можешь в ангельский? помог бы уже давно мне, а не высирал это
219 1889916
>>889913

>pr


>не можешь в ангельский?


Да, конечно. От качества твоего "англесского" смеемся всем Гарвардом.

>а не высирал это


Высираешься тут только ты своей стеной говнокода без отступов. В шапке куча ссылок на шаринг кода, не хочу постить ссылку, хочу, чтоб скроллить полчаса надо было. Хотя что еще ожидать от мелкобуквы?
220 1889917
>>889916
https://ru.stackoverflow.com/questions/1223352/Как-во-view-взять-нужный-slug-модели
вот тебе с отступами псина ебаная. Чтобы через 5 минут был ответи дан. Я с утра решения не нашел.

Мой ангельский понимают, мне похую, что он как у хача. Смысл же ясен.

Сттавлю сотку, что ты залетная чмоня не знающая разницы между списком и словарем
221 1889922
>>889917
Говна поешь, быдло. Разговаривать научись для начала.
222 1889924
>>889922
пук. срень.

ты обосрался, братец анончик

слишком тяжелая задача для тебя
223 1889926
>>889924
Как скажешь, мелкобуковка. Сиди и дальше, как лох, без ответа, мне-то что.
224 1889928
>>889926
топай в свой мирок розовых пони бичара
123.JPG110 Кб, 748x815
225 1890042
Привет!
До внесённых изменений этот код нормально работал.
Я только импортировал подчёркнутый модуль и задал значение атрибутов в методе-конструкторе, который до этого, были = 0
Задание было таким: при создании каждый объекта класса должен получать случайный значения атрибутов. Я подчеркнул их красным.
Ошибок программа не выдаёт, но метод mood возвращает теперь только значение переменной m = "ужасно".
Подскажите, почему так?
226 1890049
>>890042
хз что я сделал, но код начал работать нормально.
227 1890050
>>890042
>>890049
в этом коде вроде random будет вызван один раз и аргументы по умолчанию будут всегда одинаковы
228 1890052
>>890050
Для всех объектов класса?
Разве метод-конструктор не перезапускается при создании каждого нового объекта?
229 1890054
>>890052
да. для всех.
конструктор перезапустится, но значения аргументов hunger и boredom вычисляются единожды при загрузке модуля
230 1890056
>>890054
вычисляются единожды, когда они записаны в таком виде как здесь
123.JPG14 Кб, 430x144
231 1890080
>>890056
>>890054
Спасибо за ответы.
Я импортировал модуль random внутри __init__ и там же присвоил случайные значение нужным атрибутам. Теперь, при создании, каждый объект класса получает разные атрибуты.
Потом подумаю как написать красивее, пока вот так.
Но я выявил новую проблему:
Методы eat и play не меняют значение этих атрибутов.
На что обратить внимание?
232 1890084
>>890080
Нашел в чём была проблема. Глупая ошибка.
233 1890294
Кто-нибудь сталкивался с таким видом даты: image_date = "2011-12-04T21:33:40.000Z"? Можно ли как-нибудь распарсить ее через datetime или все-таки как str парсить?
234 1890303
>>890294

>Кто-нибудь сталкивался с таким видом даты: image_date = "2011-12-04T21:33:40.000Z"?


Да.

>Можно ли как-нибудь распарсить ее через datetime


Через dateutil.parser.parse()
235 1890316
>>890303
То, что надо. Спасибо.
Clipboard01.jpg354 Кб, 1449x697
236 1890346
Господа, как получить количество лайков и комментов (на КПДВ подчеркнуто красным), используя Selenium? Цифры появляются только при наведении курсора на элемент.
image.png381 Кб, 700x700
237 1890347
>>890346
Воспользоваться АПИ сайта.
238 1890354
>>890347
Пользовался сам? Для меня оно показалось каким-то замудренным. Надо через Фейсбук создавать какое-то приложение, давать разрешения, получать временные токены.
239 1890358
>>890346

>получить количество лайков и комментов, используя Selenium


Это как забивать гвоздь кувалдой, когда есть молоток.
Используй requests, юный падаван.
240 1890359
>>890358

>используй requests


>Цифры появляются только при наведении курсора на элемент.


чел ты?
241 1890363
>>890359
Ты уверен? Пытался инспектировать элемент? Если там не йоба сложный js-скрипт, они просто прячутся в данных элемента.
242 1890365
>>890358
>>890359
Посоны, погодите, кажется нашел какую-то библиотеку для подобных целей instaloader
pycharm64jXGlbJ4woX.png72 Кб, 1920x1040
243 1890423
хочу сделать последовательность фибоначчи, что идет не так?
244 1890432
>>890423
Обожаю, когда человеку прямым текстом что-то говорят, например "недопустимый символ 'а' в строке '1254а', преобразование в число невозможно", а он спрашивает: "Чего это от меня шайтан машина хочет?"
245 1890451
>>890432
как я понимаю, когда i=1, то он хочет сложить 1 и 2 индексы, но не находит число на втором индексе, но он же должен был добавить число, когда i был равен нулю.
246 1890455
>>890432
>>890451
но как пофиксить тогда? или я вообще не смогу так сделать
247 1890460
Сап, тред. Помогите с такой темкой.

Достаточно давно изучаю и пишу всякую хрень на питоне и, по моим ощущениям, знаю его синтаксис и функциональность, ну как минимум, на уровне джуна, а вот с проектированием и реальными проектами трабблы дикие.

Грубо говоря, SOLID и базис я знаю, и в принципе соблюдать умею без особых проблем, нюанс в том, что когда дело доходит до действительно модульного проекта, я просто теряюсь, не понимаю с чего начать и, зачастую дропаю, либо начинаю говнокодить с точки зрения ООП забивая на SOLID напрочь. С одной стороны, это неудивительно, а с другой, хочется чето менять.

Проблема imo в отсутствии опыта в работе над хоть сколь-нибудь серьезными вещами в команде, сам себе программируя опыта хорошего кодинга не наберешься. Пытался читать проект на хабе, и это ужас. Даже несколько десятков связанных файлов вызывают приступ нечетаемости, ибо просто невозможно разобраться в идеях создателей, в особенности если классы очень хорошо сделаны в плане абстракций, а строчки импорта доходят до 30-40 строк. Непонятно откуда и куда читать, если особенно если это распределенная асинхронная система.

Короче, как такое бороть? Где искать задания по проге не аля "Напишите программу, которая создаст два класса животных и рассчитает ежедневную необходимость в количестве корма", а более менее реальные кейсы, хоть с каким-нибудь ТЗ, и желательно, примерами кода, который должен был по итогу получится. Где искать конфы таких же рофло-челов, как и я, которые пытаются в код и работают над своим проектом? Хотел бы я в опен-сорс коммитить, но проблема выше не позволяет. Да и кому я со своей экспой нужен там

Извиняюсь за длиннопост, коллеги. Кстати, если у кого есть свои проекты подобного рода, буду заинтересован.
248 1890464
>>890451
Очевидно, первая a запоминается до генерации второго списка, после чего ты начинаешь с нею работать. Уже на второй итерации итератор спрашивает третий элемент a, но у нее их всего два.
Ты не можешь одновременно итерировать массив и тут же его менять в процессе. В твоем случае питон просто запомнил первую декларацию a, а потом начал создавать вторую a, но по окончании, если бы все закончилось успешно, просто перезаписал бы ее.

Тебе нужно создать пустой список, а потом аппендить его в цикле ренжа, причем каждый цикл список будет пополняться на два числа: первым, равным сумме двух последних имеющихся в списке, и вторым, равным сумме первого и того, что перед ним.
249 1890548
>>890464
прости, я не понимаю тебя. можешь пожалуйста написать код?
250 1890563
>>890460
Возьми какую-нибудь не сильно сложную задачу, которую нужно решить лично тебе и сделай все по правилам.
Придется 2-3 раза все переписать с нуля, но экспа появится, базарю.

Мой личный пример - делал для себя быстрый интерфейс на Tkinter для ffmpeg чтобы быстренько нарезать шебм для двача, кек.
С первая версия была лютым говнокодом, с третьей попытки получилась конфетка.
Можно даже оформить и выложить во всеобщий доступ, совсем не стыдно будет, но мне лень.
Такие дела.
251 1890574
>>890563
Спасиб за ответ, думал над этим. Проблема, собсна, в том, что отсутствуют личные задачи, которые я мог бы решать. От нечего делать пытался в написание нормального DS-бота, и тупо стакнулся, рерайтов там была хренова гора, но по итогу все в одно говно скатывалось. Собственно выше потому и спрашивал про всякие кейсы.

Энивэй, за ответ спасибо. Кстати, есть конфы / места где челы делятся своими проектами / ищут группы? Или все сами друг-друга на хабе ищут и находят? Новый во всем этом прогерском окружении, сорян за тупые вопросы.
252 1890586
>>890460

>Хотел бы я в опен-сорс коммитить, но проблема выше не позволяет.


Как раз самое то в попенсорс контрибьютить. И код твой обоссут, и тесты написать попросят. Пока не сделаешь все красиво, пр не примут. Тебе понравится.
253 1890589
>>890586
В очелло ебать не будут?
eMjDuD0vSJk.jpg118 Кб, 454x522
254 1890593
>>890586
Понял, принял, пошел искать интересные репы.
IMG-20201212-WA0007.jpg116 Кб, 1280x1268
255 1890622
Привет аноняши, хочу вкатиться в программирование и начать зарабатывать деньги. Как быстрее всего это сделать? Английский не знаю, компьютер - МакБук 15
256 1890709
Мне нужно питоновской фтп либой получить данные о файлах на сервере (рекурсивно) типа: название, размер, дата создания и модификации, путь на сервере.
Как это сделать?
257 1890724
>>890622
Учить джаву.
258 1890836
>>890548
Я хуйню спизданул, прости.
Вот метод генерации списка Фибоначчи:

def fib_list(length: int) -> list:
--lst = [0, 1]
--for i in range(length - 2):
----new_num = lst[-1] + lst[-2]
----lst.append(new_num)

--return lst
259 1890837

>Как быстрее всего это сделать?


Конечно же, записаться на курсы онлайн-программирования Skillbox! Это чудестные прикрастные курсы, где лудшие учетиля тибя научат прогромеровать и уже черз читыре дня ты получиш сиртефекат об акончании и можеш сразу же устроица на работу с зар платой 300к/наносек!
260 1890842
>>890836
для length = 1 неверное значение выдаст
261 1890844
>>890842
Да, правда, проебался.
Ну, логику ты понял, перепедалишь по-нормальному.
262 1890845
>>890724
Не слушай его, дотнет лучше и перспективнее
image.png24 Кб, 392x99
263 1890846
>>890423
Look ma, no hands!
264 1890854
>>890845
Двачую слово "лучше" и с натяжкой "перспективнее". Джава, к сожалению, слишком популярна.
265 1890855
>>890846
K P A C U B O
image.png118 Кб, 1144x684
266 1890865
Если у меня стомильёнов таких записей в юрлах, как мне их сделать красивее и презентабильнее? мб есть возможность их группировать по разным переменным?
267 1890869
>>890865
замени на graphql
268 1890871
>>890854
Чем лучше? На жабу вакансий вроде больше и денег больше
Чем перспективнее?
IMG-20201212-WA0007.jpg116 Кб, 1280x1268
269 1890872
>>890724
Уже проебал на джавараш 14к, но так ничего и не выучил. Спасибо, не надо
270 1890892
>>890869
туплю очень сильно, попробую разобраться, спасибо. Но на всякий случай еще поищу что-то локальное
271 1890904
>>890872
Пистон на хайпе среди вкатышей, но работы меньше чем на джаве.
py.png76 Кб, 1012x748
272 1890905
Ребята, помогите решить задачу
273 1890910
>>890892
я пошутил же
274 1890914
>>890910
https://medium.freecodecamp.com/so-whats-this-graphql-thing-i-keep-hearing-about-baf4d36c20cf а я на полном серьезе читаю.. так если это шутка, что делать то?
275 1890915
>>890910
Напиши нормальный рест и разбей на несколько роутеров по бизнес логике приложения.
276 1890919
>>890871
Лучше синтаксическими особенностями. У решетки есть автосвойства. У решетки есть божественный Linq. А у твоей жабы есть Linq? А? А?

>На жабу вакансий вроде больше


Я про это и написал.

>денег больше


Не зависит от языка вообще (если это не хтонический Кобол в двух с половиной компаниях на весь мир).

>Чем перспективнее?


Как минимум тем, что делает свою родную замену говноЖСа.
277 1890921
>>890915
я пока 0 в апи, на сколько я понимаю, это и есть рест?
1599647872143127415.png322 Кб, 940x788
278 1890924
>>890905
Боже, какую же несусветную чушь задают на этих ваших говнокурсах.
И ведь преподносят как "ЭТА ШТОБЫ РАЗВИВАТЬ СМИКАЛАЧКУ И НАГРУЖАТЬ МОСК ПОИСКОМ РИШЕНИЯ ЗОДАЧИ".
Но ведь можно давать задачи, которые действительно имеют отношение к будущей работе.
279 1890925
>>890919
У моей жабы? Если б я писал на жабе, тут бы не сидел и людям моск не ибал.
Бесит, что на шарп в вакансиях требуют ещё и жс
280 1890926
>>890836
я хотел это сделать в одной строчке, типа как на моем пике
281 1890929
>>890921
Погугли REST
282 1890934
>>890926
Ну, тебе уже дали ответ одной строчкой.
283 1890937
>>890622

>компьютер - МакБук 15



Не, ну это все, выкатывайся
284 1890938
>>890934
не сразу заметил
285 1890939
>>890846
спасибо спасибо спасибо
286 1890957
>>890622

>хочу вкатиться в программирование и начать зарабатывать деньги. Как быстрее всего это сделать? Английский не знаю


Тогда твой путь с низов - идешь в тестирование, растешь до автоматизации, перекатываешься в дева, если захочешь.
287 1890979
>>890957
Какой смысл начинать с QA?
288 1891006
>>884465
потому что, сука, буфферинг не может быть "\n". используй именованные параметры тогда newline="\n"
289 1891013
>>890979
Опыт работы, в QA легче возмьмут, если просто в IT шаришь и немного кодить умеешь.
Bildschirmfoto von 2020-12-25 23-19-46.png48 Кб, 690x689
290 1891030
>>890905
проще пареной репы
291 1891036
>>890905
надеюсь, ошибку в >>891030 сам найдёшь, иначе что это за обучение будет, ёпта.
292 1891039
>>890924
заебись задачки, простенькие, но со смекалочкой. иначе макакой будешь работать всю жизнь.
293 1891048
>>890979
это как в армии, начинаешь духом. кому-то надо делать хуёвую работу.
294 1891058
>>890924

>Но ведь можно давать задачи, которые действительно имеют отношение к будущей работе.


Ты и в школе, наверное, отказывался математику и физику учить, типа задачки, которые решать заставляют, не имеют отношения к будущей работе.
295 1891062
>>891030
Про то, что у тебя ошибка в suka тебе уже сказали.

suka можно переписать в одну строчку:
def suka(s, line):
____return set(line) >= set(s)

ну и естественно заинлайнить можно после этого
296 1891066
>>891062
ощибку я там по невнимательности сделал, потом исправлять не стал, чтоб номерочки строк остались. а дурилка сам бы нашёл её, при обдумывании происходящего.

кстати, у тебя охуенный финт со сравнениями множеств, моё почтение.
297 1891111

>финт со сравнениями множеств


Как это работает?
298 1891124
>>891111
Смотри документацию на множества в питоне
https://docs.python.org/3/library/stdtypes.html#set

С ними иногда можно проделывать довольно много финтов, куда более интересных и практичных.

set("word") - создаёт множество (set) из итерируемого типа, в данном случае из строки, соответственно получится множество букв-символов

для множеств переопределены логические операции, как & (пересечение), | (объединение), ^ (разница).

Для них же переопределены операции >, >=, которые показывают, что одно множество покрывает другое, то есть все элементы одного множества содержатся в другом множестве.

Для тех, кто изучал математику, вещи интуитивно понятные и магии тут особой нет. Надо только помнить факт, что такое поддержано в языке.

В целом иногда довольно полезно быстро проверить, что все элементы какого-то множества содержатся в другом множестве (в списке разрешённых значений, например). Вместо того, чтобы оформлять цикл, можно вот такой финт использовать.
299 1891155
>>891124
Спасибо, понял.
image.png85 Кб, 609x580
300 1891264
Нужно обойти более 1к урлов и посчитать время доступа к каждому (допустим, для поиска быстрейшего прокси сервера)

Подскажите, эксперты, такой код имеет смысл или нужно писать нормальный пинг с сокетами и пакетами?
301 1891272
>>891264
Под нормальным пингом ты имеешь в виду icmp? Это вообще не в тему.
В принципе, у тебя норм. Скопируй только все оригинальные заголовки из хрома + компрессию + таки лучше гет, а не хед.
302 1891289
>>891058
В школе я был тупым рабом своих родителей, у меня таких мыслей даже сформироваться не могло. А так да, физику, изо и обж с биологией бы нахуй выкинул из своего курса.
303 1891298
>>885435

>реализация слабого


Не полный функционирующий магазин, а понимание что куда и как взаимодействует хотя бы, минимум я там обозначил

>(товары, корзина, заказ, покупатели и менеджеры)

304 1891299
>>884955
@Flake_DVR
305 1891323
Хочу написать рест апи на питоне, что лучше взять: фласк, джанго рест фреймворк или фастапи?
306 1891412
>>891323
лучше взять в рот джангу, с ней дохуя манулов, и работы тоже.
307 1891467
>>891323
У тебя апи само по себе? Или к чему-то? Вот в зависимости от того к чему твоё апи и что делает и надо делать выбор.
308 1891468
>>891467
Как апи может быть само по себе?
Какая разница для апи, кто его потребитель?
309 1891472
>>891323

>Хочу написать рест апи на питоне


Какое-то бессмысленное предложение. Рест - это архитектура взаимодействия сервера и потребителя посредством их общения через рест-запросы. Рест уже существует, как ты его напишешь? Это как сказать: "Хочу сделать барокко с с помощью строительных материалов Леруа Мерлен".
310 1891474
>>891472
Ладно, мистер зануда, хочу написать программу на языке питон, обрабатывающую хттп запросы в рестфул манере. Что там в вашем снобском клубе используют для таких целей?
311 1891477
>>891474
Для начала скажи, будет ли у тебя ГУИ в виде http-страничек с кнопочками? Или это просто бэкенд-общение через консольку?
312 1891478
>>891477

>бэкенд-общение через консольку


Ты объебос какой-то, не пиши мне больше.
16079574458600.jpg77 Кб, 640x640
313 1891480
>>891478
пошли под пледиком бэкенд-общаться через консольку (:
314 1891541
>>891480
Ты вообще съеби в ужасе, мелкобуква.
315 1891626
Зачем нужны два одинаковых по результату импорта?

from . import views
from views import *
316 1891699
>>891480
я бы с ней помурлыкал
317 1891709
Ананы, а курс пайтона на datacamp норм? Нет к нему такого хейта как к курсам на htmlacademy?
318 1891716
>>891474
Единственное, что делает твоя программа, это "обрабатывает рестфул запросы"?

И зачем тебе именно рестфул?

Ты определись, на чём тебе делать функционал твоей проги. На том же сделаешь и апи.
319 1891722
>>891626
Результаты импорта не одинаковые. В пером иморте обращение к функициям и классам будет как views.zalupa() а во втором просто zalupa()
320 1891750
Что такое рест апи и как его написать?
321 1891753
>>891750
Это замшелый баззворд.
Просто вызов функций через роуты и методы хттп, и то второе не всегда.
322 1891765
>>891048
В QA задачи немного другие.
323 1891781
При вызове scipy.integrate.quad передаю limit=2, но все равно вылезает предупреждение: IntegrationWarning: The maximum number of subdivisions (2) has been achieved. То есть алгоритм пытается дальше брать субинтервалы. Как сделать так, чтобы он не пытался этого делать?
324 1891803
Есть примерно такая функция:
def f(x):
if x > 0:
return x
else:
return 0

Когда туда передается число, все норм. Когда передается numpy массив, то нет. Как разруливать такую ситуацию правильно?
325 1891805
>>891803
type(x) проверяй
326 1891815
>>891805
А дальше что?
327 1891831
>>891815
if type(x) is not int:
raise ValueError('poshel nahui')
328 1891842
>>891831
Ясно, не отвечай мне больше, пожалуйста.
329 1891846
>>891842
Это вполне серьезный ответ.
330 1891893
>>891803
>>891815
А что должно происходить по твоей задумке если в функцию передается numpy массив?
331 1891898
>>891893
np.all(x > 0)
332 1891899
>>891893
Все элементы меньше нуля заменяются нулями.
334 1891905
>>891903
Не то. А если мне надо сравнить не с нулем, а заменить нулем?
335 1891907
>>891905
np.where
336 1891909
>>891907
Вроде норм, спасибо.
337 1892193
>>889491
>>889517
Спасибо анончики, я сделал это!
В том числе и благодаря вашим подсказкам
338 1892197
>>890846
Ты сеньёр или тимлид?
ну правда, кем работаешь?
m.png27 Кб, 1239x551
339 1892207
Анон, объясни мне плиз как функция понимает, что означает переменная m? Это особенность import re?
340 1892210
Как выучить Django?
Посмотрел уроки по Python - после нескольких курсов вроде как понял основы.
Учу Джанго - не понимаю паттерн создания сайта. Какие уроки и какие книги могут помочь.
341 1892213
>>892210
И еще вопрос - хочу сделать сайт - стриминговый сервис, по типу GoodGame . ru, что нужно изучать чтобы сделать такой сайт?
342 1892215
>>892207
В нее передаются объекты re.match, те же, что и при обычном поиске. Понимать что с ними должен ты, а не функция, лол.
343 1892276
>>892213

>стриминговый сервис


Большие ресурсы для этого нужны (хороший сервер+трафик), изучать системные вещи, nginx, docker, ffmpeg, протоколы вроде rtmp/rtsp. Если питон использовать, то изучать сети и asyncio.
344 1892364
>>891909
Но np.vectorize вроде еще лучше.
345 1892387
>>892197
Если тебя впечатляют такие однострочники, посмотри:
http://dabeaz.com/py3meta/
Ближе к концу видео он импортирует xml файлы, то есть:
import file
будет помимо file.py искать еще file.xml и загружать его как модуль.
346 1892400
>>890846
Ты охуенный.
347 1892401
сап двач.

Хочу сделать юрл типа /title/number. Если перейти в /title/, то все ок, джанго находит такое совпадение, но когда перехожу с title/ на title/number выдается ошибка. Хотя в локальных переменных я вижу , что kwargs получил мой title и number, но почему-то не нашел
https://pastebin.com/TSUWTj8T
348 1892427
>>892387
Он гад новую книгу пишет, но не родит никак.
349 1892444
>>892364

> The vectorize function is provided primarily for convenience, not for performance. The implementation is essentially a for loop.



@np.vectorize
def vectorize(x, a=0):
....return 0 if x < a else x

%timeit vectorize(arr)
2.23 ms ± 22.4 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit np.where(arr < 0, 0, arr)
63.9 µs ± 310 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
350 1892610
Почему kwargs, а не kvargs?
351 1892611
>>892610
keyword
352 1892631
>>892611
А я думал key-value.
353 1892643
Вот почему lambda а не что-то попроще, пиздец бесит.
354 1892644
>>892643
Двачую, например λ.
355 1892666
>>892643>>892644
https://www.modernemacs.com/post/prettify-mode/
Видел подобное и для vscode.
356 1892862
В жс есть такая удобная хуйня - если надо подцепиться к какому-то значению из жсона, то я просто пишу
if (row.pole == 'znachenie') {
}

А в питоне как с этим быть? if json['pole'] == 'znachenie' ?
sshot-001.png8 Кб, 980x58
357 1892863
Помогите с кодом. Есть файл dll в котором нужно изменить строчку Maximum visible distance 1200 на произвольную.

Есть код:
import fileinput, string, sys

def replaceLineInFile(fileName, sourceText, replaceText):
file = open(fileName, "rb")
text = file.read()
file.close()
file = open(fileName, "wb")
file.write(text.replace(sourceText, replaceText))
file.close()
print("All went well, the modifications are done")

new_camera_distance_value = bytes(input("Enter new camera distance value:"), encoding="ascii")
replaceLineInFile("client.dll", b'1200', new_camera_distance_value)

Это для отдаления камеры в доте.
Пикрил - как должно быть
358 1892884
>>892863
У тебя 1200 может встречаться ранее в файле, replace заменит первое совпадение только. Тебе нужно сначала найти позицию "Maximum visible distance" и уже начиная с нее заменять.
Вообще странно, что значение в виде строки, а не в бинарном формате, может быть ты нашел display значение, которое меняет только то, что отображается где-нибудь в менюшке, но не само отдаление камеры.
359 1892892
>>892884
Я не понимаю ничего в питоне и кодинге в целом, ни слова не понял из того, что ты сказал
360 1892899
>>892884

>replace заменит первое совпадение только


https://docs.python.org/3/library/stdtypes.html#str.replace
361 1892928
>>892862
obj = json.loads(stroka_s_json)
if obj['pole'] == 'znachenie:

В JS тоже самое, тебе сначала надо строку в объект превратить с помощью JSON.parse(stroka_s_json)
362 1892933
anim = FuncAnimation(fig, animate, init_func=init, frames=200, interval=10, blit=False, repeat=True)
anim.save('triangular_corr.gif')

Почему при вызове plt.show() анимация проигрывается с нормальной скоростью, а после сохранения в файл становится очень медленной?
363 1892958
>>892863
Довольно хуевая идея так делать с бинарниками.
Вот тебе хорошая заготовка, надеюсь разберешься.
https://ideone.com/F2DAwX
364 1893048
>>892899
Должно быть попутал с каким-то другим языком, где replace заменяет только один раз.
365 1893050
>>892215
Я что с ними делать понимаю. Просто не могу понять, как он берет аргумент в функцию, как он понимает что я в m хочу передать все слова на "х", я же явно это нигде не указываю, вроде бы. Я наверное, что-то не понимаю..
366 1893053
>>892892
Сори за тупой вопрос, а почему ты вручную не можешь поменять, просто найди строку которую хочешь поменять и поменяй, врятли это в игре, что-то изменит, но строчку можно и вручную поменять
367 1893157
>>893050
Вторым аргументом sub ты ставишь строку, на которую заменяется каждое совпадение, или функцию, в которые они передаются и заменяются на результат этого вызова.
368 1893215
>>893157
Ну да в документации так и написанно примерно
(If repl is a function, it is called for every non-overlapping occurrence of pattern. The function takes a single match object argument, and returns the replacement string.)
Просто интересно как именно она это делает, ладно забей, я думаю в соусе можно найти как она это делает.
369 1893223
>>893215
Что значит как. Проверяется тип аргумента, если это функция, то она вызывается. Это банальный коллбек, дохуя где используется.
370 1893252
Посоветуйте шпаргалку или краткий курс по NumPy. Внутреннюю кухню по мат.статистике знаю, мне бы справочник по функциям типа np.covariation(arr) выдает коээфициент ковариации.
371 1893259
>>893252
help(np.covariation)
372 1893276
>>893223
Ну я недавно изучать питон начал, и первый раз такое увидел
373 1893311
>>883441 (OP)
Как называется различное поведение одного и того же метода в разных классах?
экз в шараге, в интернете такой хуйни вообще нигде не найти
374 1893314
>>893311
Перегрузка?
375 1893330
>>893311
Полиморфизм это называется.
>>893314
Перегрузка применима к методу только одного класса и в питоне она даже не существует. В нем перегрузка достигается костылением через необязательные (дефолтные) параметры.
376 1893331
>>893330
Он не про то спрашивает, а про реализацию кастомного класса, для которого работает искаробочный len, например.
Это перегрузка, не?
А то чего в питоне нет, как раз полиморфизм, лол.
377 1893339
>>893331
Пчел,

>Перегрузка методов – это объявление в классе методов с одинаковыми именами при этом с различными параметрам


В питоне нет Java/C-подобной перегрузки, типа

def a(a: int):
--return a

def a(a: int, b:str):
--return a, b

Код сразу пошлет нахуй при попытке вызвать a(5).

>про реализацию кастомного класса, для которого работает искаробочный len


Это вообще переопределение метода класса.
378 1893342
>>893339
Ты меня ошарашил, всю жизнь я думал, что полиморфизм это как раз первое, а второе перегрузка, и так же оно работает в том же шарпе, про жабу не знаю.
379 1893347
Вот, например, в питоньем доке то же пишут https://docs.python.org/3/reference/datamodel.html#special-method-names

> A class can implement certain operations that are invoked by special syntax (such as arithmetic operations or subscripting and slicing) by defining methods with special names. This is Python’s approach to operator overloading, allowing classes to define their own behavior with respect to language operators.

380 1893357
Почитал всякую теоретическую хуйню, в итоге оба подхода это способы реализации полиморфизма, хмм.
381 1893359
>>893342
Полиморфизм - это не первое или второе. Это концепция ООП, предлагающая реализацию и первого, и второго.
>>893357
Опередил.
1340289833748.jpg65 Кб, 600x600
382 1893361
>>893359
ИНКАПСУЛЯЦИЯ - ЭТО СОКРЫТИЕ
383 1893368
>>893359
Ну это надо почитать какой-то ебанутый жаберский или шарперский кирпич, где половину объема занимают рассказы кто родил кого. В скриптоте мне это не очень интересно - как работает и для чего нужно понятно, а больше и не особо надо.
384 1893376
>>893368
Ну, если твой потолок - питоноскрипты, то да, ООП не нужен.
Но на будущее: ни одно интервью не обходится без "трех китов ООП".
385 1893381
>>893376
Сначала надо ебать байты в си, потом ебать абстрактные фабрики, а потом можно уже на пенсию спокойно писать питоновские скрипты.
386 1893385
>>893381

>в си


В ассемблере.
387 1893478
>>893330

>В нем перегрузка достигается костылением через необязательные (дефолтные) параметры.


Это не костылирование. Просто перегрузка в стиле C++ и дефолтные параметны несовместимы концептуально и технически.

Ну или очень сложно совместимы, с кучей потенциальных граблей.

При выборе одного из двух я однозначно за параметры по умолчанию. Одна из фишек, за что я просто дико люблю питон, чего не хватает в других языках.
388 1893534
>>893478

>Просто перегрузка в стиле C++ и дефолтные параметны несовместимы концептуально и технически

389 1893566
>>893534
Вообще дефолтные параметры и перегрузка несколько разные вещи.

Перегрузка нужна, чтобы разные функции вызывать в зависимости от типа параметра. С учётом, что питон динамически типизируемый, это довольно сложно сделать на уровне языка.

В таких случаях извращаются скорее с isinstance, чем с дефолтными параметрами.
390 1893646
>>893566

> С учётом, что питон динамически типизируемый, это


Просто ненужно.
Пофиксил тебя.
Screenshot 2020-12-28 at 20.01.35.png33 Кб, 298x479
391 1893738
Правильно ли я понимаю, что 1 и 2 вариант, абсолютно одинаков, и __init__ нужен исключительно для случаев как в варианте 3? Чтобы можно было создавать имена "интерактивно"
392 1893742
>>893738
Нет, не одинаков. В первом атрибут класса, во втором аттрибут объекта, у каждого объекта свой.
393 1893744
кто подскажет как это говно в Pydantic распарсить?

data = {'TaxPayerVATNumber':'123213213123'}

class TestModel(BaseModel):
tax_payer_vat_number:str

class Config:
alias_generator = to_camel
allow_population_by_field_name = True
arbitrary_types_allowed = True

to_camel не проглатывает.

def to_camel(string:str):
return ''.join(word.capitalize() for word in string.split('_'))
394 1893746
>>893742
Точно!
395 1893747
>>893738

>Правильно ли я понимаю, что 1 и 2 вариант, абсолютно одинаков


Нет, варианты 1 и 2 совершенно разные.
В варианте 1 у объекта не создаётся переменная, name переменная класса. Просто питон видит, что переменная объекта не определена и обращается к переменной класса. Как только ты сделаешь self.name = '' или a.name = '' эта переменная будет создана.
Screenshot 2020-12-28 at 20.15.01.png43 Кб, 301x697
396 1893750
>>893747
Тебе тоже спасибо.
397 1893827
Привет ребят, есть задача сохранять подряд пачку графиков на удаленном сервере(свечи и обычные) рисовал их с помощью finplot но не нашел в его доках функции сохранения. В общем как рисовать и сохранять свечи в большом количестве подряд?
398 1893883
Сап, все-знающий-аноним!

Можете объяснить, почему в данном коде не идет повторения того, что ввел пользователь? Я сделал так, чтобы не выводился "quite" при завершении программы, но при этом, теперь не выводится вообще ничего.

После нескольких тестов заработало само. Класс. Почему-то, на https://www.programiz.com/python-programming/online-compiler/ не всегда выводятся ответы.

Встал другой вопрос:
Почему если if убрать из цикла, он не будет нормально работать?
https://ideone.com/5a4U4p
399 1893939
>>893883
Лучше юзать repl.it, твой интерпретатор какой-то конченный и работает через жопу.

>Почему если if убрать из цикла, он не будет нормально работать?


Что в твоем понимании "нормально работать"? Он работает именно так, как написан.
400 1893945
>>893939

>Что в твоем понимании "нормально работать"?


Это будущий заказчик подрастает. Готовится к написанию задач.

Описание в Джире:
%Фичанейм% работает неправильно. Надо, чтобы нормально работала.
photo2020-11-2219-25-52.jpg71 Кб, 1204x1066
401 1893952
>>893945

>%Фичанейм% работает неправильно


Слишком подробно, можно догадаться.
Лучше

>НИЧЕГО НЕ РАБОТАЕТ!11!!1!!!

402 1893989
>>893952
>>893939
Эм, да, коряво получилось. Прошу прощения.

Вот у меня есть цикл. Пока сообщение не quit, сообщением будет то, что вводит пользователь. Вопрос: будет ли message = input(prompt) и для if тоже (который находится не в цикле?) или же message = input(prompt) только в while?
403 1893994
>>893989

>будет ли message = input(prompt) и для if тоже


Будет.
image.png78 Кб, 1419x666
404 1894009
>>893994

> Будет



Тогда я не могу понять, почему если message = input(prompt) и для if тоже, print(message) не выводит то, что вводится пользователем.
405 1894012
>>894009
Потому что код не доходит до if. Он в цикле while. А while выполняется заново бесконечное количество раз (до StackOverflowException, конечно, но не в этом случае), пока он True.
406 1894017
>>894012
Большое спасибо! Действительно забыл про бесконечность цикла.
407 1894041
Как же сложно вкотиться. Я уже 2 месяца по ~4 часа в день учу этот питон, bash
И всё что я могу, так это писать примитивные скрипты. А ещё фрэймворки, паттерны, миллион библиотек, алгоритмы, и всякие книги "программируем как профи" и т.д.
Я думал у вас попроще
408 1894042
>>894041
Теория автоматов, гит и прочая инфа, что студентики учат 4 года в своих вузиках
409 1894054
>>894041
Попроще чем что? Дома никогда не научишься кодить, твоя цель устроиться на работу, а для этого упор делай чисто на фреймворки, зазубривание теории и типовых вопросов для вкатунов.
мимокрок
15995573220810.jpg205 Кб, 918x750
410 1894065
>>894054
This, а еще пора пилить свой пет-прожект. Похуй что, что взбредет в голову, хоть напоминалка дней рождения, читающая из csv-файлика, которую можно бесконечно наращивать новыми фичами, лишь бы нарабатывать практику кодинга.
411 1894068
Бле есть лист словарей data
в каждом словаре пиздец много ключей-значений, нужно фильтронуть этот лист словарей только оставить в словарях все ключи 'name' и их значения
пишу:
data = [item for item in data for k, v in item.items() if k == 'name']
Получаю исходный лист словарей нихуя не фильтрануло :/
Что ему ему не так?
412 1894073
>>894065
Пет-прожект слишком громко для миллионого калькулятора. Достаточно выполнить тестовые уровня запилить систему абитуриентов и залить их на гитхаб.
413 1894076
>>894068
Бле понятно что ему не так
Он просто видит в словаре ключ name и оставляет весь словарь item
Как добиться желаемого эффекта?
414 1894082
Почему в jupyter такое кривой редактор? Ни автокомплита, ни intellisense, который везде уже пихают.
415 1894084
Вопрос, наверное, смешной, но всё же.

Есть класс A, у него есть переменная classvar.

Создаём экземпляр этого класса objA, у objA есть переменная classvar.

Изменяем значение переменной КЛАССА (не экземпляра) на другое значение. Почему значение меняется и уже созданных экземпляров? Это как-то связано может с ссылками на память? Мол, все экземпляры хранят именно ссылку на память, и при изменении переменной изменяется содержимое в памяти, при этом другие экземпляры всё ещё ссылаются на ячейку?
.PNG62 Кб, 612x200
416 1894086
Вкатывающийся в питон в треде.

Есть один курс, и есть одна простая задачка. Собственно, задачка решена, но криво. Препод курса делает вот такую вещь в решении, которую до этого вообще не показывал - потому и я её нормально назвать не могу (привязывание списка к строке?).

Прошёлся по книжкам - не нахожу чёт.

Подскажите, анончики, как это называется. Прикреплейтед.
417 1894087
>>894086
Разве это не создание листа и потом вытаскивание его элемента?

v = [1,2,3]
v[1]

сначала ты создаёшь лист "[]", и потом вытаскиваешь значение из созданного [1]
Screenshot225017.png14 Кб, 743x117
418 1894089
>>894068
Бля, вот так работает, как сделать в одну строку по типу что выше закоментировано?
419 1894090
>>894087
Вроде, нет. Ни элемента такого в списке нет (это строка выше), тем более это не является номером элемента в списке.
420 1894093
>>894090
Всмысле нет? раздели на несколько переменных

mySuperList = ["сыр", "кетчуп"]

myElement = mySuperList[1] (присвоить первый элемент листа mySuperList, то-есть кетчуп)

Только тут это сразу делается

mySuperElement = ["сыр", "кетчуп"][1]

(грубо говоря переменной mySuperElement сразу присваивается значение листа который ты задаёшь прямо в переменной)
421 1894094
>>894086
сабскрипт оператор
422 1894139
Привет всем.
Хочу в бэк программирование вкатитсья, что можете посоветовать для питона?
solution.PNG22 Кб, 991x409
423 1894152
>>894089
>>894068
new_data.extend([{k:v} for k,v in item.items() if k == 'key1'][0] for item in data)
424 1894197
>>894084
Потому что переменная classvar одна на всех, в этом и суть переменной класса.
425 1894212
>>894084
Днём было про это уже.

Питон, когда ты спрашиваешь переменную объекта, смотрит сначала, не определена ли эта переменная для объекта. Если определена, то использует её. Если не определена, то смотрит, не определена ли для класса эта переменная.

При этом если ты попытаешься изменить значение переменной объекта, записать что-то в переменную, которая определена для класса, но не объекта, то переменная класса не изменится, а будет создана переменная для этого объекта.

То есть переменная класса это переменная по-умолчанию и только для чтения.
426 1894229
>>894212
Понял, спасибо.
428 1894261
Привет тред.
Хочу сделать такой мини проект, чтобы мозги размять немного, сам не программист, но на работе ебошу иногда скрипты в юпитер ноутбуках, поэтому в целом понимаю что и как, но с какой стороны подойти не знаю.

Хочу раз в n времени проверять есть ли новые посты в паблике в вк. Если есть то проверять содержит ли пост указанный текст. Если содержит, то кидать пуш / смс или любое другое оповещение пользователю. В идеале бы это все оформить в бота в телеге с юзер френдли интерфейсом, чтобы не программист тоже мог воспользоваться, заранее благодарю за советы
430 1894344
>>894261
Создай standalone приложение для ВК, получи токены и разрешения использовать АПИ, проделай то же самое с Телеграм. Если бот будет просто чекать посты ВК, то асинхронность не обязательно использовать, а то щас aiogram популярна библиотека. Я в этой асинхронности плаваю как кал сцуко.
Найти бы упражения для отработки асинхронности, многопоточности и всей этой хитрой хуйни. Может кто видел? Можно и для другого языка, главное задачки.
431 1894364
>>894054
>>894065
Звучит хорошо. Спасибо что поддержали анончики!
А то я совсем поник, когда понял, что соревнуюсь с людьми, которые учились 6 лет этой херне.
432 1894367
>>894090

>Ни элемента такого в списке нет (это строка выше), тем более это не является номером элемента в списке


А ниче, что строка выше - это переменная, равная выполненной функции eval, что есть int?
433 1894370
>>894344

>Найти бы упражения для отработки асинхронности, многопоточности и всей этой хитрой хуйни


В питоне я вкатывался в асинхронность через создание десктопных приложений посредство PyQt. Как известно, приложение по умолчанию работает в одном потоке, и если у тебя есть кнопочка "Просканировать пидоров вокруг", занимающая 10 секунд на выполнение данной операции, то после нажатия на нее десктопное окно попадет в состояние "Не отвечает", пока не пройдет 10 секунд, после чего оно одуплится. Поэтому любые функции должны отрабатываться в отдельном потоке, для чего в Qt есть встроенный QThread. Вот можешь с него начать.
Но в питоне асинхронность пилить довольно заебно.

Вот то ли дело в шарпе, ммм:
public async void ScanFaggotsButtonClick()
{
List<string> faggots = await Task.Run(() => ScanFaggotsInArea(10))
}
434 1894435
>>894245
>>894152
Годно выглядит, спасибо. И мб подскажите как там в этих ваших продакшенах на смотрят на длиннокод когда можно в одну строку всё сделать генератором? Всем похуй или нет?
435 1894448
>>894435

>Ну за решение в 1 строчку я бы тебе ебнул бы, лучше пиши в несколько строк конкретно это решение потому что оно очень просто читается и с первого раза понятно что происходит, а в 1 строчку ты заебёшся вчитываться в эту сточку ебаную, там же блять лист компрехеншен в методе экстенд у листа и потом [0] сразу хуй пойми чего делает этот 0

436 1894482
>>894435

>Годно выглядит


В случае 'key1' выглядит как полный пиздец, потому что проще напрямую обратиться по ключу key1, чем в цикле проходить по всем ключам и сравнивать с key1. Такое распечатывать и на стенку вешать как шедевр программирования.

Хотя в исходном ТЗ, как я понимаю, надо не по набору ключей, а по чему-то типа регулярки тестировать, тогда такое уже нормально.

Но если будет регулярка или какая другая сложная проверка, то в одну строчку уже не запихнёшь, или уж очень тяжеловесно будет.
437 1894497
>>894482
data = [{"name": "John", "age": 12}, {"name": "Jane", "age": 24}]
result = [{"name" : obj["name"]} for obj in data if "name" in obj]
438 1894725
>>894482

>Хотя в исходном ТЗ, как я понимаю, надо не по набору ключей


Мне нужно было именно по ключу, эта вся хуйня нужна чтобы выдрать из REST нужные мне данные, собрать в словарь и из словаря запилить CSV по шаблону а она удобно пилится csv.DictWriter со словарями
439 1894813
>>894370

>в асинхронность через создание десктопных приложений посредство PyQt


Это всё-таки многопоточность, асинхронность это то, что через asyncio.

Но в неё тоже вкатиться не так просто, имхо лучше с других языков начать с этими технологиями играть.

Я бы посоветовал или JS, или Go глянуть на предмет конкурентного программирования.

В JS промисы и async/await намного более предсказуемые, чем в питоне.
440 1894817
>>894813
Roger that, bro. Go go go
XRENb.png80 Кб, 1464x617
441 1894865
Что за херня? Как бороть? Сливать словари? Или попроще чего будет? Гугл молчит про 2 writerows подряд
442 1894883
>>894865
По-моему, всё правильно делает.
Ну зазипуй словари, но всё равно какая-то хуйня, какой смысл вообще?
443 1894897
>>894883
ну такполучилось что у меня листы с диками. Нужно их записать.
Есть вариант запихнуть всё в один лист но как-то сложно.
444 1894901
>>894883
алсо zip не помог, оно кортеж делает а writerows их не ест
445 1894902
>>894897
Что значит надо их записать?
Они связаны или нет? Почему разное количество?
446 1894914
>>894902
Кол-во одинаково в обоих
разные нужные заголовки в разных словарях, тут либо слить пытаться в один словарь либо хз
447 1894916
>>894865
Для начала сформулируй, что ты именно хочешь. И пример, как это в таблице будет выглядеть.

Потому что тут в одном списке три элемента, в другом два элемента, и визуально они никак между собой не связаны, не пересекаются по каким-либо значениям.

Руками список собери в случае чего.
448 1894919
>>894914
for row, row2 in zip(dict1,dict2):
row.update(row2)
всё.
Screenshot212519.png74 Кб, 1617x857
449 1894920
>>894916
Вот тут нагляднее
Я попытался слить в один словарь но не вышло правильно.
У меня есть 2 словаря из которых нужно слепить один csv
450 1894922
>>894813

>Это всё-таки многопоточность, асинхронность это то, что через asyncio


Можешь пояснить языком даунов (хоть как в том примере про электричество и говно), в чем разница?
Мимо
451 1894923
>>894919
Работает, спс
Но я думал мб можно удалить как-то newLine после первого writerows
452 1894927
>>894923
Да это не имеет смысла, специально сделали враппер, чтобы красиво выплюнуть всё по ключам, а ты хочешь это через жопу провернуть для своего наркоманского случая. Делай построчно тогда без этих удобств.
453 1894935
>>894927
Согласен
Поэтому я просто соберу словарь один да и всё как тут >>894919
посоветовали
454 1894937
>>894920
Можно примерно так
for index, item in enumerate(list1):
____iter.update(list2[index])
455 1894939
>>894922
В случае тредов ты запускаешь задачи, а переключение их происходит в случайные моменты времени. У тебя есть проблема thread safe кода, в остальном тебе адаптировать код не нужно.

asyncio требует основательной переработки кода, принцип асинхронности такой, что задача сама должна отдать управление циклу обработки задач. Обычно ты это делаешь тогда, когда блокируешься на сокетах. Оператор await для задачи позволяет отдать управление, но есть нюансы. В целом асинхронность такая удобнее, чем через треды, более производительная, но нужно, чтобы код поддерживал.

Библиотеки вроде Qt не поддерживают asyncio.
Стикер255 Кб, 376x476
456 1894943
>>894939
Сложнааааа.
457 1894949
>>894943

>Сложнааааа.


Тогда выкатывайся. Программирование - это не твое.
458 1895001
>>894949
Держи в курсе.
459 1895039
Господа пОгромисты
Можете чекнуть мой гитхаб и сказать куда дальше расти?
Да и вообще скажите про косяки в коде
https://github.com/Tr0ub1e
460 1895087
>>895039

>Можете чекнуть мой гитхаб


Думаешь кто-то таким занимается в принципе?

Вот зашёл в Wangan-Midnight, ни описания никакого, что это, зачем, как запускать.

Открываю исходник, main.py. Вижу там
start_im = pygame.image.load("C:\\Users\\Tr0ub1e\\Desktop\\Folder3\\mid.png").convert()

Какой-то адовый хардкод, завязанный на какой-то ник, да ещё в винде.

То есть я без правки исходников запустить твою прогу, которая ещё не понятно, что делает, не могу. А это уже очень-очень дурной стиль. Особенно с учётом, что документации на это нет.

Не воспринимай мои советы слишком лично, я всего лишь токсичный анон-теоретик, кому лишь бы придраться.

Я бы посоветовал, как минимум, минимально оформить твои программы, презентация в таких вещах ключевое, она первое впечатление создаёт.

Убрать хардкод, особенно вот эти глобальные пути, завязанные на ник пользователя и на ОС, как вариант добавить конфиг файл.

Если честно, мне не понятна такая мания к публичным гитхабам. Просто есть такое мнение, что если ты что-то публикуешь, то оно должно быть кому-нибудь полезно. А по факту это "лабы" для себя, без документации, не понятно, зачем нужны, чтобы в них разобраться, скилл нужен не меньший, чем чтобы их написать.

Что подвигает к тому, чтобы смотреть их критически, найти что-нибудь плохое, чтобы плохо думать об авторе. То есть если кто-нибудь будет смотреть, то с подсознательной установкой найти что-нибудь плохое. Все для себя тесты какие-то делают, чтобы что-то пощупать, но не все их на широкую публику выкладывают. Обычно сделают и потом удаляют.

Вот, пример, как недостатки искать:
https://github.com/Tr0ub1e/Auto-Ria-data-research/blob/master/data_analytics.py
Строки 81-111, смотрится стрёмно, дублирование кода, и т.п. Слёту вариант
if i in sorted_value:
____sorted_value += 1
else:
____sorted_value['NaN'] += 1

Игрушку, равно как и другое, запускать не стал. Оценить игрушку в плане качества кода или что посоветовать не могу, немного другими вещами занимаюсь.

рандомно и слёду, не вдумываясь:
https://github.com/Tr0ub1e/music-downloader/blob/master/tools.py
некорректная аннотация, строка 30:
def find_track(req:requests.Request) -> str:
у тебя там генератор строковых значений, а не функция, возвращающая строку

with open(str(path+'/'+filename)+".mp3"
во-первых, os.path.join лучше для этого, хотя не очень критично, и потом, если читаешь что-то по сети и сохраняешь, лучше всё-таки ошибки контролировать, это же штатная ситуация.

Более глобально вопросы есть. Скажем если бы я для себя делал подобную утилиту (что в файле main.py), то разумно предусмотреть возможность, чтобы сохранять не один файл, а много. Один и руками несложно, много уже утомительно. А так, в поле input ввести через пробелы номера, потом уже в скрипте разбить на номера и циклом всё скачать. Просто разумно предусмотреть более ёмкий и при этом полезный функционал, и несложный. Это же главная цель автоматизации.
460 1895087
>>895039

>Можете чекнуть мой гитхаб


Думаешь кто-то таким занимается в принципе?

Вот зашёл в Wangan-Midnight, ни описания никакого, что это, зачем, как запускать.

Открываю исходник, main.py. Вижу там
start_im = pygame.image.load("C:\\Users\\Tr0ub1e\\Desktop\\Folder3\\mid.png").convert()

Какой-то адовый хардкод, завязанный на какой-то ник, да ещё в винде.

То есть я без правки исходников запустить твою прогу, которая ещё не понятно, что делает, не могу. А это уже очень-очень дурной стиль. Особенно с учётом, что документации на это нет.

Не воспринимай мои советы слишком лично, я всего лишь токсичный анон-теоретик, кому лишь бы придраться.

Я бы посоветовал, как минимум, минимально оформить твои программы, презентация в таких вещах ключевое, она первое впечатление создаёт.

Убрать хардкод, особенно вот эти глобальные пути, завязанные на ник пользователя и на ОС, как вариант добавить конфиг файл.

Если честно, мне не понятна такая мания к публичным гитхабам. Просто есть такое мнение, что если ты что-то публикуешь, то оно должно быть кому-нибудь полезно. А по факту это "лабы" для себя, без документации, не понятно, зачем нужны, чтобы в них разобраться, скилл нужен не меньший, чем чтобы их написать.

Что подвигает к тому, чтобы смотреть их критически, найти что-нибудь плохое, чтобы плохо думать об авторе. То есть если кто-нибудь будет смотреть, то с подсознательной установкой найти что-нибудь плохое. Все для себя тесты какие-то делают, чтобы что-то пощупать, но не все их на широкую публику выкладывают. Обычно сделают и потом удаляют.

Вот, пример, как недостатки искать:
https://github.com/Tr0ub1e/Auto-Ria-data-research/blob/master/data_analytics.py
Строки 81-111, смотрится стрёмно, дублирование кода, и т.п. Слёту вариант
if i in sorted_value:
____sorted_value += 1
else:
____sorted_value['NaN'] += 1

Игрушку, равно как и другое, запускать не стал. Оценить игрушку в плане качества кода или что посоветовать не могу, немного другими вещами занимаюсь.

рандомно и слёду, не вдумываясь:
https://github.com/Tr0ub1e/music-downloader/blob/master/tools.py
некорректная аннотация, строка 30:
def find_track(req:requests.Request) -> str:
у тебя там генератор строковых значений, а не функция, возвращающая строку

with open(str(path+'/'+filename)+".mp3"
во-первых, os.path.join лучше для этого, хотя не очень критично, и потом, если читаешь что-то по сети и сохраняешь, лучше всё-таки ошибки контролировать, это же штатная ситуация.

Более глобально вопросы есть. Скажем если бы я для себя делал подобную утилиту (что в файле main.py), то разумно предусмотреть возможность, чтобы сохранять не один файл, а много. Один и руками несложно, много уже утомительно. А так, в поле input ввести через пробелы номера, потом уже в скрипте разбить на номера и циклом всё скачать. Просто разумно предусмотреть более ёмкий и при этом полезный функционал, и несложный. Это же главная цель автоматизации.
461 1895090
>>895039
>>895087
Дополню себя же. На самом деле сложно что-то советовать. Надо просто делать что-нибудь, изучать, думать над своим кодом, как его улучшить и сделать более надёжным-полезным-читаемым.

Всё сильно зависит от того, что именно ты хочешь осваивать в первую очередь.

Факторов, что можно улучшить, безграничное количество. У любого.

Код может быть местами ужасный, но он и у махровых сеньёров в серьёзных продуктах бывает местами адовый, не говоря уже о средних прогерах. Все иногда говнокодят, куда же без этого.
462 1895091
>>895087

>____sorted_value += 1


fix
____sorted_value += 1
463 1895140
>>895039
Там нечего обсуждать, скрипты-однодневки.
Ну да, поюзал либы, решил какие-то задачки, молодец.
464 1895185
>>894922
я концептуально это понимаю так:
многопоточность - это когда одна команда в формуле-1 может выставить, в зависимости от бюджета, до 4 машин одновременно на трассу. допустим, победа зависит от максимального времени, проведенного на треке, и в этом случае заведомо выигрывает команда, выставившая на трек 4 машины. бедная команда ставит на трек 1 машину и она ездит кольцами, накатывает время, а богатые буратины ставят 4 машины и эти машины за один круг проводят время в 4 раза больше, чем бедняки.

асинхронность - это когда на том же треке тачки заезжают на пит-стопы. у богатых 4 тачки на треке, но на 4 пит-стопа денег не хватило и они ездят все в один. отсюда затраты времени на ожидание в очереди + плюс время на работу. бедняки с одной машиной и одним пит-стопом не тратят время на ожидание и могут за счет этого кое-что наверстать, но все резко меняется, когда богачи добавляют еще пит-стопов и каждая их тачка заезжает в свой собственный и вообще движется по своему графику, независимо от остальных.

гуру асинхронности, правильно понимаю, не?
465 1895431
>>895087
Man, these are some hard-to-swallow pills I gotta say.
466 1895439
>>895185
Не совсем. Точнее, понял, но не то. Тебе главное нужно понять разницу между parallel и asynchronous. Оба используют multithreaing (multiprocessing) как базу, но подход местами принципиально иной. Очень часто асинк вообще локов и contest for resources не имеет.
467 1895586
>>895185

Добавь только что мощность движка обратно пропорциональна количеству машин и гиперпынемобиль команды "HYPERPYNIA"приедет быстрее каждой из машин команды где много машин.

> асинхронность



Это когда пилотов обкололи веществами и им кажется что они едут одновременно, хотя на само деле у них одна тачка и они садятся в неё по очереди, и когда очереждной пилот вылезает из машины он залипает и не помнит ничего до момента как е8го сного пригласят сесть за руль.
468 1895654
>>895087
Понял, спасибо большое за развернутый ответ)
469 1895668
>>895185

>правильно понимаю, не?


Не совсем.

Главное, многопоточность была создана не для того, чтобы производительность наращивать. Сама технология разрабатывалась тогда, когда процессоры были одноядерными.

Thread safe программирование тот ещё ад, когда ты работаешь на чём-то низкоуровневом, там просто на чём угодно можно споткнуться очень больно. В питоне такой проблемы почти нет, но потому что там лочится по поводу и без повода и как результат многопоточность фактически однопоточная в плане ресурсов процессора.

Конкурентное программирование, это когда у тебя в программе несколько логических потоков исполнения. Не для того, чтобы производительность поднять, а потому что логика работы такая. И тебе необходимо как-то взаимодействие между этими потоками обеспечивать.

Разница между тредами и async/await в том, кто отвечает за переключение потоков исполнения и как они происходят. В случае тредов скорее процессор или система, в случайный момент времени. Что просто, но неудобно и не оптимально. В случае async/await отвечает уже сама программа, об этом надо думать, но переключение идёт лишь в нужные моменты, оптимально, за счёт этого код сильно разгоняется.
470 1895744
>>894922
Допустим, у нас есть Константин Петрович Потоков, добропорядочный семьянин, верный муж и заботливый отец. Петрович будет у нас программой на питоне. Петровичу очень хочется пожрать, но для этого нужно выполнить три задачи: помыть посуду, сварить пельмешки и сходить за хлебом.
Петрович может выполнить все задачи синхронно однопоточно: помыть посуду, потом сварить пельмени, потом сходить за хлебом. Недостаток такого варианта в том, что Петрович бесполезно тратит время, тупо глядя как нагревается вода, а мог бы что-нибудь полезное делать.
Петрович может выполнить задачи асинхронно однопоточно(asyncio): поставить кастрюльку на огонь, пока вода закипает помыть посуду, потом забросить пельмешки и пока они варятся сходить за хлебушком. Тут могут возникнуть проблемы, если нельзя переключится с одной задачи на другую(то есть задача не отдает поток выполнения), например, Петрович так долго ходил за хлебом, что пельмени сгорели.
Петрович может выполнить задачи асинхронно многопоточно(multithreading): позвать семью, каждому выдать по задаче, и лежа на диване ждать доклада об успешном выполнении. Или не лежать на диване, а выполнять одну из задач. При таком раскладе может возникнуть ситуация, когда, допустим, нет чистой кастрюльки и жена ждет пока Петрович её помоет, да еще в коридоре стоит дочка в шубе и валенках, ожидая когда батя даст денег на хлеб. То есть один поток блокирует остальные.
471 1895752
>>895744

>Допустим, у нас есть Константин Петрович Потоков, добропорядочный семьянин, верный муж и заботливый отец. Петрович будет у нас программой на питоне.


судьба человека
472 1895762
Допустим тебе надо сделать несколько задач:
1) допилить бекенд-фичу, завязанную на кучу разных сервисов, поднятых под докером.
2) изменить дизайн web-based интерфейса, цвета, расположение кнопок и т.п.
3) посмотреть серию анимешного сериала
4) прочитать двач
5) съесть пиццу с колой

Истинная параллельность:
Над монитором висит телевизор, в нём крутится сериал. Перед тобой стоит тарелка с пиццей, ты жуёшь её. Параллельно говоришь, чтобы голосовым набором настрочить пост на двач. Одной рукой набираешь бэкенд часть, другой рисуешь дизайн на другом компьютере.
Это самая эффективная схема, ты независимо делаешь пять дел одновременно.

Многопоточность. У тебя висит секундомер. Каждые две минуты ты переключаешься с задачи на задачу. Посмотрел две минуты аниме, закрыл плеер, загрузил докер, поднял окружение и пилишь свою таску. Через две минуты закрыл редактор, до конца строку с кодом не дописав, взял пиццу, пожевал. Ещё через две минуты убрал тарелку в сторону, рагрузил редактор, рисуешь кнопки. Ещё через две минуты закрыл, открыл двач.

Асинхронность. Открыл бэкенд таску, реализовал часть, закоммитил, закрыл, переключился на пиццу. Сжевал кусок, довольный переключился на двач. Начал писать ответ, дописал, глянул на часы, ужаснулся, что потратил два часа на это, переключился на дизайн. Подвинул кнопку так, что самому понравилось, включил аниме.
473 1895764
>>894939

>а переключение их происходит в случайные моменты времени


Нет каждый 5 мили секунд если переключение возможно, или 100 машинных операций в питоне 2
474 1895768
>>895744
Охуенно, схоронил, буду периодически почитывать и вникать.
475 1895771
>>895744
Так, а когда кнопочка на ГУИ выполняет time.sleep(20), но форма при этом перетаскивается по экрану, не зависая, это асинхронно однопоточно или многопоточно?
476 1895786
>>895771
time.sleep синхронная функция же, в однопотоке гуй зависнет, ее либо в отдельный поток, либо в отдельный процесс отправлять на выполнение.
477 1895796
478 1895815
>>895786
Так я про случай, когда не виснет. Я хуй знает, как это в пистоне, но в шарпе это достигается через async/await.
479 1895816
>>895815
Используй асинхронный sleep, очевидно же.
480 1895820
>>895816
Боже, что за настырность. Я не о том спрашиваю. Я спрашиваю: когда действие кнопки не фризит окно ГУИ, это какой сценарий: асинхронный однопоточный или асинхронный многопоточный?
481 1895822
>>883441 (OP)
Платиновый вопрос, но стоит ли вкатываться в питон для работы бэкэндером? Или из-за хайпа среди гречневых онлайн курсов теперь вкатиться нуфагу не реально?
482 1895825
>>895820
В QT такие вещи насколько я знаю разруливаются в многопотоке.
483 1895828
>>895822

>питон для работы бэкэндером


Не лезь, бля, дебил, сука, ебаный.
Срсли, питон - параша в большом проекте. Что бы там тебе маслятки не навешали на уши, факт остается фактом: динамическая типизация в ООП - кусок говна и идет нахуй.
Можешь питон рассматривать как способ заработка в датасаенсе (функциональное программирование, скриптики-хуиптики), но не более.
484 1895833
>>895828
Большой проект это сколько строчек кода? Нормально питон заходит если писать чистый код и использовать типизацию.
485 1895838
>>895828

>динамическая типизация в ООП


Опять ты по всем тредам шатаешься.
15997544969920.png230 Кб, 669x1058
486 1895852
>>895833

>если писать чистый код


Ahaha_oh_wow.jpg
Сам себя послушай. В каком мире ты живешь, если пишешь чистый код, приходишь в компанию, где до тебя уже написан чистый код, а главное: где тебе разрешают писать чистый код?
>>895838
Пикрелейтед.
1521477489117810000.jpg72 Кб, 561x313
487 1895860
>>895744
Весьма доходчиво.
488 1895872
>>895852

>В каком мире ты живешь, если пишешь чистый код, приходишь в компанию, где до тебя уже написан чистый код


Проблема для всех языков программирования. Ад, который происходит на C/C++/Java куда хлеще, чем на многих других платформах. Статическая типизация этот ад только усиливает, а тяжеловесные системы сборки в стиле cmake+make делают его невыносимым.

Ты окружён жуткой архитектурой, которая конкретно зацементирована, в том числе из-за статической типизации. Потому что у тебя выстроена система классов из дикого количества слоёв наследования, на которую уже всё завязано, тебе надо мелочь какую-нибудь изменить, но добраться до неё невозможно, потому что она где-то в корне иерархии.
489 1895889
Привет тред, мне нужна функция сохранения графика из pyplot в библиотеке finplot, как мне ее вытащить оттуда и добавить в другую библиотеку?
490 1895932
>>895889
любая картинка это в основном трёхмерный(четырех) тензор с каналами R G B (А), просто возьми этот тензор картинки из finplot и загрузи в pyplot и посредством pyplot сохраняй
491 1896002
>>895852
Не проблема языка, говна с кучей багов полно на любом легаси проекте, особенно если писали его пидарасы.
492 1896106
>>895828
петяня, ты новое словосочетание в книге прочитал, чтоли? поясни что за хуйня за такая, и как она проектам жить мешает?
493 1896162
>>895833
Это опять ты? Буквально недавно тебя в жс-треде обоссывал
На любом проекте есть своя доля говнокода, говнокода нет только там где пишут "для себя и на века", но от таких прожектов всегда отдает легаси-душком. "Чистого кода" на коммерческих проектах нет и не было
494 1896215
>>896162

>Это опять ты? Буквально недавно тебя в жс-треде обоссывал


Ебать ты шизлонг, можешь меня еще под кроватью поискать, а потом принять таблетки на ночь.
495 1896221
>>895828

>Срсли, питон - параша в большом проекте. Что бы там тебе маслятки не навешали на уши, факт остается фактом: динамическая типизация в ООП - кусок говна и идет нахуй.


Ты вообще прав, но зачем так подрываться? Бекенд - это не обязательно большой проект.
496 1896230
>>896215
Если найду - выебу, жопу готовь. 21 см это тебе не шутки нах
497 1896428
Насколько хороши, полны и актуальны лекции Хирьянова? Понятное дело, что это лишь база (которую он, собсна, и зачитывает первоходам какой то там хабзы). Но мне так нравится его академический стиль повествования... будто реально вернулся в универ на лекцию по АоИПу какому. Стоит ли придерживаться его курса при знакомстве с Питонюгой (помимо чтения профильный литературы само собой)?
498 1896456
>>896428
Я их не смотрел, хотя желание было посмотреть, как и некоторые другие большие курсы.

Тыкал в случайные места. Моё мнение, там лекции по алгоритмам, а питон лишь инструмент, на котором их реализуют.

То есть вероятно нормальный курс по алгоритмам, базовым, тыкаю в случайные места, и почти везде всё мне знакомо, отчасти поэтому немного лень смотреть.

С точки зрения именно изучения питона точно нет, плохой вариант. Куда не тыкал, везде какой-то самый минимум, общий для большинства языков. Лучше просто открыть книжку именно по питону, как вариант "intermediate python", в библиотеке в шапке где-то есть (причём на русском вроде бы даже), или в официальной документации, не обязательно всех этих лутцов брать, если прогать более-менее умеешь.

В общем для подтягивания алгоритмической базы, всякие сортировки, обходы деревьев, перестановки и т.п., видимо нормальный вариант и как раз на питоне.

Для другого вряд ли.

По стилю мне не очень нравится, я бы деда какого-нибудь предпочёл, но лучше не могу предложить.
499 1896471
Аноны, привет. Вопрос не совсем по синтаксису питона, так что прошу не бить палками
В общем мне 24, есть 4 года опыта работы в геймдеве, стек юнити-c# и питончик для внутренних утилит + задачи по зрению (ну скелет там распознать и пр) + профильная вышка
И сейчас мне этот геймдев подзаебал - это не похоже на программирование совсем. Думаю перекатиться в питон разработку. Скажите, чем вы занимаетесь вообще ? Какой стек юзаете? Или питон на вашей работе, скорее, вспомогательный язык? Знакомых спросить нет, а после прочтения интернета создается ощущение что на питоне “достаются данные из бд” и “кладутся туда”. Но бля понятно, что такое объяснение только кухаркам подавай и питон разработка - дело не простое. Вообще круто, если кто-нибудь приведет кейс сложной задачи на работе, в идеале, чтобы примерно понимать с каким втф сталкиваются разрабы (а так бы хоть кто-нибудь ответил бы))
Так же вопрос, есть ли вероятность залететь питон прогером с моим беграундом сразу на нормальную позицию? очень не хочется в плане зп терять (было 70).
Буду рад адекватным анонам) спасибо) а то я немного в прострации с этой хуйни
500 1896514
А есть стримы, где люди программируют онлайн? Хочется посмотреть как они переименовывают классы, методы, переменные, как получают ошибки. Короче, обычная разработка. Я бы посмотрел.
Где-то читал интервью одного прогера из Яндекса, он говорил о том, что они с остальными молодыми приходили посидеть за спиной у Сысоева, смотрели как он кодит.
501 1896531
>>896514
есть
502 1896595
>>896471
Охуеть. 4 года опыта и 70к? У программистов же зп только 300+
Может мне инженером остаться на тех же 70к
503 1896612
>>896595
Да я в очень молодой конторе работал последние два года - у них бабла нихуя нет
504 1896620
>>895815
Ну анончик, если синхронная функция не блокирует исполнение гуя, очевидно же что в отдельном потоке она исполняется, значит многопоточная.
>>895860
Это если не углубляться, а то под капотом там все не совсем так. Как анончик выше писал, там что в асинкио, что в мультитрединге внутри все равно кооперативная многозадачность.
505 1896625
>>896612
Ну то есть ты совсем не ради денег работаешь
506 1896628
>>896456
Хм, похоже, ты смотрел более поздние его лекции. Я вот прям с первой начал, и там объясняются весьма базовые вещи (що такэ строка, присваивание, ХеллоВорд и т.д.). Мне наоборот показалось, что он начинает с уж совсем низменных понятий.
507 1896686
>>896625
да я еще пол года назад в унике был
для студентоны 70к было норм
сейчас подзатрахало как зп, так и место работы
508 1896698
>>896686
Тогда вообще круто. Возвращаюсь во вкат в ойти
509 1896785
Хочу сделать пет проект ввиде аналога хертсоун. Начну пожалуй с бд. На ск это сложно через гуи реализовать. Поиск по бд(класс, редкость карты, стоимость карты)
Сложный запрос (который в себя включает несколько пунктов вышеперечисленных)
511 1899334
>>889928

> топай в свой мирок розовых пони бичара


Да похуй мне щенок ебанный!
512 1902082
Всем драсте, у меня встал вопрос.
Я значит решил с помощью питона связать два компа, чтобы на них можно было играть в пинг понг, ну чтобы мячи через экраны летал. И при попытке передать координаты мяча у меня буфер сокета на сервере забивается из-за того, что на нём висят старые координаты мяча и не удаляюются. Как собственно мне удалить старые координаты мяча из буфера сервера?
https://pastebin.com/1hhJ9Hdr - Это правый кусок программы, у левого логика идентична
https://pastebin.com/cNVCvWiX - Это сам сервер
513 1912720
>>902082

>буфер сокета на сервере забивается


Это ты как понял ?
514 1946976
>>896785
В плане БД используй что угодно, есть и для реляционных и для Nosql удобные библы.
В плане графики и гуи есть PyGame.
Но вообще, скажу, что подобные вещи на пайтоне не самое удобное делать. Ну если забавы ряди для себя, то конечно почему бы и нет. Но в целом по удобству, и по эффективности, лучше джавы и c# смотреть.
Тред утонул или удален.
Это копия, сохраненная 26 апреля 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски