Этого треда уже нет.
Это копия, сохраненная 12 ноября 2020 года.

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

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

Предыдущий: >>1699561 (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: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.

текущая шапка (90): https://dumpz.org/bASGKD8cCFDf
2 1711649
Юбилейный тред, всех с праздником
3 1711663
>>1711164 →

>Кстати, а как добавлять или убавлять обьекты поиска


Я не разбираюсь, но предполагаю, что нейроночке скармливается кадр и она просто выдает вероятности сразу по всем объектам, по которым была обучена. То есть убрать, скорее всего, нельзя. Вполне достаточно будет игнорировать ненужное, что-то вроде if CLASSES[idx] == 'dog': print('ne nujno').
>>1711241 →
Или она просто подумала, что ты через пару месяцев уйдешь на работу получше, а у нее и без тебя текучка.
image.png15 Кб, 374x273
4 1711677
Анончики, я знаю, вы тут, возьмите на работу, пожалуйста
15904974803960.jpg65 Кб, 764x1024
5 1711990
посоны, устроился джуном, через две недели выходить на работу.
Как я понял, придется писать скрипты, пайплайны.

Что лучше подучить чтобы не обосраться на испытательном сроке, ранее программистом не работал.
6 1711993
Почему ListView в джанге не выдает пагинацию, как надо? Задал я значение paginate_by, но на всех страницах ?page= один и тот же результат (а если обратиться к заведомо невалидной странице скажем ?page=99999 то будет 404 как и должно)
С чего бы это? Кто-то сталкивался?
7 1711996
>>11990

>что подучитт


Бля, а у них самих ты это узнать не потрудился?
изображение.png560 Кб, 400x600
8 1712001
Уволился с работы, хочу перекатиться на новую, только удаленно. Но синдром самозванца заставляет нервничать, кажется что слишком жирно просить 100-120к с моим опытом. Я middle web-разработчик, в общем 3 года опыта, из них 1,5 года на python. Высшего нет.

Помогите ответами:
1. Какие задачи у вас были, когда вы были миддлом? Было бы круто с примером.
2. Норм ли просить такую сумму с моим опытом?
3. Что нужно знать и уметь, чтобы зарабатывать такую сумму?
9 1712007
>>12001
3. нужно не смотреть эту старую пизду про анальников.
10 1712028
Сап. Есть скрипт, который производит действия с директориями и файлами. В нем есть команда переноса:

shutil.move(os.path.join(root,file),pathCopy)

Если запускать его через python.exe, то все ОК. Но если скомпилировать в exe через PyInstaller и запустить, то на директориях с определенными символами в названии ругается на несуществующий путь. В частности, с этим ’ (right single quotation mark).

Чует моя жопа, что проблема с кодировками, но не могу понять где.
11 1712036
>>11996
Я не надеялся что меня возьмут, а тут оффер пришел.
Ну на дваче же всегда можно получить советов мудрых
12 1712039
>>12028
Ну сделай принт этих параметров перед выполнением и смотри.
13 1712045
>>12039
я с принтами и выводил, путь был правильный и одинаковый в обоих вариантах. Даже делал обертку Path() на всякий случай.
14 1712252
Есть короткая книга или длинная статья про эту хуйню с await/async?

Я умею в многопоточность на другом языке через обычные мьютексы и потоки и там мне всё понятно, но вот это понять не могу - просто не могу найти пример где параллельно выполняются две обычные блокирующие функции - а без такого примера я не могу понять в чём смысл этого await. Все статьи обрывочные, в одной идёт gather, в другой wait - одни и те же задачи выполняются разными способами и никакой цельной картины сложить не получается.
15 1712283
>>12252
книг нет, статей дохуя, просто гуглишь и все.
Вообще если ты не понимаешь зачем тебе, то забей хуй, скорее всего тебе это не нужно
16 1712293
>>12252
Это новая тема, так что мало пока понаписали.
Книга есть, но я пока не читал. По отзывам вроде хвалят.
https://www.amazon.com/Using-Asyncio-Python-Understanding-Asynchronous-ebook/dp/B084D653HW/
17 1712304
>>12283
Мне нужно выполнять параллельно обычные блокирующие задачи (без модификации кода задач в виде расстановки async или ещё чего-то), при это задачи должны иметь возможность создавать новые задачи и ждать их завершения в некоторых случаях.
Вопрос не к концепции асинхронщины, а скорее к конкретным примерам кода и синтаксису - я пока даже не приблизился к.
18 1712319
>>12036
Советы ты должен был получать у конкретного работодателя. У всех стек и принципы варьируются
19 1712322
>>12252
На realpython (ангельский) ищи статью. Была где-то
20 1712334
>>12252
Для полноценного понимания полезно опуститься в историю, посмотреть то же видео с "дедом", что в шапке. Это чтобы понять нюансы и какие-то подводные камни.

Если идти сверху, а не снизу, то await - это ожидание результата.

Если по общему смыслу, главное отличие от многопоточного программирования.
В многопоточном программировании у тебя переключение потоков исполнения происходит в произвольный момент времени. В схеме async-await у тебя переключение потоков возможно ТОЛЬКО на операции await.

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

Так на всех платформах. А вот техническая реализация уже может сильно отличаться, свои нюансы везде. В питоне их довольно много.
21 1712341
>>12304

>Мне нужно выполнять параллельно обычные блокирующие задачи (без модификации кода задач в виде расстановки async или ещё чего-то


Не получится. В таком варианте только многопоточное программирование.

Для async-await необходимо, чтобы код был асинхронным, чтобы блокирующие операции, сетевые, использовали специальные примитивы для асинхронности. Это совсем другой стек.

Просто расставить async-await не поможет совсем.
22 1712393
>>12341

>В таком варианте только многопоточное программирование.


threading?

>Это совсем другой стек.


А, ну и отлично. Мне просто ирл посоветовали async-await для моей задачи - мол удобная штука, то что тебе нужно, а я всё не пойму каким боком её прикладывать. Видимо что-то попутали.
Правда изучить её тоже хотелось бы - для этого и спрашиваю, в первую очередь.
23 1712402
>>12393
погугли что такое GIL, что такое celery
24 1712413
Чуваки, я джавист, сегодня моя судьба сложилась так, что пришлось переводить с вашего пайтона на родную джаву код без документации и за полдня работы я осознал, что не хочу обратно в джаву, ваш пайтон просто охуеть какой лаконичный и простой и если он такой же функциональный, как все пишут, то я остаюсь. Охуеть блять разрыв шаблонов у меня
25 1712425
>>12413
Просто сама Жаба каличная и многословная для 2020, щито поделать
Если хочешь в мобилках копаться, лучше иди в Котлин - Жаба скрещенная с Питонухом, а в Пистоне в основном либо веб-бэкенд либо машоб и датасоенс (но тут совсем иные приколы)
26 1712432
>>12425
Вэб-бэкэнд подходит весьма. Мне не с кем поделиться, но я просто до сих пор в шоке от такой разницы и почему я столько лет не совал носа никуда, кроме жабы.
27 1712438
>>12432
глянь также на flutter о мобильной разработке, очень чёткий, как бонус можно писать сразу на все мобильные платформы и веб.
sage 28 1712469
Сап питонач, знакомый джун пограмист на жабе хочет совета мудрого, заодно и меня подначивает мимо долбоеба без навыков. Что вы можете ему посоветовать для познания азов машинного обучения? Язык книги не важен, хотелось бы что то свежее и желательно с глубоким погружением в тему и мат часть. А я пойду почитаю питон для детей.
29 1712475
>>11609 (OP)
Всем привет.
Есть некая задача - смотреть с сайта состояние некой переменной, при каком-то заданном её изменении - оперативно уведомлять меня. Как это можно сделать?
Пока что план такой:
запилить скрипт в крон
при первой прокатке скрипта сохранить значение переменной в файл
затем сравнивать значение с этим значением
Если оно расходится - аларм - активируем какой-то скрипт на ?????
На что-то, на какое-то оперативное оповещение меня. Например, в телеге сообщение написать
import telebot;
В теории что-то там может прокатить.

Получается, крон каждую минуту прокатывать? А есть какие-то иные варианты? Бох с ним с кроном (хотя интересно), тут скорее про телебот. Есть ли какое-то околотиповое решение?
30 1712486
>>12475

>Есть ли какое-то околотиповое решение?


есть
31 1712504
>>12486
Подскажи, в какую сторону копать?
32 1712527
>>12469
Советую ему задрочить математику
sage 33 1712528
>>12527
Лул, знакомый удивился объему математики в этой теме.
34 1712530
Как получать вывод ошибок сторонних программ в питоне?
У меня есть код например
cmd = 'ffmpeg -i file.mp4 newfile.mp4'
p = subprocess.call(cmd, shell = True)
Когда всё нормально программа ffmpeg отработает без вывода. Но если я допустим ошибусь в пути или параметрах ffmpeg должна выдать что-то типа "No such file or directory".
Я это всё делаю в блокноте юпитере. И в консоли откуда я сам юпитер запускаю это отображается. Как мне собственно это "No such file or directory" вывести уже в блокноте?
2020-06-04-03:05:59.png19 Кб, 667x178
35 1712558
36 1712559
>>12558
Хотя в 3.5 вроде добавили subprocess.run() и он по дефолту ждет пока процесс закончится и сохраняет в proc.sterr ошибки в указаной в функции кодировке.
37 1712566
>>12559

> subprocess.run() и он по дефолту ждет пока процесс закончится и сохраняет в proc.sterr


у меня p.stderr() выдает 'NoneType' object is not callable
Нашел простой пример result = subprocess.run('ls'). Эта команда должна выдать список файлов. Но у меня вместо того чтобы в юпитере это отобразить отображается в консоли из которой я юпитер запустил.
>>12558
А это сработало. Как раз то что надо выводит. Но при замене Popen на call или run уже не работает.
38 1712569
>>12432
такая же хуйня
мимоплюсовик
39 1712571
>>12566

>subprocess


в run укажи capture_output=True
и stderr это не функция, там () не нужен.
40 1712574
>>12569
Кстати что посоветуете из книг почитать, чтобы не для чайников но подробно и охуеть, как на питоне можно?
41 1712576
>>12571

>в run укажи capture_output=True


Ну и да. Если не вкурсе еще, stdout - обычный вывод, stderr - ошибки.
42 1712579
test
43 1712622
Чёт маленько не догоняю: в чем разница между функциями вида .zalupa() и zalupa()?
44 1712623
>>12622
То метод, а это функция.
45 1712659
>>11993
Скорее всего ошибка в темплейте, смотри в нем, или сюда кидай кусок с пагинацией
46 1712746
>>12623
А в чем между ними разница? Вот обе допустим возводят число в квадрат - какая разница между ними будет?
py.png12 Кб, 1060x192
47 1712832
Салют, у меня есть url, нужно поменять там значения from и to. Пытаюсь сделать через urllib, но он не хочет собирать мне все нормально.
В словаре данные меняются, но потом, когда пытаюсь собрать ссылку, то возвращает прошлую.

[Output]:
Вот я распарсил ссылку
{'orgId': ['1'], 'from': ['1589972154000'], 'to': ['1589972739000'],....

Поменял параметры
{'orgId': ['1'], 'from': ['1555926954000'], 'to': ['1555938339000'],....

Пытаюсь собрать и выдает старую ссылку
http://192.168.150.138:3000/render/d-solo/htddR-gGz/jmeter-dashboard?orgId=1&from=1589972154000&to=1589972739000....
48 1712890
>>12746
Одно находится в каком-то классе, а другое глобальное?
49 1712920
>>12746
тебе зачем?
50 1712947
Гвидо всё, что вы тут всё перекатываете-то?!
51 1712957
>>12947
да вроде ревьюит еще https://github.com/python/cpython/pull/20050
52 1712959
>>12569
для быстрого переката сгодится A byte of Phyton, есть на русском и бесплатно. Марк Лутс Изучаем Python - эта уже поглубже. А дальше все завист от направления
53 1712961
>>12574
>>12959
не туда
54 1712999
Как по-божески настроить поведение class based View в джанге в зависимости от того, залогился юзер или нет? Дергать постоянно if self.request.user.is_authenticated?
55 1713015
>>12504
Ананончики хочу в хакинг какие библиоткеи кроме сокета учить
56 1713031
>>13015
Earnest Wish Python Hacking для начала
Но ты не осилишь. Там к тому же еще и 2й питон
57 1713093
>>12999
ДеКоРаТоРы
58 1713171
>>13093
На самом деле не обязательно лол
Декоратор хорош, когда у нас много вьюх, которые так надо кастомизировать. Когда вьюх мало но логика в зависимости от выбранного случая обширная, надо захерачить композицию (отдельный класс-посредник), ему и делегировать исполнение
Тут джавист тусовался, он подробнее пояснит, отдельный паттерн для этого говна был
59 1713186
class Meta:
model = Model
fields = ['file', 'file1']

def __init__(self, user, args, kwargs):
super(ModelForm, self).__init__(
args, kwargs)
self.user = user

def clean(self):
Объясните, пожалуйста, что за фигня super? Встречается в некоторых формах.
60 1713188
>>13171
ясно, опущ
61 1713221
>>13186
Вызывается конструктор родительского класса.
62 1713228
>>12832
Попробовал сделать urlStr = urlsStr._replace()
Теперь передает значения, но все значения в квадратных скобках
orgId=['1']&from=['1555926954000']&to=['1555938339000']&var-data_source=['InfluxDB-Jmeter']
63 1713252
>>13171

>Тут джавист тусовался, он подробнее пояснит, отдельный паттерн для этого говна был


Это называется примеси, но суть в любом случае та же что у декораторов. Для class-based лучше миксины, для функций - декораторы.
64 1713277
>>13228
Потому что ты пихаешь туда списки с одним элементом, убери квадратные скобки.
65 1713309
Сап питонач, на сколько в питоне важно знание математике, если важно и обязательно, то на каком уровне?
боюсь сложных уравнений
66 1713387
>>11609 (OP)
Котаны, трабла с добавлением записей через админку django
Есть у меня возможность добавления ссылки на сторонний ресурс, включает в себя собственно ссылку ref (кто бы мог подумать?), название title и сурс (source – ForeignKey на модель Site, по сути hostname самого ресурса, в примере на 1м пикриле это был бы yandex.ru) – сурсов ограниченное число – около 10
Как вы поняли, я хочу иметь возможность задать в некоторых случаях значение сурса=null, вроде как, судя по 2му пикрилу, в моделях я все прописал, но ебучая админка Джанги при попытке простого добавления записи ругается, что я должен обозначить поле source. С хера ли?
success.png3 Кб, 506x80
67 1713392
>>13387
Да, я пробовал добавлять посты через python manage.py shell – все добавляется лол. То есть это что-то не то с формами админки

Для дебага прописал print(“save method”) внутри метода Post.save – он даже не вызывается, когда пытаюсь добавить запись в админке, то есть форма сразу выдает error и до ORM даже запрос не доходит
68 1713455
Есть ли способ получить нормальную многопоточность на питоне, которая задействовала бы все ядра процессора? threading отметается из-за GIL. multiprocessing не является адекватной заменой, поскольку каждый процесс имеет свою память - если результата вычислений больший, то копирование его назад убьет весь прирост производительности. numba не работает с библиотеками. Пока что у меня один вариант - выносить кусок кода за пределы питона и писать многопоточность на крестах. Нужная мне библиотека (OpenCV) работает и на питоне, и на крестах.
69 1713482
Видал на сайтах боковые или ниспадающие панели, на которых посетитель может поставить определенные галочки или как-то по-другому заполнить поля, и контент, который он будет видеть, будет фильтроваться соответствующим образом… Как такое запилить в Джанго?

Для удобства эта фича будет только у зарегистрированных юзеров, очевидно что нужно вкинуть на страницу какую-то форму, которая будет обрабатывать данные, введенные юзером однако:
1. Где хранить эти данные? Внутри модели User? Это не зашквар? (да и надо учитывать что система будет часто расширяться и видоизменяться, поэтому надо в соответствии с этим пилить архитектуру)
2. Нужны норм виджеты, я не особо шарю в верстке и юзал немного Бутстрап, но тех же моднявых разномастных переключателей там не видал
70 1713485
>>13387
null-то ты поставил, а blank - нет)
71 1713519
>>13455

> Пока что у меня один вариант - выносить кусок кода за пределы питона


Это единственный вариант, наверное должен понимать почему без GIL начнется пиздец с памятью.
72 1713524
Господа, объясните пожалуйста ньюфагу правильную последовательность в Django.
Т.е., есть у нас следующее:
URL - маршрутизатор
Views - контроллер
Models - модель
Templates - шаблон
Т.е., какая очередность написания/внесения корректировок в файлы? Сначала шаблон, потом модель, дальше контроллер и в конце маршрутизатор, так что ли?
Deffenst 73 1713656
Вкатился недавно в питон. Сейчас читаю книгу прям совсем для чайников, детей, ибо по другому хуй вольюсь. Что читать дальше. Что бы не терять интерес и не сбиваться с курса?
74 1713665
>>13524
Лучше сперва писать модель, потом вьюху, а шаблон тебе может и не понадобиться если у тебя api endpoint. Маршрутизатор это одна строчка в routes, хуле там писать? Модель будет для тебя опорой.
75 1713693
>>13656
Понять что вкат в 2020 невозможен и устроиться в Пятерочку
76 1713716
>>13656
Практиковаться, делать что-нибудь полезное тебе. Скриптики там под комп и все такое.
77 1713756
>>12920
Просто интересно.
78 1713758
>>13656
да почему у вас всех нет идей что писать?

мимо адмен, но в 40 лет вынужден изучать петон.
79 1713759
>>13756
Метод (не статический) работает в контексте объкета. В питоне ты этот контекст объекта можешь заметить по передаче self первым аргументом в метод. У функции по дефолту такого контекста нет, хотя ей за просто так можно передать объект или что вообще надо для работы. Ну и да, вызываются методы чаще всего через точку.
Твой пример с простым возведением числа в квадрат хуево наглядный. Но допустим у нас есть класс Float, который кое-какие методы имеет.
float_object = Float(10.0)
float_as_is = 10.0

float_object.square() -> метод, выполнит возведение в квадрат на собственном значении.
square(float_as_is) -> функция, выполнит возведение в квадрат на том, что ей явно передается в качестве аргумента.

Пример все равно хуевый и малопнятный, это же всего лишь флоат.
80 1713760
Питоны, такая ситуация:
Есть модель с filefield, путь до файла выглядит примерно так media/files/user.id/123456.png, соответственно при смене id в url, можно получить файлы другого пользователя, что нежелательно.
Как обычно решается такое? Пока только придумал добавлять рандомную строку в url.
81 1713766
Как в словарях хранить имя в качестве ключа, а в качестве значения - число, которое можно менять? Значения в словарях вообще изменяемы?
82 1713767
>>13766
А в чем проблема? Хранишь и изменяешь.
83 1713768
>>13766
dict = {'name': 1}
Да, изменяемы.
dict['name'] = 2

Ты точно это хотел спросить?
84 1713775
>>12999
1)
from django.contrib.auth.mixins import LoginRequiredMixin
...
class WhateverView(LoginRequiredMixin, View):
...

2)
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
...
@method_decorator(login_required, name='dispatch')
class WhateverView(View):
...
85 1713787
Сап^_^, я Начинающий Геймдевелопер На Пайтон лаба в универе, необходимо расставить объекты в рандомных местах, использую randint со стандартным сидом, видимо, из-за этого объекты ставятся в +- одно место, т.к. вызываются почти одновременно?
В общем, как лучше решить эту проблему, чтобы объекты были расставлены адекватно, а не наслаивались друг на друга?
86 1713794
>>13760
Попробуй
https://github.com/edoburu/django-private-storage

Можно костылями сделать protected_serve. Что-то вроде

re_path(r'^{}(?P<path>.*)$'.format(settings.MEDIA_URL[1:]), protected_serve)

def protected_serve(request, path, document_root=settings.MEDIA_ROOT, show_indexes=False):
....obj = Модель.objects.get(file=path)
....if obj.user.pk != request.user.pk:
........return HttpResponseForbidden()

Но это очень плохая идея.
87 1713895
>>13482
Сохраняй данные в куках, если они не шибко запарные или важные
Без названия.jpg8 Кб, 201x251
88 1713899
>>12475
>>12504
Бамп няшечкой для привлечения внимания к острой проблеме
89 1713900
>>13899
тебе зачем? и что ты хочешь от нас узнать? Типовый решений дохуя от celery и airflow, до скрипта в кроне
90 1713901
>>13895
А меня пацаны за это пидором не назовут? А то потом будет такая кличка навсегда, мне батя говорил
91 1713902
>>13900
Не, мне уровнем пониже.
Типовое решение как послать уведомление куда-то, например в телегу. Есть какой-то модуль, про который погуглить, который так делает?
92 1713908
>>13902
https://mastergroosha.github.io/telegram-tutorial/docs/lesson_05/
вот только вместо check_new_post надо какое-то твое говно делать которое будет парсить
Значение переменной можешь просто кидать в файлик
93 1713912
Ебана, достаю я такой запрос во вью через request.POST.get("categories") - в этом параметре должен храниться список (Array) строк, дебаг через print об этом и говорит. Когда вытаскиваю его оттуда, в результате получается одна строка (последняя в этом списке). Это что за нах?
94 1713920
>>13912
Сцука, читаю про query_string и QueryDict. Если у этой хрени в значениях список, то она отдает всегда последний элемент, при обращении по ключу...
Вот нахера? В чем профит подобного? Хрен ли он не может мне сразу список отдать? json может, а это манда почему нет?
95 1713935
>>13482
1. Стандартный вариант создать под это дело модель, прикрутить ее к модели user https://docs.djangoproject.com/en/3.0/topics/auth/customizing/#extending-user
2. Это тебе скорее всего нужен моднявый UI kit, вроде primeNG, попробуй поискать bootstrap ui kit, если так привычнее будет. Есть даже вероятность, что найдешь ui kit специально под джангу.
>>13787
Я бы поделил всё поле на квадраты и с помощью randint выбирал квадрат из списка и размещал объект на нем. Правда, я не уверен, что это разрешено условиями задачи.
96 1713937
>>13920
Ты что-то накосячил.
Имя этого поля с []?
97 1713959
>>13935
Уже решил, добавив поля объектам и проверку на перекрытие. НО спс за овтет.
98 1713978
>>13937
В QueryDict (питоновский/джанговский объект из request.POST), согласно документации значения обрабатываются именно так: https://docs.djangoproject.com/en/3.0/ref/request-response/#django.http.QueryDict Чтобы достать список, надо юзать не get а getlist (опять же: нахуя?..)
А в куках блин вообще никаких Array нет, только string
Когда домой приду, скрины закину, чтоб яснее было
Image 689.png18 Кб, 620x386
99 1714055
Есть такой код. Поясните почему переменная word не видна внутри async def event_message(ctx)? Пишет Unresolved reference 'word'. Как правильно надо делать?
100 1714063
>>14055
Зачем тебе вообще инпут внутри бота? Ты что вообще сделать хочешь?
101 1714066
>>14063
Хочу сделать игру в угадай слово. Инпутом собственно слова и хотел забивать.

Ну так почему word не виден и как вообще можно сделать то что я хочу?
102 1714077
>>12001
бамп
103 1714085
>>14066
Ну меня есть подозрение, что если внутри def event_message(ctx) написать "global word", то оно возможно заработает. Но это как-то совсем убого.
>>12001
Здесь одни новички, ты лучше нас всё знаешь.
104 1714089
>>14085

>если внутри def event_message(ctx) написать "global word", то оно возможно заработает


Работает! И вроде даже делает что мне надо.

>Но это как-то совсем убого.


А это почему? Как можно еще решить мою задачу?
105 1714110
Почему так мало бэка на питоне в ДС?
106 1714112
>>14110
Слишком много ресурсов жрёт.
107 1714169
>>14110
Бэк равномерно размазан между платформами и много разве что джавы, а всякие там шарп, пыха, питон, нода борятся за свои 10-15% рынка
108 1714214
По каким книгам/видео лучше изучать паттерны проектирования на python?
109 1714219
>>14214

>паттерны проектирования


По любым понятным.

>на python?


Вся эта хуета к языку вообще не привязана, общеязыковые конструкции, так что лучше даже не ищи на питоне.
110 1714477
>>13908
Короче, не идёт.
https://pastebin.com/L2gB4nty
ВОт так примерно обстоят дела.

Потом нашел вот такую штуку
https://github.com/python-telegram-bot/python-telegram-bot
Говорят, что она даже лучше телебота, но я не могу найти для него никакого образца обычной отправки сообщения
Просто одно сообщение, там куча всякой непонятной хуерги.
111 1714484
>>14477
https://github.com/python-telegram-bot/python-telegram-bot/wiki/Code-snippets
Раздел general code snippets — post a text message message
Учись читать документацию, анонче.
112 1714503
>>14484
Не, ну я же не совсем валенок все же хоть немного уважаю сидящих здесь людей, и не читая и не попробовав разобраться самостоятельно, просто так спрашивать не буду
Там написана строка, которая позволяет отправлять сообщение
bot.send_message(chat_id=chat_id, text="I'm sorry Dave I'm afraid I can't do that.")
но описание (правильно ли сказать класса) bot нигде нет.
А еще что именно импортировать
А ещё нужен ли тот самый __name__ == '__main__'
15887905626960.jpg99 Кб, 1280x999
113 1714535
Анон, посоветуй разнообразных по сложности и смыслу задач на списки и строки, пожалуйста.
114 1714618
>>13959

>добавив поля объектам


Что ты там перекрыл? Прямо внутри User полей новых нафигачил?
115 1714629
щито делает оператор &= в питоне?
116 1714637
>>14629
например тут:

def compare(string1, string2):
..if len(string1) != len(string2):
....return False
..result = True
..for c1, c2 in zip(string1, string2):
....result &= c1 == c2

..return result
117 1714640
>>14637
Тоже самое, что x += 1, но булевые значения.
Т.е. в твоем коде True & True или True & False.
Хотя довольно норкоманское решение.
118 1714643
>>14640
Спасибо!
58358378353.png3 Кб, 885x23
119 1714653
>>13978
QueryDict, который ответственен за всю эту хрень
120 1714733
>>13693
вкат всегда возможен. хочешь жить - умей вертеться
121 1714751
>>12469
недавно начал учить змею, как раз начал с этой книги)
122 1714827
Антош. Почему aiopg'шная sqlalchemy не sqlalchemy вообще блять?
Декларативно объявить модель нельзя. Просто взять и кверисет получить нельзя. Какие то движки, какая то хуйня. У меня есть очень простой кусок кода на фласке, пытаюсь переписать на aiohttp, помоги мне антош..https://ru.stackoverflow.com/questions/1137172/Как-читать-и-писать-из-базы-с-aiopg-sa
123 1714902
Как смочь в эксепшены?
Вот этот подход, что везде можно натыкать эксепт вместо предварительных проверок как-то пиздец странен.
124 1714919
>>14827
Взять орм где это можно сделать, очевидно же.
125 1715019
Есть веб-страница, и на ней есть таблица, которую мне надо спарсить. Проблема в том, что на выходе я получаю только тэги, без данных между ними пик 2. Что я делаю не так?
126 1715022
>>15019
Пытаешься спарсить динамическую страничку как статичную
127 1715023
>>15022
Понял. Буду дальше изучать. Спасибо!
image.png113 Кб, 1366x768
128 1715031
Вопрос по скрипту:

1. Как сделать так, чтобы он реагировал не только на 'quit', но и на 'Quit', 'QUIT', 'QUit' и так далее? Я уже спрашивал про кейс-инсенситивы, но бля никак не могу усвоить как их решать. Мне нужно чтоб написанное сверялось с quit.lower(), но как хоть убей не пойму.

https://ideone.com/j9Zlv0
129 1715035
>>15031
if pizza.lower() == 'quit':
130 1715036
>>15031
pizza.lower() == 'quit' баран.
image.png115 Кб, 250x249
131 1715038
>>15035
>>15036
дДА БЛЯЯЯЯЯ
132 1715040
Такой вопрос - как отсортировать словарь по значению? Т.е. чтобы {AAA: 1, BBB: 5, CCC: 3} стало {BBB: 5, CCC: 3, AAA: 1}
133 1715044
>>15040
key=d.get
134 1715046
>>15023
>>15022
>>15019
Лишний раз подумываю, нужно ли мне вообще парсинг изучать
135 1715051
>>14214
Есть хороший сайт - рефакторинг гуру. Там и примеры на пистоне есть.
136 1715057
>>15044
А пример можешь написать?
137 1715058
Гоняю тоже понемногу парсинг через bs4... Как найти элементы(ы) класса zalupa, которые обязательно лежат внутри класса pizda?

<h2 class="pizda">
<div class="zalupa">content here</div>
</h2>
138 1715062
>>15058
soup = beautifulsoup(page)
pizda = soup.find("pizda")
zalupa = pizda.find("zalupa")
139 1715070
>>15062
Это если элемент 1... А если их несколько? Через цикл for гонять список от pizda = soup.findAll("pizda")? Неужели лучше способа нет?
140 1715075
>>15058
Есть вопрос попизже: как искать дата-атрибуты блэт?
Вот допустим есть у нас <ul data-creation="custom_style"> и че с ним делать? Как определить data-creation в поисковых критериях? Явно заданные дефис херится из-за синтаксиса
141 1715093
>>15040
Во первых нахуй тебе СЛОВАРЬ сортировать? элементы в словаре захешированны и доступ по ключу к ним за О(1)
>>15057
import collections

dickt = {'AAA': 1, 'BBB': 5, 'CCC': 3}

sorted_x = sorted(dickt.items(), key=lambda kv: kv[1],reverse=True)
sorted_dict = collections.OrderedDict(sorted_x)

> OrderedDict([('BBB', 5), ('CCC', 3), ('AAA', 1)])

Capture.PNG11 Кб, 420x334
142 1715097
>>15070
>>15062
>>15058
html = """<h2 class="pizda">
<div class="zalupa">content here</div>
</h2>"""
soup = BeautifulSoup(html,'html.parser')
soup.findAll('h2',{'class':'pizda'})
soup.findAll('h2',{'class':'pizda'})[0].text
143 1715098
>>15075
soup.findAll('ul',{'data-creation':'custom_style'})
144 1715122
>>15093

>> OrderedDict([('BBB', 5), ('CCC', 3), ('AAA', 1)])


Так и я могу. На выходе получается не словарь, а какая то хуйня вроде кортежа. А мне надо чтобы на выходе стало именно {BBB: 5, CCC: 3, AAA: 1} Можно ли так сделать?
145 1715126
>>15122
чем тебя эта хуйня вроде кортежа не устраивает? фунционирует точно так же как и словарь
146 1715127
>>15126

>чем тебя эта хуйня вроде кортежа не устраивает?


тем, что это уже не словарь.
d2.PNG37 Кб, 470x814
147 1715130
>>15127
А что тогда? Утиный тест проходит Если нечто выглядит как утка, плавает как утка и крякает как утка, то это, вероятно, и есть утка.
148 1715132
>>15127
dict() вызови.
Image 696.png10 Кб, 634x248
149 1715136
>>15130
>>15132
Мне надо чтобы итоговый результат при принте выглядел как ААА - 1, БББ - 2 и так далее. Я пока вот такую хуйню сотворил. Если бы можно было нормально сортировать словарь - было бы удобней.
150 1715137
>>15093
С какой-то версии ОрдередДикт уже не нужен, сделали чтоб в дефолтном сохранялся порядок.
151 1715141
>>15136
Параша какая-то. В чём суть задачи?
Image 717.png22 Кб, 656x507
152 1715145
>>15141
Это кусок бота для игры в крокодил. Полный текст игры выглядит вот так. Я имя победителя добавляю в словарь и присваиваю ему единицу. А потом сортирую словарь по убыванию и вывожу его в виде Имя - Очки.

Так что твой вариант выше не канает.
x.PNG7 Кб, 592x204
154 1715157
>>15145
d = {'AAA': 1, 'BBB': 5, 'CCC': 3,'DDD':9}

for k,v in sorted(d.items(),key=lambda x: x[1],reverse=True):
print(f"{k} - {v}")
155 1715162
>>15147
>>15157
Не очень понял что такое k v и k, d[k] и как они берутся
156 1715166
>>15162
k - key , v - value , ключ-значение короче, их отдаёт объект d.items() когда по нему итерируешься
157 1715170
>>15098
Годнота
158 1715172
>>15166
А как работает key=lambda kv: kv[1]? Сам использую, но смысла не понимаю как оно работает.
159 1715175
>>15097
Ты просто нашел все элементы h2.pizda, а что если этот заголовок не будет внутри себя содержать div.zalupa?
160 1715179
>>15172
Внутри питона, при сортировке, вызывается эта функция/лямбда вместо того чтобы просто взять элемент.

https://ideone.com/7Qq20n
1 - отсортированы как есть
2 - отсортированны в зависимости от квадрата числа
161 1715180
>>15172
dict.items выдает список туплей key,value, и элемент 1 это value, по которому и сортируется.
162 1715183
>>11609 (OP)
Анончики, выручайте
есть строка
time_now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
Она записывает в файл время в формате 2020-06-06 21:06:25
А теперь мне нужно достать из файла это время и сделать некоторые действия с текущим временем, которое записано уже указанной командой
Когда я вычитаю, он ожидаемо пишет мне, что нельзя вычитать из str str
Как можно преобразовать эти самые стр?
datetime(time_now) - тоже не преобразовывает, говорит, что нужен инт, а не str
163 1715184
>>15183
Должна быть обратная функция, которая так же по шаблону парсит.
Гуглите, Шура.
164 1715185
>>15183

> datetime.now().strftime('%Y-%m-%d %H:%M:%S')


datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
165 1715202
Как "вытащить" основное имя домена? Есть у нас ссылка https://2ch.hk/pr/res/1711609.html (М) как нам вытащить из нее https://2ch.hk ? Да, протокол тоже нужно, чтобы по этой ссылке потом можно было перейти
166 1715204
>>15202
urlparse
167 1715205
>>15202
m = re.match(r'(https?://[^/]+)', s)
m[1]
168 1715220
>>15175
если тебе див залупа надо то в чем проблема?
soup.findAll('div',{'class':'zalupa'})
169 1715243
Как найти текущий месяц?.. Знаю, что есть вот этот способ:

from datetime import datetime
today = datetime.today()
current_month = today.month

НО мне нужен месяц именно в строчном формате (здесь today.month выдаст число 6). Например сейчас я хочу чтобы вывелась строка "June". Мне че, словарь для этого делать? (выглядеть будет ппц ущербно)
170 1715244
>>15243
на самом деле мне надо получать лишь первые 3 английские буквы месяца (чтобы потом их передавать в api), но это уже частности, любой довен замутит срез строки
171 1715250
>>15243
today.strftime('%B')
gyubzyq87xmx.png149 Кб, 828x801
172 1715252
>>15244
За такое апи надо руки отрывать.
173 1715253
>>15244

> первые 3 английские


today.strftime('%b')
174 1715258
>>15250
>>15253
годно, спс

>>15252
)
175 1715277
>>15220
Потому что есть еще div'ы с классом zalupa, но вот они уже не лежат внутри h2 и нафик не сдались, лишь засирают результаты парсинга
176 1715280
>>15277
Также внутри h2 иногда может не оказаться этого div.zalupa, что снова поднасирает
177 1715281
>>15277
ну сделай сначала поиск h2 потом поиск залупы в h2, в чем сложности?
178 1715284
Для случаев сложне найти одиночную хуйню проще искать селекторами. Они мощнее и одинаковы везде.
image.png7 Кб, 634x282
179 1715287
>>15281
Просто в css-селекторах Белый Человек может задать условие, которое будет выполняться только если один селектор является дочерним для другого, как на пикриле да, такая нотация в питонухе не сработает и через findAll вернется пустой список
Я офигею, если узнаю что такого нет в bs4 и надо обязательно плодить циклы вручную
180 1715289
>>15287
ты бы лучше реальный кусок html кода выдал, а не тот искусственный пример, может бы и высрали тебе решение
изображение.png6 Кб, 239x225
181 1715492
Почему мой код сервера на pythonanywhere.com не работает и что за (зачем нужен) WSGI?

Там что-то про http написано - но мне оно не нужно, я хочу просто принять пакеты по udp со своим собственным протоколом общения, как если бы я у себя дома двойным кликом запустил py-файл. Это возможно на pythonanywhere.com?
182 1715496
>>15492
Вряд ли там открыто что-то кроме хттп(с) портов.
183 1715520
>>15496
И зачем это нужно, если оно ничего не может?
А где мне тогда проверить мою программу на 40 строк с общением по udp кроме локалхоста?
184 1715529
>>15520
Это как шаред хост для пхп, сайтики и любые скрипты выдающие текст может.
Ты можешь поднять виртуалку с бриджем, например. Будет как отдельный хост в локалочке.
image.png16 Кб, 1065x210
185 1715547
>>11609 (OP)
Блять я заебался. Как пофиксить эту ошибку?
186 1715573
>>15529
Но это же ничем не отличается от локалхоста. Я скорее хочу проверить как оно будет работать с маленькой скоростью соединения и пингом, каким образом будут теряться пакеты или перемешиваться их очерёдность, и всё в таком роде.
187 1715579
В Джанго у меня есть модель Group и модель Post (ForeignKey из Post канешн указывает на Group)
Как мне отфильтровать посты Post, группа которых называется определенным образом, скажем где Group.name == "Solid"?
Фильтрация через Q(group.name="Solid") не катит, т.к. точечная нотация там запрещена синтаксисом
188 1715591
>>15573
Ну не совсем.
Соеденение можно шатать этим https://wiki.linuxfoundation.org/networking/netem
189 1715593
>>15579
Post.objects.filter(group__name=="SOLID")
190 1715623
>>15593
Да, спс, все так
image.png3 Кб, 522x190
191 1715696
Как "подавить" ошибки в формах? У меня обычная django.forms.Form, в которой галочками надо выбрать сайты (Sites) и жмякнуть Confirm, чтобы данные отправились на бэк. В принципе можно вообще ничего не выбирать и нажать Confirm, на бэк просто отправится пустой список и это норм (никаких редиректов не происходит, страница не меняется). Но когда я ничего не выбираю, Джанго предупреждает меня (пикрил) что типо так не стоит делать. Как убрать это предупреждение?
1516769908121.png10 Кб, 899x195
192 1715735
Kivy как установить?
Копипастил всё с оф. сайта, а получил гору ошибок непонятных. Хотел им отписать, но там пикрилейтед.
194 1715737
>>15735
Я не ойтишник если что, просто для одной программы эта шляпа идёт в зависимостях.
195 1715933
Анон, подскажи, плиз, как можно решить задачу на Python.

Дано:
- tuple вида x =( 'A', 'B', 'A', 'C', 'A' ).
- список вида b = [ '1', '2' ]

Необходимо получить список tuple вида ( порядок tuple внутри списка неважен )
c = [ ( 'A1', 'B1', 'A1', 'C1', 'A1' ),
( 'A2', 'B1', 'A1', 'C1', 'A1' ),
( 'A1', 'B2', 'A1', 'C1', 'A1' ),
...
( 'A2', 'B2', 'A2', 'C2', 'A2' ) ]
196 1715948
>>15933
itertools.product
197 1715949
>>15948
itertools.product мне сделает:
C = [ ( 'A', '1' ),
( 'A', '2' ),
( 'B', '1' ),
( 'B', '2' ),
.......
( 'A', '2' )

А мне нужно

c = [ ( 'A1', 'B1', 'A1', 'C1', 'A1' ),
( 'A2', 'B1', 'A1', 'C1', 'A1' ),
( 'A1', 'B2', 'A1', 'C1', 'A1' ),
( 'A2', 'B2', 'A1', 'C1', 'A1' ),
.......
( 'A2', 'B2', 'A2', 'C2', 'A2' ) ]
198 1715950
>>15933

print("c = [ ( 'A1', 'B1', 'A1', 'C1', 'A1' ),
( 'A2', 'B1', 'A1', 'C1', 'A1' ),
( 'A1', 'B2', 'A1', 'C1', 'A1' ),
...
( 'A2', 'B2', 'A2', 'C2', 'A2' ) ]")
Break
199 1715953
>>15950
Не, мне print не нужен. Потом дальше массив используется в программе
200 1715964
>>15949
писать код за тебя мы не хотим. не можешь? читай книжки. Не умеешь читать? пиздуй нахуй отсюда.
201 1715968
>>15953
Прости, я до массивов не дошел, только закончил переменные и присвоение
202 1716001
гудгейм возвращает JSON дерьмо в виде вот такого текста - ['{"type":"message"', '"data":{"channel_id":"1168"', '"user_id":218096', '"user_name":"Mr.Freeeze"', '"user_rights":0', '"premium":0', '"premiums":[]', '"resubs":{}', '"staff":0', '"color":"simple"', '"icon":"none"', '"mobile":0', '"payments":0', '"paymentsAll":{"21264":1}', '"isStatus":0', '"message_id":1591539634552', '"timestamp":1591539635', '"text":":peka: а в сундуке тряпка и 2 монетки"}}']

Как мне это все дерьмо разобрать назад на отдельные элементы? Не имел до этого дело с JSON.
Capture.PNG45 Кб, 762x822
203 1716031
>>15949
Держи братик, наговнокодил для тебя.

import itertools
import pandas as pd
import numpy as np

x = ('A', 'B', 'A', 'C', 'A')
b = ['1', '2']
y = [''.join(x) for x in list(itertools.product(x,b))]
c = np.array(pd.DataFrame(list(itertools.permutations(y,5))).drop_duplicates()).tolist()
2020-06-07 205623.png61 Кб, 713x799
204 1716033
>>16001
Как же вы сэр охуели
205 1716034
Реально ли в моделях джанги вычленить значение из дескриптора-поля? Я хочу внутри одного из методов класса взять поле self.title и привести его к нижнему регистру: self.title.lower() но вот только lower() это операция со строками, а self.title это CharField (IDE говорит мне о том же)
206 1716038
>>16001

>Не имел до этого дело с JSON


Ну ты соня, тебя даже вчерашний шторм не разбудил...
207 1716040
>>16033
>>16038
Я только недавно вкатился в питон, до этого не был знаком с ЯП.
208 1716041
>>16040
И с гуглом не был знаком?
209 1716069
>>16041
Я почитал про json. Получается я неправильно написал что я хочу. Я использую готовый питоновский вебсокет. И он возвращает с сайта строку в виде что я выше писал. Это как я уже понял нихуя не json. И эту строку я уже сам разделил по ,. Но это получается коряво потому что некоторые параметры внутри себя имеют кучу запятых + само поле текст может иметь текст с пробелами.

Вопрос - как уже готовую строку разделить на отдельные элементы?
210 1716108
>>16069
Если из твоей хуйни убрать одинарные кавычки то будет обычный жсон. Хз, откуда оно там взялись и зачем.
211 1716142
>>11609 (OP)
Всем привет
Запилил первый осознанный класс, и тут возникли проблемы
Грубо говоря, есть класс, на входе у него одна переменная, остальные высчитываются по разных хитровыдуманным методом на основе значения этой самой переменной
Но у данного класса есть пара значений, которые он берет из другого файла, если грубо, то это прошлые значения некоторых его параметров.
Так как экземпляров класса много, я не могу вписать в def __init__(self, name): забор переменной из текстового файла, ведь там будут лежать переменные для нескольких экземпляров.
При этом если задать пустую переменную, а потом поменять, то просто так не поменять =((((
Нашел какой-то хитровыдуманный способ
https://qna.habr.com/q/301659
а есть что-то попроще, чтобы не пилить новый класс, который обджект и что-то там делает?
Или как лучше сделать? Придумать хитровыдуманный алгоритм, чтобы изх текстового файла брало именно то, что нам нужно?
212 1716145
>>15184
>>15185
Да, вчера докопался до истины, осознал. Спасибо!
213 1716157
>>16142
Была мысль объявить еременную global, но я объявляю переменные как self.permennaya, а self не объявить
214 1716158
>>16142
Я не совсем понял, но посмотри, что такое class attributes.
215 1716189
Зачем нужны сессии Джанго? Я юзаю обычные куки и все норм, в чем профит сессий перед куками?
216 1716196
>>16189
Сессия хранится на сервере, а кука в браузере, это разные вещи вообще.
Можешь в печеньке хранить айди сессии и получить персистенцию.
217 1716199
>>16196
Эм... а разве это не заебно - хранить данные сессий на серваке, забивая лишнюю память?
218 1716206
>>16199
Главный аспект тут - это безопасность. С клиента тебе может любая хуйня приходить, а на сервере всё лежит спокойно.
Плюс есть лимиты на куки, они нужны для небольших значений, не будешь с каждым запросом пересылать портянку.
Ну и т.д. Почитай какую-то теорию, это фундаментальный вопрос для любых веб-приложений.
219 1716209
>>16206
Хотя тот же ебанутый асп.нет всю свою хуйню пересылает в формах скрытыми полями, лол. Пришлось ещё поверху навешивать безопасность и прочее. Норкоманы.
1586724992982.jpg112 Кб, 1280x720
220 1716217
>>16199

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


Вообще похую.
221 1716228
>>16217
А как же это потом масштабировать?
222 1716232
>>16228
Хранится в БД и всё себе масштабируется.
223 1716233
В питоне есть счетчик вызова функции?
Dir'ом пользовался, ничего не нашел
224 1716238
>>16233
Лол, зачем?
Можно запилить декоратором.
225 1716253
>>16238
Я с декораторами не дружу, не получилось понять их.
Делаю проектик один, функция выдает элемент списка и в следующий раз выдает уже следующий

Есть решение через костыль (сделал класс) но мне кажется есть решение проще
Безымянный.png7 Кб, 677x268
226 1716259
>>16253
Код, так будет проще понять что я хочу, хех
unnamed.jpg18 Кб, 320x320
227 1716260
>>16253
Генератор же.
228 1716261
>>16260
Не подходит, нужно чтобы значения выводились в строгом порядке
229 1716263
>>16261
И в чем проблема?
230 1716266
Сука... Проект джанго работал на sqlite, в принципе запускался как надо, решил перенести на Postgres, залил настройки как надо (уже однажды ставил себе Postgres), только захотел сделать миграции и вот такая херня начала вылезать:
django.db.utils.ProgrammingError: ОШИБКА: отношение "news_signature" не существует

Ну что этой падле надо? Каких к черту отношений не существует? (news - имя приложения, signature - имя одной из моделей в нижнем регистре) Их и не должно существовать блять, я же только первую миграцию провожу. Бомбит сука
231 1716268
>>16263
не может же он.
232 1716269
>>16268
Почему не может-то?
233 1716270
>>16269
Элементы должны выводиться в строгом порядке
234 1716271
>>16269
будет не костыль тогда.

>>16270
так выводи их в строгом порядке.
235 1716272
>>16270
И генератор так не может, потому что что?
236 1716273
>>16270
Только попорядку
Обратился к функции - она отдала первый элемент
и так до последнего, где все начинается заново
237 1716277
>>16272
наверно потому что ему нужно постоянное напряжение. я так и не понял в чём проблема.
238 1716278
>>16271
Сейчас все работает, но решение мне не очень нравиться
self.i будет расти => память выделяться, не надо такого
239 1716280
>>16277
Я не понимаю до конца как работает генератор значит)
Я обращаюсь к фунции, она возвращает элемент первый массива, и так до конца массива где снова возвращается первый элемент

Задача стоит максимально непонятно, знаю
240 1716281
>>16278
что у тебя функция делает, давай показывай. будем думать, как генератор из неё бляднуть.
241 1716283
>>16281
Выше кинул скрин же
242 1716284
>>16233
Через замыкание (nonlocal), на основе замыкания собственно пилится декоратор и все норм
Есть еще решение дауна (но рабочее): передавать в функцию mutable значение по дефолту и использовать стремное поведение питона себе на пользу - сохранять в этот словарь или список свои значения, правда главное не накосячить и случайно не положить туда что-то снаружи
243 1716285
>>16266
Короче: убрал все файлы из проекта кроме models. Делал миграции для каждой модели отдельно. Вроде получилось. Хуй знает что это за залупа и как в принципе ее фиксить в крупных проджектах
244 1716287
>>16283
ах, тебе нужна функция с внутренним состоянием. понятно.
не проще ли будет извне по глобальной переменной перебирать список? решение не такое ебливое, но такое же по стрёмности.
245 1716288
>>16259

> return lst[self.i % len(lst) - 1]


Я нихуя не понял
246 1716289
>>16288
Заведи у себя на компе и поймешь
>>16287
Тоже самое получится же, а в декораторы я не умею
248 1716295
>>16292
Красава, ща попробую переделать у себя
249 1716298
>>16292
Ебать, спасибо нахой. Все работает как нужно.

Мда, ну я конечно и вафельный рожок
250 1716308
>>16158
>>16142
Докопался до истины. Как оказалось, для того, чтобы успешно изменять переменную класса конкретного экземпляра, сначала нужно создать этот конкретный экземпляр.
=(((((
251 1716309
>>16308
Што? Переменная класса одна на все инстансы, переменная инстанса у каждого своя. Что тебе надо-то?
252 1716330
Можно как-то при помощи фласка напрямую принтить текст в textarea, не используя JS? Пишу что-то вроде переводчика, где рядом две textarea, и ты в одну вводишь текст, сабмитишь, и в другой получаешь изменённый вариант. Погуглив, нашёл только с JS ответы.
253 1716333
>>16330
Суёшь в темплейт. В теймплете выводишь. В чём проблема-то?
254 1716343
>>16333
А так мультилайном можно принтить? И разве можно так напрямую в textarea отправлять? Если ты имеешь в виду "render_template("intex.html", textarea=my_text)".
255 1716344
>>16031
Спасибо большое!
Подскажи еще, плиз, как-то можно оставить только уникальные списки.
НО. Уникальность проверять без учета сортировки.

То есть, допустим список A = [ 'A1', 'B1', 'A1', 'B1' ] и список B = [ 'A1', 'A1', 'B1', 'B1'] будут считаться неуникальными, поскольку в них одни и те же элементы, пусть и в другом порядке.
А, например, списки A = [ 'A1', 'A1' ] и B = [ 'A1', 'A2' ] уникальными, так как в них различные элементы
256 1716350
>>16344
Ладно, это я заговнокодил сам.
еще раз спасибо
terrydavis250.jpg27 Кб, 250x375
257 1716354
Петян, такое дело. Скрипт разрастается, функции добавляются, чики-пуки. Думаю ради фана замутить TUI как в утилах нортона под DOS, да и через коммандную строку уже не комильфо передавать конфигурацию. Конфиг чисто по старинке в ini файл ебану, чтоб дух старой школы был. configparser тут как раз в стандартной либе пистона есть. Так вот, вопрос вообше про конфигурацию и всю хуйню. Думаю с сделать класс/объект (назовём его для краткости Иннокентий) с конфигурацией, при инициализации пусть там будут захаркачены настройки/константы/значения по умолчанию. Так же у Иннокентия будет задача при каждом старте программы проверять наличие ini конфига, загружать его, и обновлять из него свои внутренние значения. Сама же прога будет обращаться к Иннокентию чтоб взять какие-то настройки/константы/значения. Ещё программа (давай называть её Епифания) может будет просить переписывать эти значения у Иннокентия. Ну вообще я хуй его знает, будет просить или сама перепишет, тут уж как они договорятся, я вообще за равноправие в семье, если женщина делает всю работу. Это например если дойду до того, что в свой TUI впихну вкладочку, где опции можно пенять.

Ну как Петян, дело? Я тут походу MVC придумал, да?
258 1716357
>>16350
чёу, counter из collections нашёл?
259 1716426
>>16108
Пробую работать с json по примерам. Запускаю и пишет что json не имеет атрибута .load. Что не так?
260 1716427
>>16343

> имеешь в виду render_template


Да.
261 1716449
>>16426
Ты назвал файл жсон.пу и он лезет впереди системного при импорте.
262 1716482
>>16449
И правда, теперь работает. Но теперь у меня другой вопрос: я добавляю в файл со значениями через : значения как в моем посте вот тут >>16001, но получаю ошибку, что ожидалась запятая.

Почему у меня такой формат не канает? В посте выше все значения также через двоеточия были.
263 1716487
>>16482
Я хз, что у тебя там за значения. Попробуй тут проверить http://json.parser.online.fr/
Screenshot2020-06-08-14-51-55-825com.opera.browser.jpg77 Кб, 1080x627
264 1716537
>>16487
Тоже выдает ошибку в месте где я значение после двоеточия добавил.
265 1716544
>>16537
Так а хули у тебя там квадратные скобки? Это для массивов. key-value с фигурными.
266 1716546
>>16537
погугли что такое json и почему внутри квадратных скобок не мб двоеточия
267 1716547
аноны, мне одному кажется, что нюфани в край охуели?
268 1716553
>>11609 (OP)
Есть скрипт, проверяющий сотню тысяч строк данных на предмет валидности, необходимо записывать лог по каждой строке (номер строки и результат: success или fail), лог надо херачить во внешний файл (но можно и бд, мне похрену) csv или txt
Как это сделать наиболее производительно? Запись в файл либо вывод на экран отнимают время и ресурсы CPU, как "распаралелить" сами вычисления и запись данных?
269 1716556
>>16553
В файлах есть буферизация, не ссы.
270 1716563
Главное правило любого pr-треда: не постить syntax errors с просьбой помощи
Один хрен где у тебя этот error: sql, питонух, жс или лисп. Он говорит о том, что ты не знаешь синтаксиса языка, который юзаешь. Поэтому не надо плез действовать на нервы людям, юзай иде с помощью в синтаксисе и учи язык
271 1716581
>>16556
Иная ситуация: у нас постоянно работает некий скрипт, проверяющий результаты поступающих на вход строк и записывающий результат в бд (либо отсылающий их на сторонний серв через REST), как замутить асинхронную либо параллельную обработку данных?
272 1716594
>>16581
Основной скрипт принимает и складывает в очередь, остальные кушоют из нее и шлют куда надо.
273 1716601
>>16581
Хм, кстати, а что это за зашкварная херня, что после отсылки request я обязательно должен тратить время и ждать response? Может мне похеру, дошли данные или нет? Как не получать ответов и продолжить исполнение скрипта?
274 1716610
>>16594
На веб-сервере только как это будет выглядеть интересно... flask или django потянут такое? (я других фреймворков не знаю прост) Они оба синхронные по своей природе а с очередями там я не особо знаком
275 1716614
>>16610
celery
276 1716628
>>16601
>>16601
первая ссылка в гугле
https://stackoverflow.com/questions/27021440/python-requests-dont-wait-for-request-to-finish

или если асинх, то asyncio.ensure_task

или гугли udp

или открывай руками сокет и сам туда ебашь
277 1716666
>>16280
itertools.cycle
278 1716702
Аноны, есть метод в Вьюсете DRF (пик1), пытаюсь написать тест для него (пик2), но получаю, что доступ к методу мне закрыт:
{'detail': ErrorDetail(string='You do not have permission to perform this action.', code='permission_denied')}
Хотя я же делаю аутентификацию, и изменяю пользователя, созданного сетапе и на это разрешение должно быть.
279 1716743
У меня есть файл с куками, мне нужно зайти через эти куки на сайт. Как мне это сделать, анон, выручай
280 1716755
>>16743
А в чем проблема? Значения у тебя есть, добавляешь их в запросы.
281 1716756
>>16755
Спасибо. Недавно вкатился и поставил такую задачу себе, но инфы не нашел нигде
282 1716767
>>16702
Пробовал в тесте создавать токен, а не получать?
token = Token.objects.create(user=self.user)
283 1716770
>>16767
Токен создается при создании пользователя с помощью триггера
284 1716772
>>16770
В том смысле что токен там точно лежит
285 1716785
У меня в веб-приложухе на джанго периодически отправляются запросы к сторонним серверам, которые могут вернуть исключения или зашкварные response_code вроде 429, 404 и т.п. мне нужно в таком случае как-то оповещать об этом админа (меня). В той же джанго есть вроде как способ отправлять email, но вот незадача: можно "собрать" дохрена подобных ошибок разом и по итогу почтовый ящик будет засран всяким говном. Че делать?
286 1716798
>>16755
Можешь, пожалуйста, написать пример. Мне тоже нужно такое.
image.png145 Кб, 1366x768
287 1716800
Есть такой вот скрипт. Я хочу добавить while цикл, чтоб он просил меня ввести возраст пока я не введу стоп-слово. Мой цикл не работает - он бесконечный.

И я не могу добавить проверку age.lower() == 'quit'. Выскакивает ошибка AttributeError: 'int' object has no attribute 'lower'. Но мне то нужно чтоб если ввелись цифры, то они должны стать не str, а int, то есть на цифры нужно среагировать как на цифры, а на слово как на слово.

https://ideone.com/u50pgm
288 1716808
>>16800
Напиши while True or age == "quit'. В чем проблема?
289 1716809
>>16808
!= конечно же
290 1716815
>>16808
В одной строке писать? Он выдает EOL while scanning string literal.
291 1716818
>>16815
Это ты, видимо, в stdin ничего не засунул. https://ideone.com/4bfBms
292 1716821
>>16818
Объясни плиз, почему у меня был бесконечный цикл, а у тебя нет.
293 1716824
>>16798
Ну для того же requests
s = requests.Session()
s.cookies.update(ck)
В ck словарь с печеньками.
294 1716827
>>16821
У тебя инпут был вне цикла. Ты один раз вводил значение в age (в первой строке), а потом это значение проверял по кругу в цикле while. В итоге у тебя всего два варианта: либо age == 'quit' и ты сразу выходишь из цикла, либо ты бесконечно проверяешь age и живешь в проклятом мире, который сам же и создал.
unstoppable.PNG51 Кб, 1275x763
295 1716848
>>16821
Можешь попробовать еще вот сюда зайти: http://www.pythontutor.com/visualize.html , ввести свой код, нажать кнопочку "visualize execution" и пошагово смотреть что там у тебя происходит.
296 1716868
>>16196
Хм, блять, поставил я такой себе сессии вместо куков понимаешь ли и теперь когда юзер разлогинивается, данные теряются нах. Куки-то в браузере хранились и поэтому после повторного логина данные никуда не девались
Это фишка сессий такая? Долговременное хранение данных в принципе невозможно? Кукам я сам выставлял время жизни
297 1716884
>>16848
То же самое можно же через брейк поинты делать, зачем левый сайт?
298 1716887
>>16868
Ну если разлогинивается, то теряются. Если не разлогинивается, то не теряются, лол. Это настраиваемо.
Для постоянных данных есть БД, ты получашь нужные записи при логине и можешь настроить сессию.
299 1716892
>>16884
Чтобы не объяснять, что такое брейкпойнты
300 1716893
>>16887
Вообще, я тебе рекомендую прочитать какую-то книжку именно по вебдеву, там все эти процессы и подходы поясняются, потому что они уже давно изучены и обкатаны и в общем не меняются.
Ещё сразу же полезно читнуть литературку по нападению-защите на веб-приложения, это тоже очень многое проясняет.
301 1716894
>>16892
>>16884
Я знаю, что такое брейкпоинты, просто у меня пока настолько простенькие скрипты, что ни разу не приходилось ими пользоваться.
302 1716907
Есть тут сисадмины, которым реально пригодился питон? Чё с ним делаете?
303 1716910
>>16907
Душим.
304 1716915
>>16894
Но я-то не знал, что ты знаешь. Поэтому решил, что так тебе будет проще и вопросов меньше
305 1716919
>>16915
Не-не, я ж без претензии, тебе больше спасибо за ответы и сайт годный. Я только начал учить while цикл и плохо понимаю как он работает.
306 1716923
>>16907
Сисадмины? Че?
Питон язык для веб-приложений, а не веб серверов лол. Если и юзается админом то только для облегчения доступа к сети, вместо десятка curl-ов или nmap-а из терминала
307 1716959
>>16923
ansible
308 1717000
Как обратиться к элементу в словаре, который находится внутри другого словаря? Например есть:

{"type":"string","data":{"someshit": 123, "anothershit": 456}}

Как получить значения someshit и anothershit?
309 1717009
>>17000
x = название твоего словаря

print(x[type][someshit])
310 1717010
>>17009
тьфу, не type, а data конечно. Короче сперва ключ, в котором сидит другой словарь и сразу ключ следующего словаря.
311 1717016
>>17009
>>17010
А почему ошибка string indices must be integers может вылезать?
312 1717020
>>17016
потому что string indicies не integers
313 1717027
>>17020
Логично. Но почему когда я делаю это на тестовой строке(1) - все получается. А когда делаю тоже самое на реальных сообщениях(2) из чата - получается ошибка string indices must be integers?
314 1717038
>>17027
ты уверен что на втором скрине у string = message тип dict?
315 1717044
>>17038
Строка слева - это то что я получаю в message делая print.

Сделал chat_string = json.loads(message), а остальное оставил без изменений и заработало. Не понял в чем разница между message и json.loads(message)
316 1717046
>>17044
разница между строкой и словарем примерно как между твоей шлюхой мамашей и арбузом
317 1717069
>>17046
Сходи нахуй. Делаю print обоих и получаю:

{"type":"channel_counters","data"{"channel_id":"5","clients_in_channel":"735","users_in_channel":507}}

{'type': 'channel_counters', 'data': {'channel_id': '5', 'clients_in_channel': '735', 'users_in_channel': 507}}

В обоих вариантах словари, разница лишь в форматировании - в одинарных или двойных кавычках у элементов и пробелах после запятых.
318 1717073
>>17069
Блядь. Двоеточие после data в первой строке это я случайно затер. Строки абсолютно одинаковые.
319 1717074
>>17073
Говорят типы разные
Он делает принт
320 1717075
>>17074
Так я вывожу содержимое переменных, что не так?
321 1717078
>>17074
>>17075
Проверил типы. У обоих
<class 'str'>
<class 'str'>
322 1717079
>>17075
ну значит json.loads просто меняет кавычки
323 1717080
>>17078
И как ты типы проверил?)
324 1717083
>>17079
И что меняется? От типа кавычек зависит что-ли вылезит ошибка string indices must be integers или нет? Хуита какая-то.

>>17080
Через type. Что не так?
image.png11 Кб, 802x168
325 1717084
>>17078

>Проверил типы. У обоих


><class 'str'>


><class 'str'>


Нет.
90107e80b038d5ddfb77d3c4e3b5305e.jpg31 Кб, 500x370
326 1717088
327 1717089
>>17088
Ясно, съеби.
15916345633591.png23 Кб, 418x205
328 1717094
>>17089
ты ток не плачь
освоишь ты свое прогромирооне
329 1717098
>>17069
ебать ты тупой. то что ты там принтишь, никак не должно тебя ебать, в __repr__ хоть что можно засунуть.
330 1717127
>>11609 (OP)
Всем добра! Пустяковый вопрос (как мне кажется) (для матерых питонистов точно)
https://pastebin.com/SJEEeBBB
331 1717130
>>17127
В лист суй.
332 1717131
>>17127
Не просто создавай экземпляр класса, а добавляй в лист.
333 1717135
>>17130
>>17131
эээээээээ?

ушел гуглить
334 1717136
>>17135
cs = []

for ...:
cs.append(Class(...))

for c in cs:
c.func1()
c.func2()
335 1717138
>>17136
ебать как ты пробелы поставил вначале?

for i in range(10):
cs.apppend()
336 1717139
>>17127
Лучше напиши, что вообще препдологается сделать, а не как.
А то ты явно переусложняешь с этими классами.
337 1717164
>>17138
Как в трифорсе, nbsp. Во второй части сожралось почему-то (или забыл)
338 1717173
>>17164
благодарю
339 1717224
Приветы
А где читать/смотреть мануалы, как делать боевые бекенд штуки, если ты вкатыш?
Иными словами, меня интересует архитектура и использование паттернов проектирования наверное
Вот я хочу склепать асинк веб приложение (групповой чятик) с минимальным кол-вом тупого копипаста сниппетов в целях обучения
Я понимаю, что мне как минимум нужна бдшка, слой логики для работы с ней, хттп сервер
К примеру, я выбрал sanic + gino + какой-то менеджер задач + што-то ещё
Но дело в том, что во в гитхабах этих либ есть только узкие примеры, демонстрирующие их конкретные методы
А как это все собрать в полноценное приложение и чтобы оно не выглядело пиздец вырвиглазно, немного непонятно..
340 1717233
>>17224
Если вкатыш, то надо забыть про асинк и чятики, потому что технологии не самые приятные, лучше напиши банально и синхронно с нуля какой-нибудь круд с админкой, регистрацией, авторизацией, подтягиванием по крону консольной командой инфы в бд, и т.д, очередью для чего-то
.JPG54 Кб, 1143x580
341 1717234
Почему код на пикрелейтед возвращает html файл, а не txt? При этом, если скачивать в мозилле, то сначала предлагает сохранить как html, но записывает на диск как txt, а если в хроме скачивать, то прямо в html и сохраняет.
Что-то не так с хедерами?
342 1717236
>>17234
Отбой.
Нужно было 'Content-Type': 'text' добавить.
images.jpeg7 Кб, 221x228
343 1717260
Петян, а накидай годных тулз/программ на питоне для коммандной строки, которые используют конфигурационные файлы для своих нужд. Но так, чтобы код был открытый, красивый и лаконичный. Мне посмотреть, поковырять.
344 1717267
>>17094
>>17098
Хули вы такие агрессивные то?
345 1717271
>>17267
прааасти, но ты перрррвый начал буксовать и быковать
346 1717274
>>17271
Нихуя, ты там боевые картиночки постить начал. Надо адекватней реагировать на вопросы новичков
347 1717278
Мне надо пересылать информацию между двумя разными программамм на питоне. С помощью чего это лучше всего сделать?
348 1717280
349 1717590
Сап, подскажите, кроме книг, есть ресурсы по типу learn.javascript только для Питона ?
350 1717664
>>17590
Вот пара мурзилок на русском:
https://pythonworld.ru/
https://metanit.com/python/
за ООП базар 351 1717717
есть двойное наследование и продукт его любви c, упрощённые пример:

class A:
foo = "foo"
class B:
bar = "bar"
class A:
baz = "baz"

c = C()

можно ли c кастовать обратно в А? допустим, мне в одном месте нужна будет только та хуйня, что в c привнёс класс A.
352 1717719
>>17717
Чет у тебя код не соответствует вопросу.

>можно ли c кастовать обратно в А?


Можно. Если там вообще под капотом кастинг происходит, а не утиная проверка.
изображение.png57 Кб, 792x783
353 1717720
https://medium.com/nuances-of-programming/обнаружение-объектов-с-10-строчками-кода-953bd0e22a2
Товарищи, тут ссылка с простым распознаванием. Можете запустить у себя?
У меня куча какой-то хуйни лезет и все, и не пойму почему.
Я вроде все пипнул, что требовалось.

Помогите пожалуйста.
354 1717737
>>17719
ну мне надо будет что-то такое, пишу псевдокод:

> c = C()


> c.foo = "dicks"


> a = (A) c


> a.foo


'dicks'

> a.__dir__()


[..., 'foo', ...]

а так, это скорей всего XY-проблема, вы мне сейчас насуёте лучших решений если начну рассказывать зачем мне это, пока не рискну это делать.
355 1717749
Бля челы, решил тут обмазаться вскодом вместо пичарма и чет сразу же обосрался
Линтер вроде успешно подключился, а вот форматтер как-то не совсем
Почему может не работать?
Точнее оно работает, но явно не так, как должно
Допустим, вот этот фрагмент никак не форматируется, хотя на демо сайте yapf работает, как нужно.
Короче блин, как прикрутить исправления кода в духе пичарма?
1591717180676.jpg134 Кб, 720x832
356 1717772
Хоть кто-нибудь итт смог на начальные позиции устроиться?
357 1717825
>>17772
перл и смузи, будешь рабом, беги
1511189669157422948.png153 Кб, 700x525
358 1717851
>>17136
Вчера забыл сказать спасибо.
Вот, собственно.
Картинка для выражения эмоций.
Screenshot 2020-06-09 at 18.46.10.png34 Кб, 443x182
359 1717852
Нужно экспертное мнение гуру джанги. Возможно ли запилить кастомное поле в модели, которое сможет хранить два строковых значения и фильтроваться по любому из них? Про ArrayField я в курсе, но с ним надо весь проект перелопачивать и заменять user_id на user_id__icontains. Надеюсь наебать систему кастомным полем.
360 1717981
Применимы ли принципы SOLID питоне?

Смотрю вроде на примерах пока все, ну кроме разделения интерфейсов наверное, кажется лютым капитанством.
Когда смотришь антипримеры как делать не стоит - вообще не понимаешь каким надо быть дебилом что бы так писать.
Вроде и так понятно что надо делать так.
361 1717992
>>17981
Да, применимы
362 1717994
>>17981
А кажется потому, что ресурсы, по которым все учатся, обычно следуют как раз SOLID. SOLID - это не новое изобретение, которому нужно учиться отдельно, а вполне себе самые общие принципы современного ООП. И их по ходу дела изучаешь, даже не зная, что это так называется.
363 1717995
>>17772

>сперл/пиздон


>системное программирование


>помешанный на коде специализд за смузи


ебать комбо
364 1717998
>>17992
Есть какой-то реальный пример применения последнего принципа? В джанге какой-нибудь возможно? Везде нахожу только совсем игрушечные примеры, не укладывается в голове как это применять.
365 1718001
>>17981
SOLID - это тупо полиморфизм и здравый смысл.
С динамической типизацией интерфейсов нет.
Реализуешь сразу метод в классе.
Если только с макаками работаешь, то придется запиливать пустой класс, который бросается исключениями, если не реализовать методы.
366 1718002
>>17998
2 Scoops of Django годная книга по best practise
Но насчет интерфейсов ебать себе мозги лишний раз не стоит хотя в 3.9 таки допиливают эту хрень
367 1718003
>>17852
Можно
Но надо штудировать доки Джанги и возможно Postgres. Там большая мозгоебля с правильной имплементацией кастомных полей
368 1718005
>>18001
Можно ещё юзать это:
https://docs.python.org/3/library/abc.html
369 1718006
>>17852
Хз правильно ли так делать, но можешь сделать поле ArrayField, затем привязать к классу кастомный менеджер модели, в котором перепилить метод get. Он будет реализовывать icontains внутри себя, чтобы не заменять это везде в проекте.
370 1718011
>>18002
>>18001
Я просто буду устраиваться на работу снова в ближайшее время, вот хочу знать что отвечать на собеседовании если спросят про солид и как это применяется именно в питоне
371 1718012
>>18003
Чувствую, что кроличья нора слишком глубока окажется.

>>18006
О, про менеджеры я как-то и забыл, кстати. Должно сработать, я думаю. Тут правда еще вопрос, можно ли индексировать ArrayField и будет ли эта схема такой же быстрой, как простой CharfField с db_index=True, но это потом бенчмарками померяю.
372 1718016
>>18011
Сколько уже питон изучаешь? Пет-проект намутил?
373 1718021
>>18016
2 года работал бэкендером на питоне, но о таких вещах как solid даже не задумывался. Сейчас вникаю во все это, и кажется что интуитивно соблюдал все это, кроме инверсии зависимостей. Ее пока не могу постигнуть. Вроде все очень просто, но как и зачем это делается именно в питоне не понимаю.
374 1718041
>>17720
Запустил всё работает, не лезь в датасаенс оно тебя сожрет дурак
https://colab.research.google.com/drive/1Rgn5jQwBFXpm42jfMG8sUEsd0liksoVA?usp=sharing
375 1718043
>>18021
Какая ЗП была?
376 1718046
>>17852
Звучит как XY Problem. Какая проблема решается? Если значения только два, то их нужно хранить в разных полях. Если нужно, чтобы пара была уникальна, их можно объединить в композитный ключ.

Например, https://stackoverflow.com/questions/28712848/composite-primary-key-in-django

Если значений много, то только отдельная таблица.
377 1718054
>>18046
Там немного ебланская система, где у всех юзеров есть уникальные в пределах отдельной Txxxxx команды айдишники вида Uxxxxx и у некоторых юзеров глобально уникальные айдишники вида Wxxxxx. Т.е. однозначно юзера идентифицировать можно по паре Txxxxx + Uxxxxx либо по одному Wxxxxx, если он у него есть. Первая часть с T + U реализована, теперь надо добавить поддержку W. Желательно так, чтобы не переделывать весь проект. В связи с чем я хотел бы сделать поле, чтобы кверисету было все равно U или W айдишник ему передали, он сам внутри разберется, как искать.
378 1718066
>>18011
идёшь на собеседование - заеби своего оппонента уточняющими вопросами на его кукарёхи. во-первых, сойдёшь за умного, во-вторых подчеркнёшь ничтожество его ёбнутые вопросы. пример:

ХУЙ: знаком ли вам solid и то, как эти принципы используются в питоне?
ТЫ : а для чего вам нужны эти принципы и как их используют у вас?
ХУЙ: да я сам не знаю, вот ищу кого, кто бы мне подсказал.
ТЫ : крайне вероятно, что с вашими маленькими проектами он вам нахуй не нужен. солид красивый концепт на бумажке, но на практике всё выходит, как выходит. простите блять за мат.
ХУЙ: но в книге про агильное программирование...
ТЫ : а я ебашу KISS расрашенным в стиле американской группы.
ХУЙ: а причём тут американская группа?
ТЫ : а причём тут агильное программирование?
ХУЙ: ладно. может квиксорт на листочке набросаете?
ТЫ: а вы синтактический анализ и интерпретацию тоже на листочке будете делать? зачем вам квиксорт? используете часто, но не нагуглили его? вас чем-то не устраивает встроенный тимсорт в питоне?
ХУЙ: нет.
ТЫ : тогда почему вы спрашиваете про квиксорт?
ХУЙ: я вижу, как-то не задалось у нас.
ТЫ : у вас часто так?
379 1718086
>>18066
Я обычно в ответ на тупые вопросы сразу в лоб спрашиваю, сколько у собеседующего см член, если это кун. Пока он тупит, достаю смартфон и показываю фотки своего 21 см бойца. Чухан начинает краснеть и понимать, что проигрывает, тут-то я и занимаю доминирующее положэение
380 1718089
>>18086
А если тян, спрашиваешь глубину?
381 1718091
>>18041
Можно я тебе хуй отсосу? Хоть у меня все равно ничего не работает, но хоть инструкция к действию есть.
На винде просто ад и ужас и пакет не хочет устанавливаться вообще никак и ошибки непонятные, на распбиан ВМ версия Тенсорфлоу не хочет подниматься выше 0.11, но ошибка более осмысленная.
Видимо версия ТФ слишком маленькая, и чего-то не хватает. Что-то он не может найти.

(По факту мне нужен реалтаймовое распознавание машин и людей, с выводом всего говна в консоль.(Или в файл))
(Я сюда уже обращался с https://pastebin.com/B9JNBhuW таким говном, сказали что тут можно выводить label. Но выводит оно все по очереди, а не все сразу. И распознавание медленное, камера дерганная) Подумал что вот этот код с 10 строчками можно будет допилить до реалтайма, Он вроде как считается быстрым распознаванием, и выводит все.
Но чет хуйня.
382 1718093
>>18091
Рекомендуют анаконду под дата сатанизьмы, млы и прочую хуйню. Типа там умные люди порешали все зависимости.
383 1718096
>>18093
Благодарствую.
Качаю, сейчас попробую. Может там заработает.
384 1718097
>>18066

> SOLID


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


суть питонистов
изображение.png77 Кб, 871x340
385 1718100
Модуля нет, но он есть. Великолепно просто. Я бомбом.
Сложно, сложно, нихуя не понятно.
386 1718115
>>18100
Он у тебя из индексированных файлов был вытащен. А его зависимости у тебя уже установлены поэтому requirement already satisfied
387 1718117
>>18054
С точки зрения строения БД, ни U (без T), ни W как главные ключи использовать нельзя. Композитный (T, U) можно, а W, я так понимаю, всегда опциональный.

В любом случае, должно быть два индекса - по (T, U) и по W. Соответственно, два-три поля (например, tid , userid и globaluserid) в модели.

Из приятных новостей, можно добавить новый Lookup наподобие iexact: https://docs.djangoproject.com/en/3.0/howto/custom-lookups/

С ним как минимум можно добавить возможность писать .get(userid with globals='W01').
Не уверен, но вероятно возможно добавить таким образом псевдо-поле. Т. е. у тебя есть поля localuserid и globaluserid, а искать все еще можно по .get(userid all types='W01').

Но это все страшно как-то.
388 1718118
>>18115
Не понял.
Да в любом случае, он не видит.
Я пипаю его, он пипается, но всем насрать. Код не видит.
389 1718121
Сейчас надо бы перенести проект на Убунту (потому что на винде redis-server работает через пизду), так что встал вопрос: куда и как установить Питон?.. В Винде у меня 3 версии Питона: 2.7, 3.7 и 3.8 - каждый интерпретатор лежит в своей папке в C:\Program Files, а далее по надобности создается среда venv для проекта
Как такое заделать в линухе? apt install python просто установит самую последнюю версию дистрибутива, обновив предыдущую же
390 1718122
>>18121
Как минимум Питон и Питон 3 живут отдельно.
Питон не обновится до Питон3
391 1718125
>>18121
Ну питон2 и питон3 живут одновременно, а вот с 3.7 + 3.8 легко и просто не получится. Ты уверен, что они оба тебе нужны? Там же вроде все обратно совместимо.
392 1718133
393 1718135
>>18121
sudo apt install python3.7 python3.8 python2.7
Далее создаешь venv указывая
virtualenv -p python3.7 py37
394 1718144
>>18121
Смотря какую убунту будешь ставить. В 18.04 штатный питон 3.6, например.

Надо ставить специальный репозиторий, ищи по ключевым словам deadsnakes. Так ты можешь одновременно несколько разных питонов поставить.

Вызывать их будешь командой, например python3.8 proga.py

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

Свои папки тоже стоит создать, но уже для virtualenv.

Короче глянь на deadsnakes и ещё про виртуальные окружения, если вдруг с ними пока не работал, не знаю как на винде принято.
395 1718146
>>18121
Ставь анаконду.
sparre-7.jpg507 Кб, 1300x1300
396 1718184
Помоги, анон!
Внутри Фляги завёл глобальный словарь USERS, в USERS['username'] храню экземпляры юзеров, которые "онлайн". На каждом запросе имею объект USERS[session['username']] -> class User.
Да, мсье знает толк в извращениях и не хочет городить датацентр под редис ради пары десятков клиентов в день.
Так вот, на локальной машине всё просто замечательно, а у хостера эта глобальная несчадно уничтожается от запроса к запросу. Можно ли это как-то пофиксить? Или может есть более рациональный способ передавать экземпляр класса внутри сессии без использования глобальных переменных и всяких дачных овощей?
397 1718187
>>18184
Короче говоря, как нативными средствами сохранить и передать увесистые данные пользователя (в куки всё не влезет), идентифицируемого посредством сессии?
398 1718190
Наверное нужно пояснить, что такая поза нужна, чтобы пользователь мог генерить фоновый процесс и общаться с ним через пайп, который потеряется, если не сохранить объект, породивший процесс. Его я и сохраняю в глобалке.
То что я делаю вообще имеет смысл, или мне надо сделать перерыв и сходить на природу?
изображение.png171 Кб, 1920x1080
399 1718209
Что происходит?
Что это?
Почему нет imageai в анаконде и нужно устанавливать отдельно?

И почему так долго идет проверка каких-то конфликтов?
Какая-то лютая херня, уже час где-то идет.
400 1718213
>>18190
Чето сложно. Если совсем уж методами из коробки, то храни данные в sqlite. Если не совсем из коробки, то редис простой же. Или может хостер твой предоставляет какой-нибудь mysql бесплатно? Самостоятельные попытки что-нибудь собрать - в той или иной мере переизобретение изложенного выше. Вся инфраструктура веба расчитана на то, что процессы сервера можно без потерь уничтожать и пересоздавать. Идти против течения будет тяжело.
1483611828830.jpg159 Кб, 1080x1339
401 1718218
402 1718227
>>18218
Ну, я бы не страдал хуйней, если бы не руководитель учебного проекта.
Кококо, делайте распознавание, там за день можно сделать, сам давно занимался, но там легко, чо вы такие тупые, где результат, ну и так далее
Каквсигда.
403 1718233
>>18227
Какой курс? Это действительно легко, если есть хоть немного опыта.
404 1718238
>>18233
У меня нет мозгов, и я не занимался питоном, как таковым. Я чисто гуглом программирую.
Второй курс, при том что это мой долг, и со мной дрочат первокуры.
405 1718246
>>18238

>Я чисто гуглом программирую.


Если умеешь в гугл, то проблем быть не должно.

Конкретно по твоему вопросу - в репозитории анаконды есть далеко не все библиотеки. Если чего нет - ставь через pip. Через анаконду проще ставить библиотеки, с зависимостями не только на питоне, например Tensorflow, которому нужен cudnn. Для всего остального разницы нет.
406 1718251
>>18246

> Если чего нет - ставь через pip


Вроде если через пип, то устанавливает просто на питон.
И если вот так написать conda install -c powerai imageai как тут, то будут собственно конфликты.
Если conda install imageai то меня просто нахуй пошлют.
407 1718257
>>18251
Ставь прыщинукс
Потом
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py --user
export PATH=$PATH:$HOME/.local/bin в .bashrc
python3 -m venv my_cool_proj/.venv
cd my_cool_proj
source my_cool_proj/.venv/activate
pip instal al you need
408 1718258
>>18257

>python3 get-pip.py --user


>export PATH=$PATH:$HOME/.local/bin в .bashrc



можешь без этого
Это если хочешь глобально в хомяка ставить пакеты

pip install --user al you need
409 1718259
>>18258
Незабудь поставить
apt install build-essential python3-dev python3-distutils
410 1718260
>>18259

>Не забудь

411 1718262
>>18251

>Вроде если через пип, то устанавливает просто на питон.


Для начала активируй окружение созданное анакондой командой activate.

>И если вот так написать conda install -c powerai imageai как тут, то будут собственно конфликты.


Ты кроме этого ничего не ставил? Пересоздай заново окружение:

conda create -n temp python=3.7

Активируй его:

activate temp

И устанавливай библиотеку командой:

conda install -c powerai imageai

У меня все работает на винде, прыщи не нужны.
412 1718264
>>18258
>>18262

ПОЛУЧИЛОСЬ ГОСПОДИ ПОЛУЧИЛОСЬ ГОСПОДИ АЛЛИЛУЯ ДАЙ БОГ ВАМ ВСЕМ ЗДОРОВЬЯ.
Шоб деньги водились, и там тыры пыры.

Но прыщеблядикс не понадобился, хоть и есть расбиан на виртуалочке. От скуки клацнул pip без троечки, и установилось куды надобно.Удивительно, бладжд. Я довен.

Тэк, интересно, а можно источником засунуть камеру, хммммммм.
413 1718265
>>18264
Правда не знаю, варнинги какие-то лезли, хмммм. Хотя заработало.
414 1718271
Петян, к словарю можно как к объекту обращаться?

есть один класс. а есть один словарь, который генерируется. можно быриком собрать это дерьмо так, чтоб ключи словаря стали полями класса?
416 1718273
А что из себя представляет фуллстек сеньор-помидор питонист? Что ни вакансия на летнюю практику, то писать машинку. Это прикольная вещь, вот только там две с половиной либы юзать да яйца чесать во время прогона эпох. А для чего ещё питон активно используется, что ему трудно найти замену и где они "принят" стандартным языком в какой-либо сфере?
417 1718274
>>18272
ну я пока делаю так:

class belmando:
pass
bodyparts = {"arms": 2, "legs" : 2, "dicks": 1 }
b = belmondo()
for key, value in bodyparts.items():
b.__setattr__(key, value)

оно всё прекрасно и хорошо, но можно ж как-то слинковать,
чтоб при изменениях bodyparts менялись и поля, и наоборот.
хуй его знает, какой нить враппер повесить там, что при обращении
к полям, он сначала смотрел в словаре.
418 1718275
>>18273
Фулстеки помидорами не становятся. Помидор должен знать глубоко. Фулстек это обычный раб на галере. Питон там или пых, без разницы
419 1718276
>>18272
кстати спасибо за ссылку, вроде годно.
420 1718278
>>18274
Что-то ты какую-то хуйню творишь

https://pastebin.com/vnajwF6M
421 1718279
>>18278
блять, ну нахуя мне наследовать от словаря.
422 1718280
>>18279
Ну не насдедуй, закомпозь внутри
423 1718282
>>18280
ну я хуй его знает, как бы всё это хитро сделать. короче расклад такой, есть ini файл с конфигами, который может переписать пользователь. есть у меня внутри дефолтные значения, там просто для большей части оказалось легче comprehension их нагенерировать в словарь. моя хуета будет запускаться, создавать этот словарь, потом щупать конфиг на предмет переопределения и всё это будет сохраняться в бельмандо. в бельманде ещё пару констант, настроеек и прочего говна будет держать. своего рода модель чтоли или state. а уже остальные части будут дёргать бельманду для работы. годно?
424 1718323
Это нормально, что я искал за юниттесты, а в итоге передёрнул?
https://www.youtube.com/watch?v=1Lfv5tUGsn8
425 1718402
Поясните за сокеты. Есть 2 различные программы, перекидывание данных из одной в другую я хочу сделать через сокет. Данные передаются, но при этом стопорится выполнение всей остальной программы.

Как сделать чтобы выполнение шло параллельно? Что-то пробовал асинк, но нихуя не получилось.
sage 427 1718438
>>18402
Че пояснять? все сам понял. Делай асинк .
428 1718449
>>18282
Зачем тебе вообще щупать ini файл? При запуске программы забирай из него значения, пихай их в бельмондо. Если настройки можно изменять не только через ini, то все изменения передавай в бельмондо, а по завершению программы сохраняй все в ini. Тебе, по большом счету, для этого нужно в бельмондо два метода .load_from_ini, .save_to_ini. В .load_from_ini и твори свою магию со словарями и setattr
>>18402
https://asyncio.readthedocs.io/en/latest/tcp_echo.html
Берешь пример, проверяешь, если работает, то накручиваешь сверху своих хотелок.
429 1718465
>>18125
нихуя не совместимо, kivy под 3.8 не работает
430 1718470
>>18264
Камеру можно через open cv подключить, потом фреймы из камеры подаешь в сетку, сетка делает аутпут в отдельную картинку, этот файл крутишь на показ в бесконечном цикле, но фпс будет дико хуевым сразу говорю, реал тайма 30фпс не будет
431 1718501
Мне надо отправить пост-запрос на сайт, но он постоянно отказывает в доступе, мол запрос подозрительный. Юзер-агент в хидерах есть. Что ему может быть нужно и как это достать через браузер? Там запросы проходят и их можно смотреть, но я почти ничего в этом не понимаю.
Использовать селениум или что-то подобное не могу, нужно делать много таких запросов одновременно, а там браузер открывается на каждый.
432 1718506
>>18501
Может быть печенье, могут быть токены в заголовках.
Запрос подозрительный в каком смысле? Ололо, вы бот? Или 403 или
там ошибка какая-то?
433 1718523
>>18506
Скачал заголовки запроса и куки, тепепь просто ждёт и кидает эксепшон про истечение времени и закрытие соединения на той стороне.
Насчет подозрительности ничего не сказано, просто не нравится и всё. Возвращает код 200 и жсон, в нем эта строка.
434 1718532
>>18523
Ну хуй знает, надо смотреть.
435 1718547
>>18501
селениум можно запустить в headless режиме, тогда браузера ты не увидешь. и про много запросов ты наверно припезднул, много это несколько десятков тысяч в секунду, а тво сто это так, шутеечки.
436 1718551
>>18532
По сабмиту формы сайт делает три пост запроса, яндекс, гугл, и на внутреннюю страницу, которая и отдаёт жсон с ответом. Так вот, если перейти на это страницу самому по ссылке с параметрами, тоже кидает отказ.
На нужную мне страницу передаётся капча, хотя я ничего не заполнял. Капча каждый раз разная.
437 1718553
Так, запрос в яндекс -- это трекер, а вот в гугл сайт стучится за капчёй. И что с этим делать?
Уже начал ковырять селениум, но проблема в том, что у меня ноут, и не самый мощный, а запросов пара тысяч в секунду примерно.
438 1718555
>>18551
Если это рекапча, тогда понятно.
Она может быть невидима и спрашивать свои задачки только если ты подозрительный. Это хуевый вариант, но можно решить с помощью апи с обезьянками.
439 1718560
Я может чего-то не понимаю, но что сложного делать прекомпиляцию классов и функций до импортирования/исполнения модуля? Вот из одного класса А я вызываю конструктор другого класса В, однако ж в таком случае В обязан быть объявлен перед А. Типо логично да? Но вот с практической точки зрения профита никакого, лишь излишние траблы пограмизду. Это та же история как и с __future__.annotations без которого аннотации нереально запилить без предварительного объявления
440 1718568
>>18555
По сабмиту идёт вызов рекапчи через жабасрипт, это можно как-то фейкнуть или сделать самому?
441 1718570
>>18568
Насколько я знаю, нет надежного метода автоматического решения.
Да и если ты будешь много отправлять, она всё равно быстро начнет сыпать задачки.
442 1718575
Аноны, можно как-то передать доп инфу в Exception? Я в коде бросаю свой кастомный эксепшн, который представляет неверный status_code во время обращения к стороннему ресурсу (404 скажем). Мне бы во время объявления эксепшна как-то закинуть в него инфу об этом status_code, чтобы вышестоящий блок try/except смог его обработать и сохранить
Как такое мутить?
443 1718577
>>18575
Наследуешься от Exception и в конструкторе добавляешь свои кастомные хуитки.
444 1718604
>>18577
Заделал, вроде работает, но к этому идет сопутствующий вопрос: как выйти разом из множества функций? Пока вижу только вариант с броском эксепшна, возвращать None и потом проверять результат каждого вызова на None лишь чтобы самому сделать return None - зашкварная херня
445 1718611
>>18604

> Пока вижу только вариант с броском эксепшна


Так и рекомендуется.
446 1718613
>>18604

> Пока вижу только вариант с броском эксепшна


Так не рекомендуется.
447 1718639
>>12001
бамп вопросу
448 1718649
>>18604
Если у тебя нештатная ситуация - то для этого исключения и нужны.

А у тебя нештатная, раз ты проверяешь промежуточные функции на None и меняешь ветвь исполнения на этом основании.

Не рекомендуется базовые ветви исполнения завязывать на исключения. Условный пример - ты делаешь рекурсивный поиск по дереву, и как только находишь что тебе надо, так делаешь исключение.
449 1718820
Есть два массива, один является срезом второго:
a = [0, 1, 2, 0, 1, 2, 3, 4, 0, 4]
b = [1, 2, 3, 4]
Нужно вернуть смещение b по отношению к a. Есть что-то готовое, или костылить свой метод на index и проверках?
450 1718833
>>18820
Если надо за время O(len(a)), то самописное решение по аналогии с поиском подстроки.
451 1718904
Есть способ заставить писать логи модуля logging при помощи разных цветов - красным ошибки, желтым ворнинги и скажем синим инфо-сообщения?
452 1718923
Поделитесь историями, у кого на какой теме больше всего буксовало изучение питона, если такое было?
453 1719014
Анон у меня хуй не встает на ван Россума что делать?
454 1719018
>>18923
Асинхронка конечно.
455 1719021
>>18904
Я вот так извращался:
def say(i, text):

colors = [30, 32, 34, 35, 36, 93, 30, 32, 34, 35, 36, 93]
return log.info(f"\033[{colors}m Worker-{i} said: {text}")
Переделай под себя.
hernandez1.jpg48 Кб, 650x366
456 1719027
Есть ли хотя бы в теории какая-нибудь реализация декоратора не для функции, а для следующей строки, что бы там ни было, чтобы не городить
try:
a = 42/0
except:
return "хуй"

а вместо этого писать что-то вроде этого:
@exception("хуй")
a = 42/0
Круто же, ну! Реально это вообще?
457 1719031
>>19021
Сорян, индекс отвалился, colors конечно же:
return log.info(f"\033[{colors}m Worker-{i} said: {text}")

И это на линуксе, на винде не знаю, будет ли работать.
458 1719033
>>19031
Короче вакаба зачем-то режет индекс, сам найдёшь где он должен быть.
459 1719035
>>18820
Если они небольшие, то можно заджойнить и искать подстроки, а так да, циклы-проверочки.
460 1719061
>>19027
нет
461 1719103
Такой вопрос. Программа использует файлы из отдельной папки для своей работы. Иерархия такая - есть папка Программа, в ней 2 папки: папка Питон, в которой окружение питона и сама программа, и папка Данные, в которой различные файлы.

Как сделать чтобы путь сохранялся при переносе папки в другое место?
463 1719141
>>17772
Забыли дописать про зарплату в 30К
2EVxWd7d.jpg23 Кб, 385x367
464 1719156
Вот делаю я какой-то скрипт для работы с данными. Т.е. читаем файл, делаем ахалай-махалай и пишем новый файл.
Надо ли там ловить эксепшены с файлами? Я щитаю, упадет и заебись, всё понятно.
Надо ли пихать контекстные менеджеры и вообще закрывать файлы? Вот я понаоткрывал файлов и пишу в них по ходу работы. Потом в конце они сами отвалятся.
Видел, что пишут в структуры, а потом в конце высирают всё сразу с with. По-моему, это какая-то хуйня.
465 1719157
>>19156
Жопу тоже можно не подтирать, говно вылезло и заебись, вконце дня например всё равно мыться если, само все почистится. По-моему, вытирать жопу каждый раз это какая-то хуйня.
466 1719162
>>19157
А без криявляний?
Мне интересна практическая ценность, а не так нада, патамушта так нада.
467 1719177
>>19162
А ты для чего вообще прогаешь?

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

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

Ты, блеядь, программист или кто? Ты должен сам понимать, что тебе нужно в конкретной задаче.
468 1719179
А мне вот интересно, где должны обрабатываться исключения? В вызывающей функции или вызываемой?
Если в вызываемой, то она может закрысить важную инфу и передавать неверные данные, а если в родительской, то тогда пропадает принцип единой ответственности.
Как правильно делать?
469 1719184
>>19177
Да это всё понятно, мне интересны бест практисы, а не полтора простейших кейса из учебника.
470 1719185
>>19179
Тебе надо думать о принципах инкапсуляции и замкнутости.

Функция должна делать свою работу и максимально изолировать вызывающий контекст от ненужной информации и головной боли.

Что нужно и не нужно уже зависит от логики программы.

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

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

Потому что вызывающий код понятия не имеет, что ты там открываешь, в каком формате данные и т.п. Ему нужно получить результат или характер ошибки, если ошибка была.
471 1719188
>>19184
Смотри, как реализованы разные библиотеки и пакеты, которыми ты пользуешься. Просто снаружи, для тебя как для пользователя.

Общий принцип - любой поведение должно быть понятным и документированным.

Такой синтетический пример. Допустим тебе надо получить данные из какой-то структуры, сохранённой где-то.

Эти данные могут лежать в файле или в сети. Формат хранения может быть json, yml, xml, pickle, sqlite или ещё какой-нибудь. В функцию ты просто передаёшь имя, а по префексу-расширению делаешь выводы.

Тебе нужно или получить данные, или код ошибки. При этом для тебя ошибка может быть или вида "не удаётся считать источник", или "в источнике нет данных".

Разработчику не нужно знать о всём том лесе ошибок, которые могут возникнуть. Поэтому каждую ошибку ты обрабатываешь внутри, а наружу кидаешь итоговую, и снаружи ловишь исключения только одного-двух видов, вместо нескольких десятков. Такой общий подход.
472 1719190
>>19185
Спасибо. Получается функция должна ловить у себя исключения и при невозможности принять меры по этому поводу, возбуждать и возвращать новые, более понятные?

И ещё вопросик:
Метод класса должен изменять переменную класса и возвращать ошибку, или возвращать значение, которое уже вне его присваивается перменной класса?
473 1719197
>>19190

>Метод класса должен изменять переменную класса и возвращать ошибку, или возвращать значение, которое уже вне его присваивается перменной класса?


Тебе как разработчику решать, как удобнее.

Вообще общий принцип - данные должны быть или корректными, или их не быть вообще. Это критично для БД, файлов, сетевых пакетов и некоторых действий.

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

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

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

В общем тебе решать, в каких случаях как тебе удобнее. Может быть потом ты по своему сбойному объекту-файлу-базе может восстановить источник ошибки, например.
474 1719198
Аноны, поясните как применяется принцип инверсии зависимостей из solid в питоне? Там же нет интерфейсов, на которые нужно завязывать эти зависимости.
475 1719200
>>19198
утиная типизация
Protocol
Dependence Injection
476 1719223
>>19200
Dependency
медленнофикс
477 1719224
>>17772
У меня среди знакомых есть 3 истории успеха, где люди реально с нуля вкатывались и довольно быстро устраивались, правда там шарпист, явист и тестировщик. Я сосу хуй, я относительно недавно вкатился и знаний у меня реально не хватает, поэтому пока даже не бомбит.
478 1719225
>>19200
Получается, мы просто договариваемся (например, описываем в комментариях), что класс должен реализовывать такие-то методы и все?
479 1719229
>>19225
ты про Protocol не погуглил даже
480 1719244
>>19105
Правильно я понимаю что сделав вот так я получу путь к папке, в которой питоновский файл находится?

import os

my_path = os.getcwd()
my_dir = os.path.split(my_path)
my_dir = my_dir[0]

Я все правильно делаю?
481 1719251
>>19244
Нет, cwd это рабочая директория, она может быть другой при запуске.
Смотри __file__
482 1719267
>>19251
Так я планирую хранить файл питона в конкретной папке и запускать его всегда оттуда. Вот >>19103

Разве мой вариант выше не будет всегда работать?
483 1719269
>>11609 (OP)
Всем привет
Есть одна задача для души
Есть сложная функция, в которой есть х и у, известна сумма этих х и у, необходимо узнать, при каком соотношении этих xy будет получено максимальное значение.
Наверное, с этой задачей я сам как-то справился бы

Но задача несколько интереснее
Дальше речь про некоторую игру, так что кого смущает - не читайте
Есть сложная функция, описывающая урон персонажа в которой есть х и у, известна сумма этих х и у, а еще есть некоторое дерево талантов, которое влияет на эу самую формулу. Дерево по своей сути простое (просто меняет количество х, у или какой-то множитель формулы), но это именно дерево, т.е. некоторые таланты незлья взять, пока не взяты другие.
Подскажите, как оценить максимальное значение функции при заданных х,у и числе талантов?
Как вообще такое гуглить? Подскажите, в какую сторону смотреть. Наверняка есть какое-то типовое (хотя бы чуть-чуть) решение, чтобы хоть как-то сузить количество циклов
484 1719273
>>19267
Если запускать всегда оттуда, то будет, но можно и без такого условия.
485 1719284
>>19273
А как ещё можно запускать? Из консольки что-ли? А если через ярлык запускать .py файл - мой вариант все равно будет работать?
486 1719299
>>19284
Да, из консоли, по крону ещё.
Наверное, будет.
487 1719301
>>19284
Просто пропиши относительный путь, тебе же дали ссылку.
Из "Питон" в "Данные" в твоем случае путь будет "../Данные"
488 1719303
>>19299
А если сделать ярлык, который ссылается на батник, который запускает .py и находится в той же папке?
489 1719305
>>19269
Пока что пришла мысль сделать перебор всех возможных талантов, просчитывать для них функцию и выбрать максимальное значение
как-то так

Я вообще по адресу тредом? Здесь такое практикуют?
490 1719311
>>19301
А если вообще просто без os.getcwd() или __file__ прописать

f = open(f'../testfile.txt', 'r')

То файл, который в папке выше откроется в любом случае?
491 1719322
>>19311
Относительно cwd.
492 1719331
>>19322
В общем надо проверять с ярлыками и смотреть что лучше. Спасибо.
493 1719344
>>19331
Нормальный вариант это chdir на __file__ и тогда уже относительно всегда будет отрабатывать.
494 1719346
>>19344
Как это целиком выглядеть будет?
495 1719349
>>19346
os.chdir(os.path.dirname(os.path.abspath(__file__)))
496 1719351
Привет объясните дауну, для чего нужны штуки типа redis и rabbitmq?
Я понял, что вот редис - это типа такая база данных, только выглядит, как обычный словарь. Т.е это такой альтернативный более упрощенный способ хранения данных (вместо sql бд), правильно?
А вот для чего используется второе, не совсем понятно
497 1719391
>>19269
Это в общем-то типичный минимакс/оптимизация/нелинейное погромирование. Гули его.
Если x и y целые, то вообще брутфорсом перебрать можно же.
498 1719404
>>19351

>Т.е это такой альтернативный более упрощенный способ хранения данных (вместо sql бд), правильно?


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

>А вот для чего используется второе, не совсем понятно


Это брокер сообщений. К примеру, у тебя есть 2 сервиса, и тебе нужно выстроить коммуникацию между ними. Когда в одном происходит какое-то событие (например, создан новый товар), но этот сервис через рэббит отправляет сообщение во второй сервис, типа создай этот товар на складе.
499 1719406
>>19351
Это менеджер очередей. У тебя есть синхронная апа1, которая активно срёт данными, и синхронная апа2, которая эти данные потребляет. Чтобы сбаласировать их напрямую через апи надо много поесть говна.

Раббит - это ящик, первая апа складывает в этот ящик данные, вторая апа из него берёт данные. Как только в ящике становится больше N сообщений ты можешь это отследить и запускает ещё один экземпляр апы2, чтобы брать из ящика сообщения в два потока.
500 1719408
>>19404
Еще фишка рэббита в том, что если сервис, который читает сообщения, не будет доступен на момент отправки, то он сохранит сообщение в очереди, пока сервис не станет доступен. Еще он масштабируется на несколько серверов, если нагрузка большая. Впрочем, как и редис.
501 1719427
>>19404

>храняться


хранятся, конечно же
самофикс
502 1719468
Нубский вопрос. Поясните за названия переменных. Какие имена часто используются людьми, которые уже зарезервированны и которые лучше не использовать? Например, выше по треду я называл файл json.py и это вызывало конфликт.
503 1719518
>>19468
есть имена из стандартной либы вроде hash, id, json их лучше не перекрывать

общепринято для переменных добавлять _ в конце hash_, id_, json_

для файлов сложнее, обычно просто называют по другому, мол, json_utils или json_validators, либо в кровавом ентерпрайзе могут разруливать такое через тот факт, что запускаемый файл лежит в родительской папке и импортят вроде project.json
504 1719521
>>19391
>>19269

типичный...
Я чет даже не знаю, как запрос составить.

Да, х и у целые. Даже натуральные.
Первая часть решается следующим коротеньким циклом
https://pastebin.com/JFKX3Jyg
МОжет, не очень филигранно, но зато действует.
А вот как пришить сюда таланты ебаные? Хуй знает

Какая мысль меня посетила: для всех вариантов талантов просчитать этот цикл, но как просчитать все варианты талантов?
К примеру, у нас есть талант А Б С Д, у каждого из этих талантов 10 уровней, каждый уровень таланта Б требует уровень таланта А. Как можно взять все вариации для 10 талантов?
Это уже уже ояебу вариантов, а в каждом этом варианте нужно всять еще варианты для первого цикла, бля, это майнинг уже какой-то.
505 1719552
>>19518

>общепринято для переменных добавлять _ в конце hash_, id_, json_


Так именуют только мудаки, которые ничего тяжелея хера в руках не держали длиннее print('Hello, world') не писали.
506 1719560
>>19518

>в кровавом ентерпрайзе


Каким образом нормальная структура проекта соотносится обязательно с тырпрайзом?
507 1719572
>>19552
посмотри исходники django там кода больше чем print hello world

>>19560
json такое себе название для модуля, обычно возникает в ентерпрайз велосипедах
508 1719647
>>19572
Встречается или имеет место? Стиль такой блевотен по одной причине - белые люди читают слева направо, так что id и id_ выглядят практически одинаковыми, отсюда _ никакой полезной нагрузки не несет.
509 1719669
>>19647
ты предлагаешь перекрывать видимость? или писать длинные имена?
510 1719673
Что за херня, аноны? Вкатываюсь во flask, чтобы выключить сервер написано нажать ctrl+c и это не работает. Что я могу делать не так ?
511 1719681
>>19673
если консоль в ide, то она может перекрывать сигналы терминала
512 1719701
>>19673
ctrl+z попробуй
513 1719705
>>19681
работаю в pycharm, если он влияет, то как пофиксить или обойти?
>>19701
как это должно помочь?
514 1719706
>>19673
Ctrl+D
515 1719707
>>19706
пробовал, не помогло
516 1719708
>>18470
Мне бы аутпут в консольку шоб выводило. Чтобы типо всю хуйню что программа видит на кадре, пусть срет в консолью
Нашел код-образец видео захвата, и хотел на сделать по аналогии, ибо занимаюсь методом научного тыка, так сказать,
for eachObject in detections:
print(eachObject["name"] , " : " , eachObject["percentage_probability"] )
Засунул это в конец SD.py файлика. Хотел чтобы получилось как в FD. Нихуя не выводит.

Наверно обьекты при видео сьемке не так называются. Какие-нибудь .VideoObject
Кстати, если запускать, то по итогу вообще 1 фрейм, каждые 5 сек, лул.
Но этого в принципе должно хватить. Мне "умные светофоры" делать, там хоть каждые 10 секунд, не важно.
Надо правда убрать запись видео, а то она тоже жрет ресурсы.
изображение.png139 Кб, 1920x1080
517 1719747
Нашел вывод всего дерьма в консольку.
Но выводит крайне грязно. Скобачки))), Букафки. Но меня все равно радует.
Ну надо наверно написать конвертер отпут строки в что-то полезное, и выводить как белый человек.
518 1719761
>>19705

> работаю в pycharm, если он влияет, то как пофиксить или обойти?


либо нажимать мышкой на красный квадратик, либо что-то вроде такого гуглить
https://stackoverflow.com/questions/5160577/ctrl-c-doesnt-work-with-pyqt
519 1719763
520 1719783
>>19404
>>19406
Ага благодарю спасибо!
У меня тут просто переходный период от чтения док и решения задачек на алгоритмы к написанию первого осмысленного пет-проекта (онлайн голосовалку с аутентификацией, статистикой, защитой от дублирования голосов и прочих штуковин)
Но первое, что приходит в голову - просто написать кучу обычных реквестов... пук-среньк...
А хочется сразу прикрутить "взрослых" технологий
изображение.png114 Кб, 1920x1080
521 1719789
А в чем разница? Кроме сортирования по алфавиту?
Мне нужно что-то вроде пропуска ненужных символов или их удалении.
Или я неправильно пользуюсь? Вроде питон имеет в своем распоряжении охуенный иструментарий из функций, которые я не знаю :(
На сишке я бы как долбоеб прогнал бы всю строку, и принудительно убрал бы ненужные символы.

Как из обычной командной строки вылезти в анакондовскую?
Заебало cdхаться до нужной папки.
Я видимо долбоеб. Так еще и ctrl+c почему-то не работает.
522 1719796
Вот завидую я таким людям - нихуя не знает, а сразу лезет в какую-то йобу с головой.
523 1719802
>>19796
:3
Я чуть-чуть.
524 1719835
Посоны, как там у вас на рынке ситуация?
А то мне тут печёт с однокашника по физфаку, с которым мы потом вместе мнс'ами в нии были. Учился он не очень, работу делал тоже не очень, статей в первый-второй квартиль в отличии от меня не писал, кандидатскую тоже не сделал. Свалил в дс на пистон в ML или в AI, причём пока работали вместе он каких-то результатов в кодинге не показывал, может конечно он на работе не усирался. Хотя computational materials scince, где мы работали, вполне интересная область, и есть куда пайтон приложить.
Говорит, сейчас у него через год работы 150к+, позицию не знаю. Как так?
525 1719861
>>19835
кадровый голод
половина кандидатов вообще не понятно какого хуя отзываются на пайтон девелопера, не знаю про args/kwargs например а хотят 200к, другая половина какие-то ебанутые чуваки вроде тех что пишут по 10к в одном файле или используют венгерскую нотацию. Таким образом чуваков, которых хоть как-то можно во что-то напрячь ну из 10 собесов будет 1 и тот съебет в другую контору.
526 1719894
>>19835
Работа в industry везде оплачивается лучше, чем в академии. Это даже от страны не зависит. Computational materials scince - звучит круто, думаю, вполне можно поторговаться за ЗП.
527 1719910
>>19894

> звучит круто


Поэтому и не написал "компьютерное моделирование" или дословно "вычислительное материаловедение".
Академия, действительно, оплачивается средне. Я много работаю и получаю 75к в нии, работая нс'ом со степенью кфмн. Немного, но для науки норм.
528 1719987
А как убрать лишние символы из listа?
Что-то не нашел функцию специально для листа. Только для стрингов понапридумали.
Может я бака?
529 1719990
>>19987

>лишние символы


Какие именно?
530 1719992
>>19990
Фигурные скобки, одинарные кавычки.
531 1719998
>>19992

>Фигурные скобки, одинарные кавычки.


Все равно непонятно, в чем заключается задача. Каждый элемент листа состоит из одного символа или из нескольких? По-моему тебе нужно что-то вроде этого (для листа l):

[x for x in l if re.match('[a-zA-Z]+', x)]
532 1720001
>>19998
Может это ХУ проблема, так сказать.
У нас есть вот такой допустим лист.
{'cup': 1, 'bottle': 1, 'person': 2}
Мне нужно подсчитать сколько челиков.
Позже этим же алгоритмом подсчитать допустим кол-во челиков здесь
{'bottle': 1, 'cup': 1, 'person': 1, 'vase': 1}
А после и здесь
{'bottle': 2, 'person': 1, 'toothbrush': 1, 'vase': 1}
И так далее пока я не стопну.

Я думал что если убрать кавычки и скобки, написать считывалку будет проще.
Хотя похоже одинаково.
533 1720007
>>20001

>{'cup': 1, 'bottle': 1, 'person': 2}


Это не лист, а словарь. Просто вытаскиваешь количество людей и всe.

n_people = d['person']
534 1720010
>>20007
ПАСИБА :3 Я просто тупая бака и языка не знает.
Поискал что такое словарь, и сделал такъ.
rng = 0
rng = output_count.get('person')
print(rng)
Получилось.

Штош, осталось сделать вывод этого говна на ардуину.
535 1720049
>>11609 (OP)
Вот задача: Напишите программу, которая получает три вещественных числа в одной строке, разделенных пробелом, как-то преобразует их и выводит их на экран как показано в примере:
В выводе используйте 1 функцию print()!

Input 1:
3.14 2.718 10.0
Output 1:
32 103 210
Input 2:
1.0 2.0 3.0
Output 2:
12 31 23

Вот код:
a, b, c = map(float, input().split())
a = int(a)
b = int(b)
c = int(c)
print((a, b, sep=''), (c, a, sep=''), (b, c, sep=''))

Пишет: SyntaxError: invalid syntax в пятой строке
536 1720092
>>20049
sep='' и пробелы явно a,b,' ', 'c'
537 1720111
Через что лучше работать с электронными таблицами excel, open office? Нужно искать по значаниям в ячейках сравнивать перезаписывать по определенным условиям
538 1720122
>>20111
openpyxl
539 1720158
>>20111
если эксель, то можно pandas заюзать.
540 1720159
>>20158

> если эксель


В том то и дело, что нужно для екселя и опенофиса одновременно, тк файлы в перемешку
541 1720163
>>20159
ну тогда или pyexcel/pyexcel-ods или как уже писали openpyxl
542 1720164
>>20049
a, b, c = map(float, input().split())
a = int(a)
b = int(b)
c = int(c)
print ((a, b), (c, a), (b, c), sep='')

не?
543 1720165
парни подскажите как сравнить по столбцу 2 csv файла без заголовков. и если строка со 2го совпадает с первым дописать в совпадающую строку в 1м определенный текст?
544 1720168
>>19835
Ему блат подвалил, але
Его научрук туда пропихнул, чтт непонятного?
545 1720169
ThreadPoolExecutor будет работать внутри джанго/фласка? (для взаимодействия с сетью)
546 1720170
Есть шанс вкатится после 33? Хотя бы чисто по фану для себя начать, год назад пробовал стартовать дошел до простенького реддит бота, но забросил, сейчас сам в своем коде не могу разобраться. Имею вышку по инженерной спецухе, производство, 3дэ моделинг, как то можно с пистоном совместить?
547 1720196
>>20170

> Есть шанс вкатится после 33?


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

> 3дэ моделинг, как то можно с пистоном совместить?


Сам не моделер, но какие-то плагины на блендера вроде на питоне пишутся. Ты должен лучше знать
Screenshot20200612134500.png106 Кб, 789x740
549 1720210
Познакомился с peewee, запихиваю json в базу циклами и
второй день не могу победить пикрил.
Сначала всё норм, но где-то на 2 группе данных вываливается ошибка на выделенной строке. Смотрю содержимое element_group_through - одинаковые значения как в первой так и во второй колонке присутствуют, т.е. успешно записались, значит проблема не в этом. Кто сталкивался? Что ей от меня нужно?
550 1720762
>>20210
Если и для группы, и для элемента выполнится ветка "get", то ты действительно попытаешься засунуть точно такую же связь, которая была вставлена, когда в предыдущий раз группа или элемент (или обе сущности) были созданы.

А вообще:

1. Посмотри, какие constraints тебе нагенерировал фреймворк в таблицах : http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#print_model

2. Выведи в терминал конкретные запросы, которые ты делаешь (https://stackoverflow.com/questions/32691602/how-to-get-sql-query-from-peewee) и посмотри, что из этого может нарушать целостность.

3. Не уверен, что тебе это нужно, но у тебя нет ограничений на уникальность групп и элементов. Группу с одним и тем же названием можно создать несколько раз.
551 1729653
>>19031
Работает в pycharm на винде. В обычном терминале - офк нет
Тред утонул или удален.
Это копия, сохраненная 12 ноября 2020 года.

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

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