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

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

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

Предыдущий: >>1638346 (OP)
Литература:
Автоматизация рутинных задач ч.2 - https://anonymousfiles.io/3CBCoy1o/ <-- тут только одна книжка. Кто может, залейте её на ЯД к остальным.
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem

Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться

#######################################

ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года

Вопросы-ответы:
— А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.

— Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х

— А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html

— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0

— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4

— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.

— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)

— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.

— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.

ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
Текущая версия: https://ideone.com/lujiX5
2 1647706
>>47702 (OP)
Анон, если ты можешь читать только из под прокси, но не можешь писать сюда из-за бана прокси, попробуй, например, вместо .hk домен .pm
3 1647713
>>47702 (OP)

>Текущая версия: https://ideone.com/lujiX5


Эти не дают ссылки нормально шарить.
Код шапки здесь: https://dumpz.org/agmQ3QZRZ8gA
numba 4 1647745
>>47702 (OP)
Заценил нумбу на каком-то говне.
Если передавать список в аргументы функции - выполняется за 2.9 секунды.
Если список+нумба - 23 секунды.
Если преобразовать список в numpy-массив - 10.9 секунды. Лол, вообще не понял как это работает и почему массив работает хуже списка.
Если массив+нумба - 1.8 секунды. (А если ещё указать float64(int32[:,:],float64[:], int64) - то 0.75 секунды, видимо первая компиляция кушает)

На другом говне с крупными numpy-массивами (больше математики, меньше вложенных списков в аргументах функций и другого говна).
Ванилька: 9.046 секунды
Нумба: 0.831 секунды
Нумба с указанием типов в функциях: 0.374 секунды
Нумба с указанием типов в функциях и приведением кода к си-стилю: 0.064 секунды
Это в 150 раз прирост. У меня есть этот же код на си строчка в строчку, и он работает в 300 раз быстрее питонного. Получается всего в два раза отставание от честно скомпилированного кода, это при том, что часть кода не компилируется. У луа похожий результат был, тоже отставание в два раза при jit-компиляции.

>Почитай обязательно про модуль numba


Так что одобряю, теперь питоном почти можно пользоваться.
5 1647751
Какими методами можно ускорить работу с requests.get? Только в асинхронщину лезть?
6 1647777
>>47745
Написал функцию подсчёта простых чисел до N, умеренно оптимизированную.

Делаю два запуска, первый до 13, для компиляции, второй до основного числа, уже на время:

Если до 100 тысяч, то время на первый запуск / основной:
ванилла 3.6, <1ms, 68ms
pypy3, <1ms, 39ms
numba (на 3.6) 242ms, 5ms

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

Если до 10 миллионов
ванилла <1ms, 24.5 секунды
pypy3 <1ms, 9.8 секунд
numba 0.24 секунды, 1.7 секунд

Никаких numpy не использовалось, чисто питоновский код.

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

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

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

Но, питонисту про существования модуля знать обязательно, может иногда пригодиться.
7 1647782
>>47777

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


Просто укажи типы и время компиляции становиться смешным.

По счастливой случайности я сейчас тоже балуюсь с простыми числами.
Получение первых 10000 простых чисел (с сохранением в список - пробую делить новое число на цифры из списка): ваниль - 1.862, нумба - 0.653, нумба у сказанием типа (@njit(int64[:](int64))) - 0.014.
100000: ваниль - 47.004, нумба - 0.830, нумба с типами - 0.217
1000000: нумба - 5.758, нумба с типами - 4.880
8 1647784
>>47782
Хотя хуйню посоветовал, он при применении декоратора всё-равно виснет.

Энивей полезно, если функция работает меньше секунды за всё время работы, то это можно и не оптимизировать в общем-то.
9 1647791
Если у меня на парсинг цен по 10 товарам уходит ~20 секунд, я что-то определённо делаю не так?
10 1647794
>>47791
Да.
Для начала ты должен понять, на что они у тебя уходят - на то, чтобы скачать страницы, либо на то, чтобы именно распарсить?
.JPG43 Кб, 1030x388
11 1647797
>>47794
В каком смысле "скачать страницы"?
Скорее всего, второе. Может, это потому, что я путешествую по json'у get'ами?
12 1647798
>>47797
Да, json там довольно здоровый.
13 1647799
>>47797
У тебя есть строка
response = request.get(current_address)

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

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

JSON в норме очень быстро обрабатывается. По крайней мере через библиотеку json, про этот способ не скажу, надо смотреть.
14 1647800
>>47799
Ну и не советовал бы с сайтов качать с большей скоростью, лучше наоборот, задержки встраивать. Иначе легко можешь попасть в чёрный список сайта, иногда отслеживают активность.
15 1647801
>>47799
Посчитал - в среднем где-то 2-4 мс. Похоже, где-то сильно налажал в логике.
16 1647865
Есть кто живой?
17 1647898
>>47797
1. Поставишь асинхронку или даже многопроцессорность для скачки данных - получишь елдой банхаммером по голове за спам запросами. Это я уже проходил много раз
2. Ты общаешься с местным api?
3. Какого размера у тебя выходит json? Посмотри с помощью __sizeof__
19 1647927
>>47801
Попробуй спрофилировать и посмотреть, на какие функции основное время расходуется
python -m cProfile my_script.py
20 1648051
Посоветуйте редактор кода.
Из опробованного:
вим - перебор
Пайчармы - стойкая неприязнь ко всему, что делает джет брейнс.
Всякое говно на электроне - ВС код и Атом. Сейчас пользуюсь ими, но постоянный баги ужасают, особенно то, что переключаясь на окно редактора из какого-то другого, и пытаясь провернуть колесико мышки - само окно проматывается в неизведанные дали. Видимо запоминаются движение колеса вне самого редактора и потом разом применяются.
Спайдер - просто не понравился. Все неудобно, топорно, некрасиво, будто юпитер ноутбук вынесли в отдельный редактор.
Посовейтуйте что-нибудь.
21 1648059
Как установить этот питон или че там надо, на комп(винда), типа я программку пишу оно мне считает, или окошко выводит с надписью или вопросом, как-то так.
22 1648060
>>48051
Саблайм, хуле.
1200px-Geanylogo.svg[1].png250 Кб, 1200x1200
23 1648065
image.png6 Кб, 454x201
24 1648070
>>48059
Установить питон быстрее чем дождаться ответа на борде, кстати.

https://www.python.org/downloads/windows/
Ставишь, например 3.8.2 х64, запускаешь IDLE - открывается пикрелейтед (консоль). Всё, ты можешь писать код на питоне. Ещё можно нажать ctrl+n (чувствительно к языку раскладки, лол - на русской горячие клавиши не работают), вводить несколько команд сразу и запускать по f5. Или редактировать .py файл в любом блокноте и запускать как батник.
25 1648077
>>47797
Бьютифал суп наверно быстрее будет.
26 1648079
>>48077
хтмл парсер быстрее жсон парсера? Это вряд ли.
Просто анон где-то обосрался.
27 1648106
>>48060
Он разве бесплатный?
>>48065
Спасибо, не слышал, выглядит интересно.
28 1648134
>>48106
Платный, но после конца триала только бухтит и продолжает работать.
29 1648147
Аноны, когда в параметризированных запросах надо использовать '%s', а когда просто %s ?
30 1648164
>>48147
Пример приведи
31 1648180
Есть массив и есть связный список...
В питонухе, как я понял, массивов нет, есть только списки (list)? В массиве же доступ к любому конкретному элементу достигается за О(1), а вот в списке за О(n) кроме первого элемента - head, к нему канешн всегда О(1)
Есть ли сторонняя либа с массивами?
32 1648185
>>48164
MySQL таблица вида (ID, Text, Longtext, Datetime, Int, Int, Text, Datetime, Int, Json, Json)
Пытаюсь выполнить запрос
"INSERT INTO `table_name` (имена столбцов кроме ID) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s);"
Но в итоге постоянно выдает ошибку
pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sssaa'' AND date=''2020-04-01 16:30:52''' at line 1")
Окей, почитал, что для даты-времени нужно использовать не просто %s, а '%s', обернул оба столбца с даой-временем таким образом. Все равно получаю хуйню
pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2020-04-01 16:34:31'', 6, 44, NULL, ''2020-04-01 16:34:31'', NULL, '{}', NULL)' at line 1")
Вот что блядь не так? Я с этой хуйней уже часа 4 сижу, разобраться не могу
33 1648188
>>48180

>с массивами?


numpy?

>в списке за О(n)


Уверен насчёт этого? Откуда ты это взял? Я очень-очень сомневаюсь, что в петухоне доступ к элементу за О(n).
Не интересовался как это внутри устроено, если бы я на крестах делал список, который может содержать произвольные типы - то я бы хранил это в виде массива (или дека, нужно проверять что будет лучше в общем случае) из пар (тип,указатель_на_данные). Там будет доступ за O(1), а всякие сортировки будут перемещать маленькую структуру с указателем, вместо реальных объектов.
34 1648190
>>48188
list.pop() и list.append() за О(1) инфа сотка, но вот остальные операции - хз
35 1648193
>>48180
Доступ к любому элементу списка O(1).
Удаление элемента из списка, поиск элемента в списке, то есть "element in list" - O(n)

Вот таблица, кстати
https://wiki.python.org/moin/TimeComplexity
36 1648194
>>48188
>>48180
Палка на двух концах. Можно каждому элементу внутри List присвоить поле index - integer значение, которое показывает его порядковый номер в списке, тогда доступ по этому индексу будет за О(1), но вот незадача, при вставке/удалении, придется инкрементировать или декрементировать соответствующие индексы... И трудоемкость возрастает до О(n). Можно забить хуй на индексы и двигаться от head, в таком случае при удалении/вставке надо лишь переназначить смежные ссылки, но вот доступ к элементу уже будет за O(n)
Тут тебя выебут либо в рот, либо в жопу, задача программа лишь выбрать одну из двух дырок, расслабиться и наслаждаться процессом
.jpg422 Кб, 1460x920
37 1648195
>>47898
API у них только для бизнеса, к сожалению.
С __sizeof__ странная штука получается: если применять его к переменной с json'ом в консоли, показывает 216 байт, а если сохранить этот самый json в текстовый файл, получается 67 килобайт. sys.getsizeof при этом возвращает 232 байта.

>>47927
Спрофилировал: больше всего времени уходит на вот эти штуки, получается.
38 1648196
>>48193
>>48194
Ааа, выходит что в Питонухе как раз доступ к элементу за О(1) а вот вставка/удаление трудоемка
есть классические связные списки с вставкой за О(1)? друг просит
39 1648201
>>48195
Может быть, такое поведение и нормально, если учитывать, что эти товары могут быть распиханы на 30 страниц? При этом на каждой странице по 30 товаров, и у каждого нужно взять цену в этом огромном json'е.
40 1648203
>>48185
Ты делаешь через prepared statements или просто хуяришь сформатированную строку?
Я пока не смотрел, как там сделано в питоне.
41 1648204
>>48203
Через 1
42 1648208
>>48190
Да, список - обычный массив.
https://ideone.com/nUgX2z
43 1648209
>>48195
Вот значит у тебя вся задержка из-за сети, долго данные читаются, здесь надо разбираться почему.

Сто лет на request не смотрел, ничего не скажу. Возможно там надо как-то сначала целиком данные скачать, каким-нибудь одним запросом, а потом скормить его json. ХЗ. А может просто сервис медленно данные отдаёт.

На самом деле если ты говоришь 67 килобайт, и это за полсекунды, то это мегабит в канале. Это не так мало, ты же не один может эти данные запрашиваешь.
44 1648211
>>48195
Возможно, у простого get нет keep-alive, так что кучу времени жрет ссл хендшейк. Попробуй через session.
image.png28 Кб, 894x300
45 1648215
>>48211
Так и есть, тащемта. Там одноразовые сессии создаются на каждый запрос.
46 1648221
>>48215
Мне кажется, тут скорее всего не та вещь, которую тебе нужно оптимизировать. Это ведь вопрос сети, а не твоего кода. Если ты будешь слишком агрессивно качать, рискуешь попасть в чёрный список. Это, конечно, от сервиса зависит. Не факт, то им жалко, и не факт, что обнаружат.
47 1648223
>>48221
Апи оно на то и апи, что можно качать сколько влезет. Если есть какие-то лимиты, то они обозначены явно в документации.
swapprofile2.png58 Кб, 757x695
48 1648224
>>48208
У тебя на самом деле там не swap, а рандом время жрёт плюс сам цикл, вызов функции и т.п.
49 1648228
>>48224
Угу, не удивительно. Замени рандом на c%1024, если хочешь.
Это не важно, рандом O(1) жрёт. O(30)==O(1). Если бы доступ был за линейное, то х20 размер массива дал бы вклад несмотря на тяжёлый рандом.

Что за хуета на пике? Тоже хочу такую.
50 1648229
>>48070
Лайк
51 1648232
>>48209
>>48211
>>48215
>>48221
>>48223
Спасибо за ответы.
Приделал requests.Session - максимум на ~2 секунды сократилось время исполнения. Насколько понимаю, это либо на сервере у них стоит какое-то ограничение, либо что-то у меня с интернетом тогда.
52 1648233
>>48224
Это kcachegrind, профилировщик.
Ты собираешь профиль с помощью cProfile, например
python3 -m cProfile -o data.profile my_script.py

потом запускаешь скрипт, который конвертирует этот профиль в формат для kcachegrind
pyprof2calltree -k -i data.profle

kcachegrind надо предварительно поставить, а скрипт можно поставить через pip
53 1648234
>>48232
Что-то не так приделал,значит. Покажи новый код.
54 1648237
>>48234
"Сsv_write", если что, убирал - практически не снижает время исполнения.
55 1648239
>>48234
>>48237
По профилю тут >>48195 видно, что основное время тратится на метод _read SSL сокета, а не на установление соединения.

Мне не понятно, почему этот метод, и некоторые другие, отвечающие за соединение (set_cypther и другие), вызываются 82 раза. Такое ощущение, что реально 82 соединения устанавливается, а не 20, как анон говорил.

150 миллисекунд на соединение и 67 килобайт данных это вообще прилично.
56 1648240
>>48237
Ну хуй знает. Попробуй ещё гзип добавить, тоже частенько улучшает. Там вроде только хедер нужен, а разжимает автоматом.
57 1648248
>>48194
Аналогии с хуями и жопоеблей мне больше всего нравятся
58 1648250
>>48147
И какого хуя запрос
"INSERT INTO table (name, date_created, logo) VALUES (%s, %s, %s)"
При параметрах
(name, datetime, '')
Вместо пустой строки в последнем параметре вставляет ебучий апостроф в таблицу? У меня конечно мозг совсем от ORM размяк, но какого хуя оно не вставляет пустую строку как сказано?
Screenshot5.png18 Кб, 598x291
59 1648274
Beautiful Soup не находит descendants, хотя у тэга они есть (app), в чем может быть причина?
60 1648275
>>48274

root = soup.find("div",id="app")
print(root)
root_childs = [e for e in root.descendants]
print(root_childs)
61 1648381
Якого хуя петухон переписывает переменные?

Есть цикл ака

for button in buttons:
label = tk.Button(self, command=lambda: print(label))

вот какого хуя при нажатию на кнопку оно высирает последний элемент? как это предотвратить и выдавать то, что нужно?
Стикер473x500
62 1648382
>>48381
Виздос ты чмоня, конечно. Унижен питохоном.
63 1648385
>>48382
надеюсь больше не возьму это говно. нелогичная хуйня, так собсна, ответ будет?
64 1648386
Сап. С чего начать разработку бота для телеграма? Посоветуйте что посмотреть/почитать на эту тему. Программировать хочу на питоне, не особо понимаю как подключить бота к среде разработки pycharms и синхронизировать код с ботом
65 1648408
Как в машоб вкатиться? В интернетах либо говно, либо сразу начинают с каких то йоба задач. Пистон знаю, 3 года говнячил на джанге, надоело.
66 1648409
>>48381
Не читай SICP, говорили они. Ничего из него в реальной жизни не понадобится, говорили они.
google://замыкание
67 1648413
>>48386
Сервер уже есть?
68 1648425
69 1648429
>>48425
Всегда без кавычек. Это не тот %s который в форматировании строк.
70 1648431
>>48429
Но на те же datetime, когда вставляешь отформатированной строкой, я так понял надо делать именно с кавычками.
А насчет >>48250 можешь подсказать? 3й параметр - пустая строка, через DataGrip я спокойно вставляю пустую строку, а тут оно хуярит 1 кавычку как бы я не делал: оставлял параметром, переносил эти кавычки в VALUES
71 1648438
>>48431
Какая БД и какая батарейка? Не должно быть там никакой кавычки.
72 1648441
>>48438
MySQL 8й

> какая батарейка


Всм?
15830554055300.jpg51 Кб, 1080x1057
73 1648462
Как же заебал этот водолей на Лутце, еще пол книги дочитывать.
74 1648471
>>48462
Читай что-то другое.
75 1648486
>>48409

> google://замыкание


дальше то что? это мне помогло решить проблему? нет
76 1648508
>>48462

дали им checkio.org, изучай, практикуй, разбирайся. нет, хотим просто читать, чтоб знания сами в голову залетали и там волшебно усваивались
77 1648656
>>48381
Бля, брат, ты совсем тупой? Я понимаю, что это питон и он мозги размягчает, но что ты хочешь от питона? Ты в одну и ту же переменную весь цикл пихаешь разные значения. А потом вопишь, что питон тебе говна в жопу залил, ведь в это переменной теперь не тысяча значений, а ровно одно последнее.
78 1648662
>>48381
Гугли python late binding. В жопаскрипте та же херня. И это нихуя не очевидно, что бы остальные ни писали.
https://medium.com/@dawranliou/closures-bind-late-7b01e3abcb7b
79 1648678
А теперь я напишу свою охуенную историю. В прошлом треде я уже писал, что не мог разобраться с импортами. Теперь я вроде как разобрался и хочу, чтобы мне кто-то сказал правильно ли я понял или нет.
Есть следующая файловая структура, на которой я тестил свою хуйню жирный шрифт -- папки, курсив -- файлы

TestApp
---Folder1
------FileA
---Folder2
------FileB
---main

Я хочу из FileA импортнуть функцию look из FileB. Если в FileA написать import Folder2.FileB, то будет такая ошибка No module named 'Folder2'. Если импортить относительно, а именно вот так from .Folder2.FileB import look, то будет ошибка attempted relative import with no known parent package. При том, если в main импортить файлА и файлВ, то импорты будут работать заебись в любом из вариантов.
И вот в чем вопрос, правильно ли я понимаю, что питон вообще не может импортить пакеты или файлы из директорий, который находятся выше, чем главный запускаемый скрипт?
80 1648685
>>48678
Файлы __init__ то надеюсь замутил?
Ты в PATH пути добавил?
81 1648689
Есть годные курсы по пректическому программированию на питоне? Лекции и книги - это хорошо, но мне больше подходят курсы, т.к. легче прогресс отслеживать, и интерактив есть. рус/англ - всё равно, но думаю на ангельском будет больше материала. Также не хотелось бы опять скипать кучу новичковских знаний, по типу "что такое циклы/условия/типизация/етс. У лутца есть книга, но она уже старая, и может не затрагивать более новых фич
82 1648695
Еще один тупой вопрос по запросам
Запрос:
SELECT * FROM `users` WHERE login IN (%s);
Данные:
['abc']
Ошибка:
pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'abc''' at line 1")
Какого хуя ему блять от меня надо? Я передал строку для выборки из колонки с типом TEXT, а оно меня нахуй шлет
83 1648699
>>48695

>You have an error in your SQL syntax


Если тебе говорят об ошибке синтаксиса, значит ты клован, который не знает синтаксис (не важно чего: питонуха, sql или лиспа). Прими это как данность
84 1648701
>>48699
Я бы принял это как должность, если бы тот же запрос, но с вручную подставленными данными
SELECT * FROM `users` WHERE login IN ('abc');
не выполнялся успешно без каких-либо ошибок
85 1648706
>>48701
Ладно, я тупой
86 1648707
>>48685

> Файлы __init__ то надеюсь замутил?


С питухона 3.3+ версий инит не нужон, держу в курсе.

> Ты в PATH пути добавил?


Уже бегу говнякать глобальную переменную своей машины, ага.
Не, брат, я эту тему глубоко копал, так как, во-первых, каждый раз, когда я делаю пет проект добавлять по 100-150 строк в пас то абсурд, во-вторых, это занимает миллиарды строк и я в рот ебал такие приколы. Про иниты я не до конца понимаю что в них нужно писать, но добавлять пустой инит ради того, чтобы питухон воспринимал папку как пакет не нужно уже как года два.
wtf-nigga-3.png265 Кб, 600x700
87 1648816
>>48508
Решил побаловаться твоим checkio, а он какой-то сломанный. Неправильно работает проверка и дальше не пущает.
https://py.checkio.org/en/mission/acceptable-password-ii/
88 1648821
>>48678

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


Да, именно так. Всё остальное - обходные решения.

Я думаю это сделано специально, потому что такие схемы импорта очень грязны сами по себе. Это грязная архитектура. Не должно быть таких зависимостей сложных и неочевидных. У тебя или должен быть дочерний модуль, в подкаталоге, или глобальный, прописанный в твоём окружении, например.
89 1648845
Пытаюсь из вашего говна перекатится в ноду, чувствую сильные беды с башкой от стрелочных функций, промисов, асинхрощины во все поля и кучи других приколов.
Всё-таки от простоты пистона со временем деградируешь, не советую его учить как самый первый яп.
90 1648848
>>48845
Хорошая попытка js-блядь, но нет.
91 1648937
>>47702 (OP)
Как мне понять и почувствовать ООП? Не могу разбираться в логике всякого кода нормальных людей, когда думаю сам о архитектуре, то от ооп в голову приходит только делать простейшие классы и получать профит только от простейшей инкапсуляции. А в нормальном коде даже у простых задач вообще всё через ооп работает. А ведь там дальше ещё паттерны всякие, и сложный нагруженный код.
В общем, помогите как-то влиться во всё это, только я книжки из-за сдвг не могу читать, мне лучше курсы какие-нибудь.
image.png333 Кб, 400x314
92 1649061
Привет, анон, я мимовкатывальщик 20 лвл, как ты думаешь, стоит пытаться вкатиться зная английский на достаточно слабом уровне?(могу связать пару слов и понять 60% того, что мне говорят) Есть ли смысл пробираться сквозь тернии к звездам держа в зубах переводчик? Или, может, есть актуальная русскоязычная литература, которая поможет создать фундамент для моего вкатывания? Спасибо
93 1649133
У меня вопрос. Вот я осилил учебник по питону, смотрю на скрипт, понимаю как он работает, как что и с чем связано. Но когда дело доходит до написание своей программы, даже самой простой, в голове появляется обезьянка и стучит в тарелки. Такое ощущение, словно мозг напрочь не может вспомнить нихуя, либо путается в строках и выходит быдлокод. При этом если берешь чужой похожий код, то можешь нормально его корректировать под себя. Как с этим бороться?
94 1649136
>>49133
Начни писать регекспы, пойми, что там проблема прямо противоположная. Выработай промежуточный поход, пользуйся им в обоих дисциплинах.
95 1649141
>>49133
Это стандартное плато, такое есть и в изучении иностранных языков например.
Надо продолжать, что ещё делать, лол.
96 1649147
>>49061
Технический англиский несложный.
Алсо, нет такого, что вот охуенная литература или курс и ты всё поймешь, а остальная вообще ни о чем. В целом они перессказывают одно и то же, кроме всяких практических кукбуков.
Достаточно литературы по бидону 3+, т.е. примерно десятилетней давности. Новыми фичами можно догнаться позже, если до этого вообще дойдет дело.
97 1649153
>>49147
То есть можно просто взять того же Лутца 2011 года и по нему двигаться?
98 1649159
>>49153
Последний оригинальный Лутц 2013 года и он сам пишет, что обновление нинужно https://learning-python.com/about-future-eds.html
2011 это видимо переводное предыдущее издание. Так что есть вариант поновее, но и это сойдет.
изображение.png694 Кб, 580x713
99 1649192
 - 19.png6 Кб, 248x189
100 1649216
Нужно склеить список списков в один непрерывный список. Без вложений. Можно как-нибудь однострочником?
101 1649219
>>49216
[n for sub in a for n in sub]
BE5AA873-5555-4468-9645-18B632BE43BD.png319 Кб, 446x650
102 1649239
Посоны-вкатывальщики, там на один день открыли бесплатную регу на годный курс - https://inventwithpython.com/automateudemy

Автор написал пикрил, не знаю на сколько инфа пересекается, но курс наверняка информативнее, чем книжка. Планирую изучить и то, и другое.
103 1649250
>>49239
Думаю, практически повторяет книгу.
В принципе, я нахожу видеокурсы более продуктивным для хуя-прокрастинатора, легче удерживать внимание, чем читая пдфку. Потом можно уже углублятся в детали, почитывая документацию.
104 1649327
>>49192
Но ведь логично все
105 1649439
>>49133
Делай сам просто много простых задачек, похожих, по несколько раз. Чтобы вот ты себя в таких задачках свободно чувствовал. Вот такие, на несколько строк, на один-два экрана максимум, от твоего уровня зависит.

При этом ОБЯЗАТЕЛЬНО возьми за правило писать их с нуля, не пользуясь своими старыми решениями, не только копи-паст не надо делать, но и даже заглядывать в них.

Это всегда работает, довольно быстро и эффективно. Когда какие-нибудь новые технологии осваиваешь, тоже очень полезно.
106 1649444
>>49216
В принципе для этого специальная функция в модуле itertools

import itertools
b =[*itertools.chain.from_iterable(a)]
107 1649451
Время еще одного тупого вопроса по работе с БД, как правильно написать выполнение нескольких запросов с транзакцией? Что-то типа такого?
https://pastebin.com/P63DBenC
108 1649454
>>49451
включаешь транзакцию
@
хуяришь мильйон вставок
@
коммитишь

Это можно завернуть в try и делать роллбэк при ошибке.
109 1649457
До меня походу дошло, почему здесь так любят перл-стайл однострочники вместо вынесения кода в функции. Потому что иначе будет как в джаве с размазыванием логики.
110 1649458
>>49454
Спасибо, значит я правильно понял, просто что транзакцию не включил, а так через трай сделал сразу
111 1649463
Анон, я хочу написать крестики нолики, но мне не совсем понятен модуль tkinter. Почему там нельзя задавать произвольное положение кнопки?
В общем, хочу пойти сложным путем, холст, рисование матрицы 3х3, обработка щелчка мыши на клетке, проверка, куда кликнул по координатам относительно окна.
Как рисовать, какой модуль юзать для холста?
112 1649470
>>49463
Почему ты думаешь, что нельзя?
button = tkinter.Button(root, text="button")
button.place(x=200, y=100)

Использовать всё тот же модуль tkinter, из него брать Canvas.
113 1649472
>>49470
Потому что я скачал дизайнер, чтоб расположить кнопки как матрицу и сука не смог их передвинуть. Согласен, это тупо, что в таком модуле нельзя было бы изменить положение, но все же. Может дизайнер есть более нормальный?
114 1649476
>>49472
Ручками делай, какой дизайнер.
Тем более, что для твоего случая это можно рассчитать кодом.
115 1649484
>>49472

> дизайнер


Ну и смысл тогда идти "сложным путём"?
Гуй на питоне пишут редко, соответственно, предложение инструментов для этого куда меньше, а те, что есть, сосут в сравнении с тем же Qt Designer.
116 1649493
>>49484
Так. Тогда какой гуй выбрать? кьюТи?
Я хочу написать ебаный тетрис, крестики нолики, еще какую-нибудь хуету.
На паскале писал, там есть событие онМаусМув, и в нем я считал, на какую ячейку наведена мышь для клика. Ну и так же можно привязать на стрелки переключение фокуса активной ячейки. Вот тут тоже хочу повторить.
Вообще хочется сделать полноценный вариант тетриса
117 1649496
>>49493
Это всё можно сделать на ткинтере, и здесь тоже есть аналогичные эвенты. Вопрос в том, обязательно ли тебе нужен дизайнер для такой сравнительно простой задачи. Крестики-нолики и тетрис - это далеко не 3д макс или фотошоп по сложности, чтобы здесь был нужен дизайнер.
118 1649499
>>49496
Да я просто на будущее хочу
119 1649505
>>49493

>кьюТи?


Наверное, лучший вариант если тебе нужен именно Дизайнер
120 1649514
>>49505
А ведь можно напердолить интерфейс на сишарпе, охуенно напердолить, красивый, а работать с модулями питона. Или это совсем пиздец?
121 1649528
>>49439
>>49136
>>49141
Понял, спасибо братишки.
122 1649529
>>49514

> пиздец


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

мимо
123 1649567
>>49514
>>49529
Есть ironpython под дотнет, но только второй пока.
124 1649588
>>47751
Если у тебя последовательные запросы, то примерно никак, с асинхронщенной ты получишь прирост только при множестве «параллельных» запросов.
125 1649590
Блять, анон, я что, не могу менять значение переменной внутри функции?
Объявил переменную в начале кода со значением "Х"
Использую ее в функции. Из этой же функции пытаюсь переопределить ее значение, так как это как бы глобальная переменная, не?, получаю ошибку
local variable referenced before assignment
126 1649596
>>49590
Вангую, она у тебя просто под функцией определена.
127 1649597
128 1649598
>>49590
Тебе надо её в функции как global декларировать.

Иначе ты её можешь или только как read-only, или как локальную переменную использовать.
129 1649600
>>49598
то есть пишем сперва global myVar? В функции
130 1649602
>>49600
Да. Если ты меняешь значение глобальной переменной, её обязательно надо сначала задекларировать, как глобальную.
131 1649613
>>48816

у меня все работает. перезагрузи страницу, может?

мой солюшен:
len(password) > 6 and any(s.isdigit() for s in password)
132 1649615
>>48816
а, наверное у тебя сломалось из-за того, что там от прошлого солюшна вставляет код, добавляя его к новой заготовке. просто почисти от всего кроме функции (можешь тесты удалить тоже, они чисто для тебя, чтоб локально проверять)
image.png188 Кб, 1849x719
133 1649619
>>49613
>>49615
Та же хуйня. Я уже и сам метода три разных придумал, лол.
Перезагрузка не помогает, попробую сейчас перелогиниться и почистить всякие печеньки-файлы.
134 1649622
>>49619
Хотя я посмотрел, оно тупо плейнтекстом шлет на сервер, нечему ломаться на клиенте, это что-то у них.
135 1649625
>>49619
>>49622

ну бля, ну по размеру балдюшка на полосе прокрутки видно, что там у тебя внизу приклеилась целая простыня левого кода, не? явно не 2-3 строчки ассертов
mp,550x550,gloss,ffffff,t.jpg39 Кб, 550x545
136 1649630
>>49625
Пиздос, почему-то было две копии всей ботвы и эта нижняя с пустым решением.
Гениально, Холмс! Никогда бы не догадался.
unnamed.jpg37 Кб, 500x375
137 1649637
>>49630
да, там есть такие "серии" задач, когда твое старое решение может пригодиться, и движок чекио объединяет заготовочный файл с тем, что у тебя там раньше было. не очень продуманно, но, думаю, второй раз на эти грабли уже не наступишь
138 1649650
>>49239
Спасибо, записался.
docker.png26 Кб, 1351x648
139 1649680
Windows 10, python 3.7.6, на Анаконде. Докер жалуется на какие то права. Помогите плес.
140 1649708
Думал, с чего начать питон изучать. Решил, что я дно полное и начал с "Jason R. Briggs — Python для детей (2017)". К середине книги автор начал допускать ошибки в коде охуел от того, что их исправлять приходилось, а потом его подача превратилась в сплошной матан без нормального объяснения, что за хуйня в коде происходит. Сделал ебучий пинг-понг, охуел с пиздецомы задач в качестве домашки.
Еле как сделал 3 штуки, осталась последняя задача:
"#4. Счет в игре
А не добавить ли в игру подсчет очков? Каждый раз, когда мяч отскаки-
вает от ракетки, счет должен расти. Сделайте так, чтобы набранные очки
отображались в правом верхнем углу игрового экрана. Здесь вам приго-
дится функция itemconfi g (см. раздел «Для чего еще нужен идентифи-
катор» на стр. 186)."

Я в душе не ебу, что я делаю не так, я раз 8 переписывал код в попытках через "hit_paddle == True" заставить считать отскоки. Я не понял, я совсем дно ебаное или просто автор мудак?
Помогите с кодом, пожалуйста, нихуя же не понятно.
https://ideone.com/7KAorW
141 1649725
>>49708

скорее, мудак автор, если вывалил кучу гуёвого кода без понятных объяснений

первый этап:
сначала создаешь переменную в ините (self.hits = 0)
где детектируется хит, увеличивай её (self.hits += 1)
далее можешь принтить в консоль и убедиться, что всё работает
сурс: https://ideone.com/pzxn7I

второй этап:
автор рекомендует заюзать метод
погуглив, можно узнать, что метод itemconfig изменяет существующий объект: https://effbot.org/tkinterbook/canvas.htm#Tkinter.Canvas.itemconfig-method
но этот объектнадо как-то создать и записать в переменную. думаю подразумевался метод Canvas.create_text: https://effbot.org/tkinterbook/canvas.htm#Tkinter.Canvas.create_text-method

в том же ините создаем канвас: self.hit_counter = canvas.create_text((50, 50), text=0)
там, где детектируется хит, вызываем метод для изменения текста: canvas.itemconfig(self.hit_counter, text=self.hit_count)
можно еще по желанию облагородить какими-нибудь строками
сурс: https://ideone.com/geoBTc

вот годный курс приблизительно по тому, что ты делаешь. я сам начал изучать питон с него, очень помогло:
https://www.coursera.org/learn/interactive-python-1
https://www.coursera.org/learn/interactive-python-2
142 1649731
Что тут происходит?
143 1649732
>>49731
Нельзя в тред зайти, то бишь - на архивач перенаправляет. Только ответы проходят почему-то.
144 1649735
>>49732
куки/кэш потри
145 1649738
>>49735
До этого только куки потёр - не исправило. Сейчас нормально.
146 1649756
>>47702 (OP)

На сайте MIT лежит конспект очень хорошего курса "Математика для компьютерных наук. Наблюдал кто-нибудь его перевод или что то примерно такое на русском языке?
https://courses.csail.mit.edu/6.042/spring17/mcs.pdf
Заранее спасибо за ответы
P.S Ненавижу "Конкретную математику"
147 1649868
>>49725

>первый этап:


сначала создаешь переменную в ините (self.hits = 0)
где детектируется хит, увеличивай её (self.hits += 1)
далее можешь принтить в консоль и убедиться, что всё работает

Вот это я и делал, собственно и оно не работало. Но спасибо, перечитаю
148 1649875
>>49756
Дискретку и теорвер почитать не можешь?
149 1649890
150 1649897
>>49725
Посмотрел твой код, теперь я понял, что шел примерно в верном направлении. Просто я пытался строки

self.hit_counter = canvas.create_text((50, 50), text='Лох')
text = f'Есть отбитие №{self.hit_count}' # text = 'Есть отбитие №%d' % self.hit_count
canvas.itemconfig(self.hit_counter, text=text)

вынести за пределы функции в самый низ, как завещал автор и сталкивался с тем, что не засчитывались очки. Ты сделал все намного проще. Я теперь хоть понял, что я Лошара, спасибо, хых.
151 1649898
В Джанго когда именно работает middleware? Я знаю что оно включается дважды во время обработки запроса. Первый раз - перед тем как request передастся во view или после? А второй - после рендеринга template или перед?
152 1650056
>>49898
Везде работает на самом входе и на самом выходе.
153 1650126
Ньюфаг на связи.
Уже несколько раз слышал что питон медленный. но не ясно где эта медленность проявляется и какой гемор она приносит.
Как в реальном мире мешает скорость питона? Можно живых примеров?
154 1650152
>>50126

"говорят, экскаватор меденно ездит, и ни одну гонку формулы 1 не выиграет, это правда?" с одной стороны - чистая правда, с другой - у экскаватора нет задач выигрывать гонки. понятно, что у новичка, который ещё не определился, что ему в будущем захочется - строить дома или в гонках участвовать, такие вопросы всегда будут возникать

там, где нужна скорость вычислений, и индустрия развита, написано дохуя низкоуровневых либ: numpy, tensorflow, etc.
там, где нужна скорость вычислений, но интерес публики слишком мал, денег нет, либ нет, жизни нет, питон просто не используется - нет коммерческих рейтрейс-рендеров на питоне, нет почти игровых ЙОБА движков с пбр-графонием, с 3д графикой ситуация пососная
короче, где этот язык неуместен, он не используется, и поэтому задач не возникнет (говоря простым языком: >НИНУЖНА)

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

как-то так
sage 155 1650162
Сап! Хочу в IT, начал изучать пистон, но вот думаю, намного быстрей научусь, если кто-то уже знающий будет учить, кто-нибудь посоветует курсы аля скилбокс (слишком поверхностно они учат, за оверпрайс) или гикбрейн, или что-то подобное, может какие-то сайты со сливами подобных курсов

помогите а?))
156 1650189
157 1650191
>>49133
Мне помогает говорить с собой я говорю себе тааак сейчас надо то сделать потом то и тд.
158 1650207
>>50191
За маму, за папу...
159 1650218
>>50191
а я спецэффекты генерирую:
дыыыщ
фааау
дуууууф
тататататататата
160 1650226
>>50126
Тебе уже хороший коммент дали: >>50152

В основном тебе производительность не актуальна, тебе надо решить задачу, а не заставить комп расходовать 0.1% вычислительных ресурсов на неё вместо 1%.

Чаще больше мифы и какие-то цифры на синтетических тестах. Про какие задачи конкретно ты говоришь?

Питон, впрочем, в первую очередь про задачи со сложной логикой, он на это заточен, а не на числодробилку и супер хайлоад.
161 1650235
При вызове функции, например:
main(hui) <--- вот это является tuple?
162 1650245
>>50235
Если у тебя hui = (pizda, ), тогда является
163 1650260
>>50235

смотря в каком контексте. может являться, может нет
164 1650279
>>50235
main((hui,)) нужно.
165 1650285
https://www.codepile.net/pile/zPoRrVq4 почему на while ругается? Что там вообще может быть не так?
166 1650288
А. понял, лишняя скобка
>>50285
167 1650351
>>50191
Моя обезьянка в голове не хочет общаться)
168 1650416
Бляяяяяя две недели жестко чилил, а теперь кажется будто вообще не учил. Тупо все ООП забыл, хотя до этого на изичах все задания по кд решал. Сеймы есть?
169 1650417
>>48937
Двачую. Понимание порой аж со скрипом приходит.
170 1650423
>>50416
Бухарик али нарк ?
Screenshot 2020-04-05 at 16.39.25.png73 Кб, 908x594
171 1650661
Почему разница в выводах и нужно использовать скобки?
sage 172 1650684
>>50661
Потому что приоритет операций такой, что сначала выполняется степень, и только потом унарный минус. Прям как в математике,
173 1650727
>>50416
Что за задания на ооп?
174 1650741
Анончики, стоит учить Vue для веба? Читал, что его можно в связке с нашими фреймами ебашить.

И второй вопрос - что почитать миддлу? Язык уже знаю хорошо, хочется больше практики и реальных кейсов.
175 1650750
>>50741
под практикой я конечно же не говно на пигейме имею ввиду
176 1650785
>>50741
Сделай упаковку и распаковку зип-архивов, мидл.
Струкртура там несложная, компрессия есть в модуле zlib.
177 1650791
>>50785
Спасибо, читал недавно на Хабре про архиваторы как раз
изображение.png1 Кб, 350x24
178 1650867
Аноны, где почитать про эту стрелочку? Как она называется?
179 1650883
>>50867
typing
180 1650923
>>50867
Type hinting.
181 1651230
>>50867
костыли ебаные
182 1651237
>>51230
Костыли хотя бы работают, а эта хуита даже ворнингов не показывает.
183 1651241
>>51237
Петушня должна была запилить ворнинги из коробки, но не парится. Поэтому приходится полагаться на IDE
изображение.png48 Кб, 792x46
184 1651262
Сейчас смотрю как чувак пилит на Джанге свою веб-корзину и вижу что он часто юзает херню вроде: Product.objects.filter().first(id=pk) (как на пикриле), кто-то в курсе почему он не юзает обычный вызов Product.objects.get(id=pk), а ставит ссаное first? Типо "так круче" или что это вообще?
185 1651265
>>50152
>>50226
Охуенно объяснили. Спасибо!
186 1651270
>>51241
Такими темпами скоро питон превратится в жабу, на которой ни строчки без иде не написать.

from com.palletsprojects.flask.web.application import FlaskApplicationContextConfigurer
image.png5 Кб, 179x279
187 1651307
Как посчитать среднее значение value у каждого b?
188 1651313
>>51262
Предположу, что чувак говнокодит
189 1651315
>>51307
for item in numbv:
..print(item["city"], sum(item["b"])/len(item["b"]))
190 1651320
>>51307
from statistics import mean
res = {}
for d in numbv:
----res[d["city"]] = mean(d["b"]) # если ключи уникальны
191 1651323
>>51315
>>51320
Cпасибо
192 1651345
>>51320
А насколько выгоднее будет сделать так?
res = {d["city"]:mean(d["b"]) for d in a}
Везде пишут, что компрешеншены выгоднее, но насколько?
193 1651360
194 1651425
Итак, вот скажите как есть. Вам с джангой тяжело было разбираться? Смотрю видео, листаю документацию и порой охуеваю от количества последовательностей, которые необходимо выполнить. Может нужна какая-то дополнительная база, чтобы информация более легче переваривалась?
195 1651440
>>51425
Джанго это максимально удобный и медленный фреймворк, на реальных проектах будет какой нибудь форк асинхронного фреймворка и низкоуровневый апи к базе. Вот там ты и охуеешь.
196 1651441
>>51425
Нет, просто Джанго хуета. Там изначально был допущен ряд конструктивных решений, который в общем-то предопределило его судьбу. Короче, пайтон и веб - это такое себе.
197 1651445
>>51270
Ну так и заебись, проще баги отлавливать.
198 1651446
>>51441

> ряд конструктивных решений


Каких?
199 1651449
AIOHTTP
200 1651454
Ебать сколько книг. И в каком порядке это все читать, чтоб дойти до нейросетей? Литература ужасно несистематизированна, непонятно где для вкатывающихся, где для отбитых гуманитариев, а где для понимающих.
201 1651459
>>51454
выясняй с конца, что тебе нужно, очевидно же
202 1651462
>>51459
А знаешь, в этом что-то есть.
203 1651469
>>51425
Очень стройный и хороший движок, с одной проблемой, архитектурно он синхронный, все решения заточены под запрос-ответ.

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

Может тебе действительно какой-то базы не хватает, чтобы освоить, что зачем нужно и почему сделано так.
204 1651470
>>51469
А асинхронные не заточены под запрос-ответ, норкоман?
205 1651471
>>51449
Работает, но спроектирован местами немного убого. Чего вебсокеты стоят, куда более кривые, чем вебсокеты обычные, не из aiohttp. И возможностей из коробки мало.

Совсем-совсем не джанго. Но зато асинхронный.
206 1651476
>>51471
Как фреймворк можно сравнивать с модулем?
Ты ебанутый совсем?
207 1651479
>>51441
Можно узнать какие конкретно конструктивные ошибки?
208 1651480
>>51446
Он нихуя не знает, чмо
209 1651481
>>51262
Ты еблан, твой обычный вызов возвращает объект запроса в орм. First() возвращает первый объект соответствующий запросу. All() вернёт все варианты. Дно ебаное
210 1651482
>>51454
opencv
пиздуй
211 1651483
>>50867
Эта стрелочка показывает тип данных, которые возвращает метод. Полезно для ридблсти и автодокументирования кода.
212 1651484
>>51262
Блять ты знаешь как пишутся sql запросы? Так вот, тут ты можешь делать выборку элементов, в ней делать опять выборку и т.д.. Только ормка защитит тебя от багов, скл инъекций и десериализации
213 1651486
>>50741
миддл пиздабол
214 1651488
>>51476
Вебсокетами из websockets удобно пользоваться. А как сделали в aiohttp совсем нет. Я имею в виду серверную часть.
215 1651492
>>48937
++ Такой же опыт, когда пытаешься "понять" паттерны проектирования, в итоге ния не понимаешь. Я себя доводил даже до ощущения что схожу с ума. В общем лучше всего, думаю, ознакомится с теорией основных 5-7 паттернов (погуглить, есть сайтик с подробной инфой и примерами для пайтона), почитать про них в вики, тоже разобрать примеры (но не тратить на каждый больше 5-10 минут, лучше забить на такие) и попробовать, не особо увлекаясь почитать примеры на других языках, яваскрипт,или ява.
Ну и потом изучить какой-нибудь лёгкий фреймворк, типа aiogram, scrapy, или небольшие рест при какие-нибудь, написать пару проектов, заюзав как можно больше функций и потом почитать исходники фреймворка, осознать паттерны в исходниках, осознать говно в твоём коде и наконец написать ещё один проект. Поздравляю, теперь ты понимаешь ООП чуточку лучше.
216 1651493
>>48937
Есть мнение, что учиться изучая код чужих людей очень хуево влияет на новичков
217 1651494
>>51493
Прикол в том, что ты не должен смотреть как это сделать, ты должен узнать столько, чтобы самому знать ответ на этот вопрос. Так обучение происходит намного быстрее и качественнее.
218 1651496
>>51493
Надо совмещать, и самому писать, и читать.

Если ты будешь только сам писать, ты в пионерство ударишься, в клепание велосипедов, не будешь знать многих паттернов и подходов, решений, которые активно используются. И вообще, не разовьёшь важный и нужный навык, разбираться в чужом коде.
unknown.png78 Кб, 1451x181
219 1651582
Анончики, пожалуйста, срочно нужно, ничего не понял в задании.
220 1651585
>>51582
malenki_pisya = OCHE_BOLSHA_PISYA
for stroka in stroki:
....if chetni_stroka:
........continue
....for element in elementi:
........if chetni_stolbets:
............continue
........if element < malenki_pisya:
............malenki_pisya = element
221 1651589
>>51585
что-то не робит, можно код в репле?
222 1651591
>>51585
вижу тут обман
223 1651593
>>51589
>>51591
Это псевдокод.
224 1651596
>>51593
а можно полноценный, а то я тупенький
225 1651598
>>51596
Это задачка тебе, а не мне.
226 1651599
>>51598
можешь объяснить как сделать?
227 1651600
>>51582
m = [[], [], []] - список списков, типа двумерный массив
subarray = []

for row_num, row in enumerate(m):
____if row_num in S1:
________for col_num, x in enumerate(row):
____________if col_num in S2 and x % 2 == 0:
________________subarray.append(x)
228 1651601
>>51599
Почитай где-нибудь, как найти самый маленький элемент в простом списке, тогда псевдокод станет понятен.
229 1651603
>>51600
Короче, обходишь циклом. Что тебе нужно знать:
enumerate(m)
встроенная функция питона, которая возвращает пару номер элемента и сам элемент
проверяешь, входит ли нужный элемент в множество, если да, используешь его.

Всё остальное совсем тривиально, ты должен сам это знать и уметь.
230 1651612
>>51481

>First() возвращает первый объект соответствующий запросу


В запросе в котором либо один объект, либо нихуя

>>51484
Ты дурачок? Я спрашиваю почему юзается first и filter вместо просто get. Поиск там идет по уникальному ийдишнику
231 1651651
Да, вопрос не по теме треда, но что проще для вкатыша - вью или реакт? Чтобы вот просто взять и начать верстать с гуглом минимальными знаниями js/html/css
Условно нужно прикрутить адекватный вротенд к новостному парсеру, а пользоваться встроенным шаблонизатором фласка как-то уже стремно; хочется полноценное приложение для гитхаба
fuckingcar.jpg154 Кб, 777x1600
232 1651659
Есть тут pygame-шизики? Малой в школу ходит, и тут приходит, и говорит: КАК ЭТО НАРИСОВАТЬ? Сука, а я тожеж никогда не любил чертить или рисовать на ЯП. Как вспомню, как в шараге на ебучем турбопаскале всякие домики рисовали... Короче, збахайте, плес. С меня тонны нефти.
Соре за шакальное качество
233 1651698
>>51659
Там на пять минут разобраться. Кружочки, прямоугольнички.
Делай давай.
234 1651706
>>51698
pygame.org до кучи еще упал, блин.
235 1651726
>>50218
Майкл Бей из мира Питон
236 1651818
В чем разница между pip install и pip3 install?
У меня на винде 3й Питон (3.8 и 3.7), всегда писал pip install и все было норм. Установил на еще один комп Убунту, там терминал почем-то отказывался понимать команду pip и требовал только pip3. Почему так?
237 1651822
>>51818

>Explicit is better than implicit.


https://www.python.org/dev/peps/pep-0020/
238 1651826
>>51822
При чем тут Зен? Мне интересно почему Убунту отказывается понимать pip install
239 1651829
>>51818
Там какие-то анальные пляски с названиями на фоне смены версий. python, python3. С пипом то же самое, надо думать.
240 1651831
>>51826
А может ты хочешь второй пип? Поэтому

>Explicit is better than implicit.

mm.png10 Кб, 710x474
241 1651837
Можно ли как-то в networkx или еще где пары ребер графа в таком виде представлять? Ну тупа сначала если как на пикче 4 полоски высрать, и по ним уже строить остальное?
242 1651839
>>51837

>пары ребер графа


В смысле пары вершин = ребра.
243 1651990
Какие книги по математике посоветуете, паралельно к изучению питона?
изображение.png14 Кб, 889x165
244 1652018
Какая мотивация выпиливать функционал символа '-' из строки форматирования в f-строках?
Я сначала подумал, что в питоне вовсе отказались от этого и поддерживается только в си — но нет, через % работает, через f-строку - не работает.
245 1652028
>>52018
В первом случае ф-строка отрабатывает без результатов, и потом отрабатывает %.
Во втором случае ты ломаешь ф-строку синтаксисом, который она не понимает.
Всё логично.
246 1652038
>>52028
В первом случае там не ф-строка, я просто f забыл удалить.

>который она не понимает.


Почему не понимает? Я вот как раз про это спрашивал. Разве ф-строка не подразумевается как синтаксический сахар для форматирования через %?
Нашёл, что можно написать f"{23: >6d} {34: <6d} {'ab': >6s} {'ba': <6s}", кстати.
247 1652041
>>51818
Хуйня "явное лучше чем неявное" никакого отношения к этому не имеет.
На линуксах долгое время был и есть второй питон. И тысячи скриптов, которые никто не хочет переписывать, вызывали его именно через python и pip. При миграции на третью версию понадобилось одновременно держать две версии питона. Чтобы не сломать старые скрипты, второй питон называют просто питоном, а чтобы юзать третий, нужно добавить 3. Это не проблема именно питона, она общая для всего линукса все эти убогие "2", ".so.2", "-ng" не от хорошей жизни появились.
А идея изначально хорошей казалась - не тащить десяток копий одной либы для разных прог. Теперь же это всех настолько заебало, что придумывают даже уже не в снап, а в докер-образы оборачивать каждую утилиту. Так и живём.
248 1652042
>>52041
а когда второй питон умерт, будем переобуваться обратно, пока 4й не появится к которому прихуячим новые значения, кек
249 1652059
>>52042
Если к тому времени не будет по докер-образу на каждый ls.
250 1652086
>>52038
Нет, это разные синтаксисы. Для спринтф-подобного остается %.
В ф-строки можно даже код внедрять. Читай документацию, в общем.
251 1652115
>>47702 (OP)
Что нужно знать, чтобы работу джуну найти?
252 1652162
>>52115
Блять ну посмотри вакансии браток
253 1652245
>>52038
f строки это развитие str.format()

вместо '{}{}{}'.format(foo, bar, baz)
пишешь f'{foo}{bar}{baz}'
и охуеваешь, как раньше без этого жил
254 1652249
>>47702 (OP)
Сап, петонач.
Каков порог вхождения, тяжело ли даётся писать веб-говно — нужно ли оно, если есть желание стать жуниор-питонистом?
Опишите петон тремя словами.
255 1652256
>>52249
порог вхождения в питон довольно низкий, но если совсем новичок, то лучше поизучать алгоритмы и всякое разное, используя какие-нибудь Си.
Веб-говно, если ты имеешь в виду бекенды, то пишется отлично, это одно из частых применений питона.
"нужно ли оно" хуй знает что ты тут хотел сказать
Описал тебя двумя словами двачер калоед
256 1652257
>>52256

> Описал тебя


читать разучился, да?
257 1652266
>>52249
Иди в циклотрен вкатунов.

>>52249

>Опишите петон тремя словами.


"Не для тебя"
258 1652273
>>52249

> Каков порог вхождения


Очень низкий, считай псевдокод.

> тяжело ли даётся писать веб-говно


Легко.

> нужно ли оно, если есть желание стать жуниор-питонистом?


Нужно, но имей в виду, что из-за лёгкости питона конкуренция ебически высокая.
259 1652287
>>52273

в 3.8 в синтаксис кто-то насрал моржами и слэшами в аргументах
260 1652309
>>52287

> моржами


Нужно в одном случае из ста.

> слэшами в аргументах


Не нужно. Как и keyword-only. Жду, когда ещё добавят хуиты типа spaceship <=> operator.
261 1652311
>>52309

бомбануло, что они при этом еще и засрали интуитивный синтаксис, типа "as" вместо моржа и тупль для позишн-онли аргументов вместо слэша между запятых
262 1652352
>>52059
Да не, тут по-моему извечная борьба интеграции и разбиения.

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

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

Нет универсальной пилюли.
263 1652353
>>52042
Даже внутри третьего питона не всё так очевидно. Его постоянно дорабатывают, появляются новые фичи, а некоторые старые объявляются как depricated. И вот ты пишешь софт, используешь фичу, а ещё потом объявляют

> Deprecated since version 3.7, will be removed in version 3.9


(особый лес такого с 3.10)

То есть у тебя даже при вызове python3 нет гарантии, что код всегда работать будет.
264 1652373
https://pastebin.com/KxzJBW7X

кто объяснит почему вывод
Calling method on Base Class
Calling method on Right Subclass
Calling method on Left Subclass
Calling method on Subclass
[Finished in 0.1s]
265 1652374
>>52373
пиздец меня бомбит от этой хиуты

в книжке написано, что МРО идет слева направо, а в реале справа налево
266 1652375
>>52374
>>52373

class SubClass(LeftSubclass, RightSubclass):
num_sub_calls = 0

def call_me(self):
super().call_me()
print("Calling method on Subclass")
self.num_sub_calls += 1

>>> SubClass.__mro__


(<class 'inh_oop.SubClass'>, <class 'inh_oop.LeftSubclass'>, <class 'inh_oop.RightSubclass'>, <class 'inh_oop.BaseClass'>, <class 'object'>)

а в реале справа налево
267 1652376
>>52375
т.е. первым ищется метод в Райт класс
268 1652377
>>48937
читай книжки вумные
https://dropmefiles.com/UNVJ0

я сам сквозь эту поеботу с огромным трудом иду
блять сколько всякой хуиты придумали
269 1652379
>>49598
>>49600
если вам нужна global, ваш код хуевый
270 1652525
>>52379
Эх, помню как на работе, недо-ждун с пеной у рта мне доказывал что "а чо тут такова, один раз жи, всё норм будет", после того как заменил логику без глобала на глобал.
Получилось выиграть аж 2 строчки кода.
272 1652686
Такой код: https://pastebin.com/RmfQyFcw

Результат такой
Calling method on Base Class
Calling method on Right Subclass
Calling method on Left Subclass
Calling method on SubClass
[Finished in 0.1s]

Получается, что SubClass.call_me() всегда вызывает указанный метод у всех суперклассов (при его наличии)? А как же правило лишь о первом найденном совпадении? Разве SubClass.call_me() не должен вызвать лишь первый найденный у своих суперклассов метод, считая слева направо (здесь: LeftSubClass)

К тому же непонятен порядок печати. Получается такой порядок исполнения кода, из дебаггера https://www.onlinegdb.com/online_python_debugger

16 SubClass.call_me()
17 SubClass.super().call_me() # вызывает call_me() первого слева суперкласса LestSubClass
6 LeftSubClass.call_me()
# тут странность: на строке 7 вызывается не сall_me() суперкласса
# LeftSubClass - BaseClass, а RightSubClass.call_me()
7 LeftSubClass.super().call_me() # вызван RightSubClass.call_me()
11 RightSubClass.call_me() # RightSubClass вызывает сall_me() у BaseClass
12 BaseClass.call_me() # print("Calling method on Base Class")
# тут начались странности:
# print("Calling method on Right Subclass")
# print("Calling method on Left Subclass")
# print("Calling method on SubClass")
Получается, что на строке 7 вызывается не сall_me() суперкласса LeftSubClass (BaseClass), а RightSubClass.call_me(). Почему так? И почему такой порядок принтов?

вот что написано в книжке:
First call_me of Subclass calls super().call_me() , which happens to refer to LeftSubclass.call_me(). LeftSubclass.call_me() then calls super().call_me(), but in this case, super() is referring to RightSubclass.call_me(). Pay particular attention to this; the super call is not calling the method on the superclass of LeftSubclass (which is BaseClass), it is calling RightSubclass, even though it is not a parent of LeftSubclass! This is the next method, not the parent method. RightSubclass then calls BaseClass and the super calls have ensured each method in the class hierarchy is executed once.

Кто понмиает\знает, почему тут:
1. "the super call is not calling the method on the superclass of LeftSubclass (which is BaseClass), it is calling RightSubclass, even though it is not a parent of LeftSubclass!"?
2. почему "LeftSubclass.call_me() then calls super().call_me(), but in this case, super() is referring to RightSubclass.call_me()"?
3. что такое "the next method"?
272 1652686
Такой код: https://pastebin.com/RmfQyFcw

Результат такой
Calling method on Base Class
Calling method on Right Subclass
Calling method on Left Subclass
Calling method on SubClass
[Finished in 0.1s]

Получается, что SubClass.call_me() всегда вызывает указанный метод у всех суперклассов (при его наличии)? А как же правило лишь о первом найденном совпадении? Разве SubClass.call_me() не должен вызвать лишь первый найденный у своих суперклассов метод, считая слева направо (здесь: LeftSubClass)

К тому же непонятен порядок печати. Получается такой порядок исполнения кода, из дебаггера https://www.onlinegdb.com/online_python_debugger

16 SubClass.call_me()
17 SubClass.super().call_me() # вызывает call_me() первого слева суперкласса LestSubClass
6 LeftSubClass.call_me()
# тут странность: на строке 7 вызывается не сall_me() суперкласса
# LeftSubClass - BaseClass, а RightSubClass.call_me()
7 LeftSubClass.super().call_me() # вызван RightSubClass.call_me()
11 RightSubClass.call_me() # RightSubClass вызывает сall_me() у BaseClass
12 BaseClass.call_me() # print("Calling method on Base Class")
# тут начались странности:
# print("Calling method on Right Subclass")
# print("Calling method on Left Subclass")
# print("Calling method on SubClass")
Получается, что на строке 7 вызывается не сall_me() суперкласса LeftSubClass (BaseClass), а RightSubClass.call_me(). Почему так? И почему такой порядок принтов?

вот что написано в книжке:
First call_me of Subclass calls super().call_me() , which happens to refer to LeftSubclass.call_me(). LeftSubclass.call_me() then calls super().call_me(), but in this case, super() is referring to RightSubclass.call_me(). Pay particular attention to this; the super call is not calling the method on the superclass of LeftSubclass (which is BaseClass), it is calling RightSubclass, even though it is not a parent of LeftSubclass! This is the next method, not the parent method. RightSubclass then calls BaseClass and the super calls have ensured each method in the class hierarchy is executed once.

Кто понмиает\знает, почему тут:
1. "the super call is not calling the method on the superclass of LeftSubclass (which is BaseClass), it is calling RightSubclass, even though it is not a parent of LeftSubclass!"?
2. почему "LeftSubclass.call_me() then calls super().call_me(), but in this case, super() is referring to RightSubclass.call_me()"?
3. что такое "the next method"?
273 1652694
Как сделать так, чтобы метод класса (через @classmethod) при вызове от объекта выдавал ошибку? И какое исключение для этого лучше?
274 1652697
Бамп
275 1652703
>>52694
Можно попробовать написать свой декоратор, который будет проверять, что тип параметра не является текущим классом (каким-нибудь inspect.isclass). Ну и кидать какой-нибудь TypeError.
276 1652800
>>52703
Скорее всего пытаешься строить велосипеды, когда есть typing или существующие на нем надстройки для проверок

>>52694
Через type(object) == type (для класса будет True)
277 1652805
Есть лист со словарями вида
list = [{'a':'foo', 'b':'bar', 'c':1}, {'a':'foo', 'b':'bar', 'c':2}, {'a':'foo', 'b':'bar', 'c':3}, {'a':'hui', 'b':'pizda', 'c':1}, {'a':'hui', 'b':'pizda', 'c':2}
Как эту хуйню лучше всего свернуть, чтобы вместо словарей с постоянно повторяющимися ключами был 1 словарь, а ключи "с", которые от словаря к словарю разные - склеить в лист?
278 1652863
279 1652878
>>52863
Нет, ключи повторяются, но встречаются различия

>{'a':'foo', 'b':'bar', 'c':1}


>{'a':'hui', 'b':'pizda', 'c':1}


Так что так не выйдет
280 1652897
>>52878
Ну тогда так https://ideone.com/n7rOMi
При необходимости можно ещё раз пройтись и сконвертировать сеты в списки или одинарные значения.
281 1652920
Аноны, всем доброго вечера.
Пытаюсь разобраться с вот этим https://github.com/vanyasem/VK-Scraper парсером, не зная основ.
Что сделал?
Установил необходимые requests, tqdm, vk_api, youtube_dl
Зашёл в idle , запустил, почитал ошибки
В папке vk_scraper создал vk_args.txt и вписал туда логпасс от своего фейка
Айди пациента вписал в сам app.py в 49 строке
И снова соснул с ошибками на строки 496 и 472
https://github.com/vanyasem/VK-Scraper/blob/master/vk_scraper/app.py
Анон, подскажи позязя
В какие строки в итоге вписывать свой айди и пасс, а в какую - айди владельца альбомов с фото? И как правильно прописать destination для винды?
282 1653051
1
283 1653115
Как в django объединить результаты нескольких queryset в один?..
284 1653448
>>47702 (OP)
Переставил себе ось, все почитил, июо чувствовал себя за ПК как ОКРщик, быдто даже дышал этой пылью. Ну и соотвественно проебал кряк пичарма ну не плотить же, так вот, помогите с кряком ибо где его искать, один бог знает, а как мы знаем, он уже умер и убили его мы. С меня как обычно человеческое спасибо
285 1653477
>>53448
Плати за контент сам и тебе будут платить другие, дилетант блять
286 1653481
>>53115
Ну смари малёк ты сам откуда ? С какого города ?
287 1653510
>>53448
subltext3 тоже может исполнять код внутри, а пичарм гавно тормозное
288 1653515
>>53448
Поставь бесплатный комюнити. Лишь би пиздануть какой-то йоба ультимейт 9000.
289 1653531
>>53510
Кстати, как сделать, чтобы в саблайме код не в новой вкладке каждый раз запускался?
290 1653559
>>47702 (OP)
Cап! Помогите с count():

Допустим, мне нужно найти "near" в тексте. При использовании count("near") также засчитает все производные слова - nearly и прочее. Как без регулярок решить эту проблему? в голову приходят только колхозные варианты - добавить пробел в конец поискового паттерна но тогда слова в конце строк считать не будет
291 1653560
>>53559

>мне нужно найти "near" в тексте


количество "near" в тексте*
быстрофикс
292 1653565
>>53559
Разрезать на слова и удалить неалфавитные символы.
293 1653575
>>53565
А ведь и правда. Спасибо!
294 1653581
>>53575
Я ещё пизже способ придумал - через str.find пройтись по строке, и края найденного слова проверять на isalpha.
295 1653584
Доставьте гайд по асинхрощине вообще прям для самых конченных даунов если таковой вообще существует
Хочу переписать парсер с обычных реквестов с пул экзекутером под aiohttp и посмотреть как оно ваще. Но пока тупо не понимаю че за корутины, как они друг с другом взаимодействуют и почему это работает так быстро даже с наличием GIL'а
296 1653587
>>53584
Асинхронщина работает просто - ты запускаешь какое-то действие и коллбек для него, который надо выполнить, когда оно отработает.
В хттп реквесте 99% времени это ожидание данных, так что можно ждать много ответов одновременно.
Вот и всё.
image.png128 Кб, 674x715
297 1653593
Долбоеб на аноне хочет понять, как исправить ошибку и как её больше не допускать и просит помощи анонов
298 1653594
>>53584
Асинхронщина тебе понравится.

https://habr.com/ru/post/466337/
299 1653600
>>53593

> пытаться деструктурировать строку


> написать if с большой буквы


> не поставить двоеточия


> не поставить отступы


> IDLE

300 1653603
>>53593
у тебя внутри живет дед в курсе???
301 1653609
>>53593
invalid syntax потому что If с большой

обрати внимание на использование input - там должен быть .split, так как на вход ты пишешь строку и функция input возвратит тебе строку (а не 3 элемента)

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

двоеточий нет после if-else-elif - в пайтоне это надо делать

желательно a==b и тд ставить в () - так будет красивее
image.png206 Кб, 1349x715
302 1653618
>>53609
Целую в щечку, спасибо, все работает, как надо
303 1653631
>>53481
Из Харькова
305 1653656
>>53639
>>53594
>>53587
Спасибо. Я уже успел забанится за слишком большое кол-во запросов на переписанном парсере.
306 1653660
А насколько быстро можно усвоить стек питон + фласк, монго, докер, сокет.ио, json-rpc, меркуриал, редис, мемкешд, xml, протобаф?
307 1653665
>>53660
Смотря какой бекграунд. Можно и за месяц +-.
308 1653676
>>53660
36 часов и 47 минут.
309 1653702
>>53665
Немного трогал голый питон, по работе пишу на нем всякие простенькие скрипты для аналитики, также по работе делаю несложные запросы к бд на sql-диалекте яндекса (дома трогал постгрес, MS SQL Server, но в целом одно и то же). А так опыта программирования нет, я ПМ.
27027802520782708.png3 Кб, 603x51
310 1653725
Бля, хуле это мудло пишет мне при попытках обновить/установить пакеты в виртуальной среде:

Could not install packages due to an EnvironmentError: [WinError 5] Отказано в доступе: 'c:\\program files\\python38\\lib\\site-packages\\pip-19.2.3.dist-info\\entry_points.txt'

Но у меня-то не 3.8 в venv стоит, а 3.7! Какого хуя вообще происходит? Откуда оно там взялось блять?
311 1653732
>>53725
Сейчас набегут пердоли и скажут, что нужно запускать на правильной ОС.
312 1653734
>>53725
А схуя ли у тебя питон в програм файлс? Вот и нет прав туда писать.
Ищи в программах и удаляй. И path надо будет подправить, там должно быть.
wtf.png21 Кб, 1425x320
313 1653788
Это рофлы такие? Почему дебагинг мне говорит об ошибке на нулевой (!) строке моего основного шаблона?
Очевидно что он крашнулся не на нулевой строке этой template (я даже примерно догадываюсь где), вопрос в том, почему он мне пишет об этом?..
ну это ж 3я версия джанги блин, ну как такой уебищный дебаг вообще возможен?
314 1653825
Сап, ананасы! Помогите неофиту.
Допустим, есть строка с предложением без знаков препинания.
Какими способами можно расставить в нём запятые по заданной грамматике?
Первое, что пришло в голову, это сделать список слов и предлогов, чтоб в цикле искать по ним подстроки и подставлять запятые по индексам, но мне кажется, что существует подход получше.
315 1653828
>>53825
Невозможно.
Почему предложение без знаков препинания читать сложно? Потому что способов их расставить много, и от них сильно меняется смысл. И читающему приходится догадываться о смысле по контексту.
Самый реалистичный вариант - машинное обучение. Там, может, что-то да получится.
316 1653832
>>51612
Вангую, для того чтобы не ебаться с экспешенами Model.DoesNotExist или как там в джанге.
317 1653837
>>53828
Это и так понятно, я и не ставлю целью воспроизвести синтаксис целиком, только отдельные правила вроде "..., a ...", "например, ...", "... потому, что ..." и так далее.
Мой вопрос был только в способе поиска и подстановки таких паттернов в строке.
318 1653840
>>53832

>не ебаться с экспешенами


То есть вместо того чтоб адекватно получить эксепшн и обработать его, мы условно ставим self.value = None? Совет на все времена нет Осталось только из каждой функции None возвращать, когда получаем непредвиденное значение (и заодно проверять результат каждой функции на None)
Стикер255 Кб, 512x496
319 1653847
>>53593
Очень нравятся отличия между ситуациями "2" и "3"
320 1653849
А что там, кстати, по новой Джанге? Скоро повсеместно переходить начнут, как думаете? И насколько всё изменит это введение асинхронщины?
321 1653867
>>53560
for word in words:
if word[:4] == 'near':
...
322 1653868
откуда тут super().__init__()?

я понимаю что класс наследуется от object

но ...
image.png1,9 Мб, 1320x720
323 1653869
>>53867
if word == 'near'
Стикер319 Кб, 433x380
324 1653870
>>53559

>Как без регулярок решить эту проблему?


Но это же типичный вопрос именно для регулярок. Они идеально для этого подходят, быстрые и оптимизированные.
1EF48FED-D61C-4F13-8E83-B9F1A3D56751.jpeg46 Кб, 480x365
325 1653907
>>53631
Ясно
326 1653997
>>53559
PATTERN = re.compile(r'\bnear\b')
не бойся регулярок, зумерок
327 1654000
Существуют ли Junior Python разработчики? Мне кажется, что нет. В условиях повышения требований нанимают тех, кто уже вырос из данного определения. И что должен уметь Junior/Middle? Какие сопутствующие технологии(если говорить про бэкэнд веба)? В вакансии не посылать, там 90% ебанутых HRш, лепящих всё подряд.
328 1654011
>>53997

> re.compile


Кстати, интересно, почему так до сих пор пишут, если, вроде как, пайтон их всё равно на ходу компилирует и кеширует. Разве что, чтобы паттерн в какую-нибудь красивую переменную засунуть.
329 1654017
>>54000

>там 90% ебанутых HRш, лепящих всё подряд


сильно преувеличил, поскроллишь штук 10 и найдешь вполне адекватные требования
вообще это классный двачевский для оправдания самого себя, я так понимаю ты даже не открывал вакансии
330 1654019
>>54017
миф для
331 1654055
>>54000
Существуют, ведь до мидла надо ещё вырасти, и это не 1-2 месяца занимает.
Зря ты так к вакансиям относишься, читай только требования(технологии именно) и поймёшь что те е надо учить.
332 1654158
>>54000
Мало кто напишет "Джуниор", сразу ломанутся те, кому ещё в стажёры рано.

И не понятно, почему считается, что джуниор это тот, кто совсем чего-то знает. Вообще, на других квалифицированных специальностях после ВУЗа (4-6 лет!) ты идёшь на работу и тоже на младшего. А двочеры почему-то считают, что вот можно полгода поучиться и сразу идти работать.

Вообще, может стоит поискать вакансии в QA на какое-то время, но это именно в фирму к разработчикам идти надо. Так будет реальный опыт работы на реальном производстве.
333 1654175
Анон, подскажи, как сделать двухмерный список на основе другого двухмерного списка через генератор?
334 1654185
Что в форматировании/проектировании питоновского кода мгновенно может выдать во мне пришлого еблана?
Скажем, я хорошо разговариваю по английски и дружу с грамматикой, но говорю с дичайшим руснявым акцентом, отчего все на меня будут косо смотреть. Что аналогия для этого в Пистоне?
335 1654190
>>54175
[vector[:] for vector in matrix]
336 1654194
>>54185
Игнорирование PEP8, например.
337 1654209
>>54190
Спасибо! а если нужно применить функцию к каждому отдельному объекту в матрице? Например: создать из 2-х мерной матрицы чисел, матрицу из этих же самых чисел но типа str?
338 1654211
Что можете посоветовать неофиту для вката, что нибудб подробное по типу лутца, только попизже и без воды? Хочу сильную базу прочитать.

Уже прочел укус питона, щас читаю грокаем алгоритмы
339 1654212
>>54209
Все разобрался сам, оказывается все просто, через list(map())
340 1654216
>>54209
map(lambda row: map(str, row), matrix)
или
matrix = [str n for row in matrix for n in row]
899661AF-172A-4646-B876-EB93588B190E.jpeg907 Кб, 1441x1889
341 1654218
>>54158
А че если им напиздеть что я окончил техновышку (на самом деле я гуманитарий) сказать им что знаю виндовс как 5 пальцев и готов работать за еду первое время. Есть шансы что возьмут? Я ебаный гуманитарий и учу питон, так хоть погрузился бы в атмосферу айти и было бы проще и быстрее вкатываться..
342 1654229
>>54218

>готов работать за еду первое время


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

>>54218

>А че если им напиздеть что я окончил техновышку (на самом деле я гуманитарий)


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

Вакансия смотрится интересной, но не факт, что попасть туда просто. Но попробуй, почему нет.
343 1654240
>>54229
Благодарю. Добра тебе.
344 1654277
>>54185

>отчего все на меня будут косо смотреть


лол что за предрассудки, всем похуй успокойся
image.png35 Кб, 617x315
345 1654285
Захотел тут по человечески перекомпоновать проект - вынести весь свой говнокод в отдельную директорию и попробовать накатить докер заодно.
Обесните, (на пике открыт bot.py) почему пичарм подсвечивает, что якобы некоторых модулей не существует? Хотя они всегда находились рядом, но сейчас их просто всех вместе перенесли из ./ в ./src/
Более того, проект работает. Я где-то (да) объебался или пичарм бесноебит?
346 1654287
>>54285
Точку ставь
from .config
347 1654288
>>54285
Пометь папки как source
348 1654301
>>49133
опыт програмирования со временем прийдет
349 1654310
>>54285
Лучше создай пакет с __init__ файлом, и да скачай isort, а то глаза болят от этих импортов.
350 1654331
>>53997
Тебе, долбоебу, написали - без регулярок. Нет, надо высраться
351 1654358
>>53997
Небось, препод запретил ему юзать регулярки и дал список разрешённых функций.
352 1654384
>>53840
Да, именно так. try except не всегда удобно.

value1 = .first()
value2 = .first()
value3 = .first()
if value1 and value2:
elif value3 and value1:
elif value2 and value3:

Че-нибудь такого рода. Но тебе виднее, дело вкуса (а еще try except по производительности хуже:))
353 1654389
>>54310
>>54288
>>54287
Благодарю за оперативное пояснение. Все поправил, оптимизировал импорты, добавил __init__.py
А ещё я успешно собрал докер образ, запулил его на вдс и развернул помощью компоуза, оч все понравилось, ппц как удобно всё придумано блин.
Мож нахуй ваще этого удава и попробовать вкатится в девопсы
354 1654390
>>54384
Пока в пщ-треде сетуют на отсутствие эксепшенов, здесь сетуют на их наличие, лол.
1586462018876.jpg46 Кб, 551x359
355 1654396
Что такое аргумент self? Покажите на пальцах, а то везде слишком абстрактно описано. Нужен максимально понятный пример, а то я ебанусь и больше не встану.
356 1654402
>>54396
При вызове метода объекта ему автоматически передается сам объект первым аргументом. Это и есть селф.

https://ideone.com/ECUTRq
Т.е. ты вызываешь как в строке 10, происходит то что в строке 11.
357 1654407
>>54396
Есть class Dom.
В нормальном доме у тебя будут атрибуты dweri, okna, sralnik и методы otktit_okno, smit_sralnik. Окна могут быть деревянными или пластиковыми, одннокамерными, двухкамерными, разного цвета и т.д. Self нужен для того, чтобы при изменении этих параметров или выполнении каких-то действий всё это происходило в конкретном доме, а не во всех домах вообще. Потому что окна есть и у машин и у твоих соседей в домах. Но ты-то создал свой Дом(экземпляр класса) и хочешь производить действия конкретно со своим эксземлпяром.
358 1654436
>>54358
Это задание на checkio
018b6db708eeb5240fe0f9c80400b5a6.png3,3 Мб, 1192x1296
359 1654455
>>54436
Там есть довольно странные задачки. Например https://py.checkio.org/en/mission/unix-match-part-1/
Хочется решить как-то просто базовыми средствами, но понимаешь, что придется городить огрод. Поэтому решение заключается в идиотской переделке в регексп.
Не очень понимаю учебную ценность такого.
360 1654479
Я совсем новый ньюфаг в питоне, разбираюсь с черепахой. У меня встал вопрос: я пишу код, потом в командной строке запускаю его, черепаха идет по нужным координатам с заданными параметрами - ОК, получается.
Вопрос - как мне менять ее положение уже во время выполнения программы? Я вижу, что в документации идет >>> приглашение к каждому действию, но не понимаю как совместить режим исполнения командной строки и режим питона.
361 1654485
>>54479
Если я правильно тебя понял - ты запускаешь файлы через cmd типа

>python huepaha.py


А

>документации идет >>> приглашение к каждому действию


Это сам интерпретатор, просто напиши python в cmd или в папке найди исполняемый файл
362 1654486
>>54455

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

ну это чисто технопроблема, а вот что некоторые задачки без специального знания какого-то алгоритма решить почти невозможно - это конкретный проёб. там, где всякая комбинаторика, особенно сложно. ты или пишешь прикольный алгоритм на 10 строк, о котором автор задачи узнал в универе, или по хардкору хуячишь кучу солверов и решаешь задачу численно, если захочешь столько ебаться, конечно. но всё равно обсираешься, потому что ассерт на сервере проверяет какой-то корнер кейс, который справедлив конкретно для "красивого решения" и не приемлет альтернативных решений в принципе
15056074352610.jpg32 Кб, 500x500
363 1654489
Подскажите эффективный способ хранить данные типа ключ : значение, если ключ - интовый уникальный идентификатор, а - просто инт. { 123125 = 12, 12319023812= 1293812938912, ...}

Я хотел хранить в дикте, но на стаковерфлоу сказали что это будет неэффективно при динамически меняемом наборе ключей.
364 1654491
>>54489

у тебя терабайты данных?

если нет, то забей. там просто очкуют, что говноумник в комментах их "срежет", уровнив их авторитет, вынудив извиняться и дополнять, поэтому стараются охватить своим ответом ВСЁ
365 1654492
>>54277

>всем похуй


Ну-ну
Один раз пидором назовут и потом уже будет такая кличка. Меня батя предупреждал
366 1654493
>>54491
Не терабайты, но мне очень критична скорость обработки, очень.
А именно итерироватие / поиск элемента.
367 1654494
>>54493

ебош базу данных тогда
368 1654495
хотя в новых йоба диктах cpython может быть какая-нибудь оптимизация, и всё будет работать с той же скоростью
369 1654496
>>54493
Если тебе их еще и хранить надо, бери No-SQL какой-нибудь, считай тот же словарь
370 1654497
>>54390

>пщ-треде


Шо?

>>54493

>dict


>мне очень критична скорость обработки


Ну почему никто не читает про алгоритмы и структуры данных?..
371 1654499
>>54494
Ты шутишь? Я пока буду к ней стучаться/получать ответ, я триcта раза смогу это все обойти.

>>54496
Какой носклюль? Есть же примитивные типы в питоне, все что поверх этого - тормознутый оверхед

>>54497
И чем в дереве плоха скорость обработки?
В крестах std::map работает быстрее листа при достаточном количестве элементов

Я ж не знаю что у вас быстрее/что медленнее работает, поэтому сюда и пришел
372 1654501
>>54499

что у тебя за задача?
373 1654502
>>54501
Хранить структуру данных состоящих из пары инт инт.
Наиболее быстрый обход структуры и поиск элемента по значению.

В плюсах это либо std::vector< std::pair<int, int> >, либо std::map<int, int>. Первое работает быстрее при небольшом количестве элементов.
374 1654505
>>54499

> Какой носклюль? Есть же примитивные типы в питоне, все что поверх этого - тормознутый оверхед


Ну какбе питон тоже не заточен под скорость.
Я думаю та же редиска будет быстрее начиная с некоторого довольно небольшого объема.
375 1654507
>>54502

>std::map<int, int>


Может быть unordered_map всё-таки? map же говно ебаное с плохой константой.

Дефолтный словарь это unordered_map, время доступа константное.
Попробуй from typing import TypedDict ещё. Я чёрт его знает что это, просто проверил если ли типизированные словари - и они нашлось.
376 1654508
>>54507
Для 100 элементов пока этот хеш вычислится я чай успею сделать
При больше 1000-10000 да, решает.
Мап еще и может оптимизировать поиск до логарифма, не знаю правда как.

>import TypedDict


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

>Дефолтный словарь это unordered_map


Даже с интами, питон все равно хеш считает?
377 1654512
>>54508
Мап - сортированное дерево, вот тебе и логарифм для поиска в виде высоты дерева.
Стоит его использовать, только если тебе эта сортировка нужна постоянно. Во всех остальных случаях как ты и сказал - вектор на малом количестве и хеш-таблица на большом. Мап на любом количестве проиграет вектору или таблице, скорее всего - ведь там даже доступ к элементу за логарифм, лол.

>TypedDict


Да я сейчас почитал, это вообще не то. Название обмануло меня.
Просто в нумбе (http://numba.pydata.org/numba-doc/latest/user/jitclass.html#specifying-numba-typed-containers-as-class-members) typed-dict это совсем другое, там явно тип указывается, и потому я подумал что другой TypedDict это тоже что-то подходящее.
378 1654519
>>48204
Дампани запрос в логи или принтом и посмотри, где ошибка.
379 1654520
>>54508

>Даже с интами, питон все равно хеш считает?


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

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

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

Поиск-удаление это O(1) в норме. Но в плохом случае может доходить до O(N), это если неудачно дерево строится, из-за неудачного хеша это возможно. Но это надо специально под этот хеш программу строить. Рандом и "подряд" работают примерно одинаково в тестах.

В питоне внутри всё реализовано через словари. Ты когда функцию вызываешь, в ней локальные переменные тоже в словарях. Всё в словарях. Поэтому работа с ними оптимизирована по-максимуму. И поэтому же пытаться тут что-то выиграть бесполезно. Объём занимаемой памяти можно выиграть, если специальные либы использовать.
380 1654523
Не могу найти в PEP8, надо ли юзать пробелы например при передаче аргументов в функцию?
compute(img, kp)
А если это цвета\точки?
set_color(0,255,0)
381 1654530
>>54523

>Не могу найти в PEP8


Это порево двадцатитетней давности, времён 15 дюймовых мониторов редакторов, работающих в текстовом 80-колоночном режиме. Не обязательно дрочить на него.

>>54523

>надо ли юзать пробелы например при передаче аргументов в функцию


После запятой - надо. PEP8 рекомендует НЕ ставить пробел тогда, когда присваивание в передаче параметров делается, вокруг знака равно. Но после запятой надо.
func(par1, par2=2, par3=3)

>А если это цвета\точки?


Всегда, и в tuple тоже.

Вообще здесь есть
https://www.python.org/dev/peps/pep-0008/#whitespace-in-expressions-and-statements

Просто посмотри описанные примеры. Без пробела после запятой очень неудобно читать, это вообще стандарт, и в программировании, и в оформлении текстов.
382 1654574
Помогите разобраться с iterator и iterable.
iterable - это то, что имеет метод __iter__(), который возвращает итератор, а итератор - это то, что имеет метод __next__(), так? Правильно ли я понимаю,что когда я пишу
l = [1, 2, 3]
for i in l:
...
на самом деле неявно вызывается l.__iter__(), из которого потом берутся next?
383 1654589
>>54574
Да, всё именно так. Почти.

Сначала вызывается l.__iter()__
Он возвращает итератор, это этот итератор не обязательно тот самый l. Более того, скорее желательно, чтобы это был какой-то другой объект. Демо-примеры итераторов в этом плане не очень корректны (те, что возвращают self), они свалятся за примере
for i in L:
___for j in L:
______print(i, j)

но не всегда это актуально.
385 1654619
>>54402
>>54407
Вот спасибо, мужики. Пример с домом окончательно расставил все на свои места.
386 1654641
Ясно понятно модер данной борды пидорас удалил мой тред. Дублирую сюда: За год собираюсь вкатиться в классический питон+маш об. Заниматься буду 8-12 часов 6-7 дней в неделю. Знаю основы прогерства, по вышмату и статистике 5. Планирую после вката съёбывать в Силиконовую долину, но вкатывать буду без диплома. В чём подводные и почему нет?
387 1654648
Помогите, как вывести множество - print(*sorted(VSEYAZIKI,key=str), чтобы они шли не в одну строку. желательно без циклов
388 1654649
>>54648
end='\n'
error.PNG3 Кб, 267x98
389 1654652
>>54649
Я так делал уже, но вот ошибка.
390 1654653
>>54652
А теперь забей это в переводчик и не морочь людям голову
391 1654658
>>54653
Забивал уже, но кидает на забугорные сайты, где все говорят исключительно про версию Питона...
392 1654660
>>54658
Ну так залей код полностью для начала
393 1654664
>>54660
Уже решил проблему, спасибо. key=str каким-то образом мешал, лол
394 1654696
>>54396
ето сам экземпляр класса
395 1654769
>>54641

> без диплома


В этом подводные.
396 1654771
>>54641
Ну да, это не стоит отдельного треда, спросил бы в общем ньюфаг треде.

>по вышмату и статистике 5


Имхо, никаких подводных и проблем не предвидеться. Если ты в самом деле понимаешь статистику и теорвер на отлично, то ты уже лучше половины машинлёрншиков, а подтянуть прогерство для питоновых либ маш-оба вопрос одного-двух месяцев в зависимости от степени знакомства с основами прогерства.
397 1654802
>>54641

>Планирую после вката съёбывать в Силиконовую долину


Там таких как ты пятачок за пучок, причём своих, которым визу делать не надо.
Прозрачность.png114 Кб, 337x399
398 1654812
Парни, питон начал изучать недавно. В данный момент работаю с Pillow. Собственно столкнулся с проблемой: когда изменяю размер прозрачной гифки, а потом ее сохраняю, то у меня теряется ее прозрачность. Подозреваю, что проблема именно в save(), так как на всех этапах до сохранения каждый фрейм отображается прозрачным. Я думаю проблема в том, что параметр прозрачности в каждой картинки разный. Хелп!
399 1654832
>>54769
Да ладно, везде пишут что берут за знания а не за бумажку. + мне похуй будет даже если шарагу закончу ибо живу в ссаной лугандонии бумажкой которых я могу только подтереться.
>>54771
Ну тервер подучу мальца и думаю ок будет, в остальном себя оцениваю как сильного студента. Сейчас вот это смотрю https://youtu.be/2XFaK3bgT7w?t=3152 потом по списку книжек думаю уже идти.
>>54802
Значит выдрочусь на уровень знаний получше тех, которые там.
400 1654840
Тут в ЖС-треде мощные баталии за/против ООП, по питону тоже небольшие срачи есть: https://2ch.hk/pr/res/1651996.html (М)

И заодно вопрос: насколько адекватно в питоне реализованы ООП-фичи и функциональные фичи?
401 1654842
>>54840
Более чем достаточно адекватно для полноценной работы.

> ООП-фичи


Сейчас набегут адепты смоллтолка.

> функциональные фичи


И хаскелля.
402 1654850
>>54842
2 мертвых языка
403 1654851
>>54850
штоб умереть надо жить для начала, оба этих языка не жили
404 1654856
>>54840

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


Простенько и хуёвенько.

>функциональные фичи


Учитывая, что все "функциональные фичи" — это три фичи (типизация, first class functions и паттерн матчинг), то примерно никак.
405 1654943
Хочу прикрутить форму загрузки файлов на сервер. Все сделал по докам и ошибка 404 при нажатии кнопки "загрузить". Что не так?
406 1654950
>>54856
Языки с чистой парадигмой никому не нужны. Путь то ООП, ФП или что-нибудь ещё. Нужны языки, которые не сковывают и позволяют разные подходы применять, причём одновременно

В Питоне есть и основы ООП, и какой-то минимум ФП, и метапрограммирование, и параллельное, и асинхронное поддержали вполне достойно. В этом его сила. Свои слабости тоже есть, не без них.
407 1654958
Аноны, помогите, горю уже. Мне нужны байты файла, который я отправляю на апи через FileField, пытаюсь читать его в представлении из реквеста: request.FILES['file].read() и мне отдают b'', хотя size у него есть и он readable. Что я могу делать не так?
408 1654961
>>54950

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


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

> В Питоне есть и основы ООП


Есть.

>и какой-то минимум ФП


Нету. Блять, в питоне даже лямбд нормальных нет, ты о чём вообще?

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


В питоне это тоже хуй пойми что, а не МП.

>и асинхронное


Ну хоть один поток полностью утилизировать сумели, ахуеть.

В питоне, как в языке, толком-то нихуя и нет. Он простой как палка, и содержит 0 каких либо концепций, просто тупой как палка язык. За что и ценится.
409 1654962
>>54950

> Языки с чистой парадигмой никому не нужны.


Всё-таки отчасти нужны, их используют как DSL, но для чего-то большего они не особо годятся.

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


Главное при добавлении фич в язык не увлечься, а то получится C++. Тоже не сковывает, да и вообще язык универсальный, но сложноват в использовании.
410 1654966
>>54962

>Всё-таки отчасти нужны


Где например? Для всяких декларативных UI-ев обычно на том же языке DSL и клепают. Больше той же чистой функциональщины нигде не видал.

>Главное при добавлении фич в язык не увлечься, а то получится C++. Тоже не сковывает, да и вообще язык универсальный, но сложноват в использовании.


Язык либо живёт и развивается, либо тухнет. Обрастание фичами — это вопрос времени, для того и нужны новые языки (или хотя бы версии, дропающие обратную совместимость), чтобы собирать все удачные идеи из старых и дропать лишнее. Правда бизнесу этого не объяснить, и легаси на каком нибудь втором питоне в каком нибудь фб так и будет жить как всякого банковское/военное говно на коболе/фортране, лол.
411 1654970
>>54961
Есть там всё, если не заниматься демагогией, но никто за простым синтаксисом не разглядит, ведь всем надо скобочки, сотню ёбнутых конструкций, синтаксиса в духе перла и прочих фишечек.
412 1654980
>>54962
C++ обрастал фичами во много слоёв, причём эти фичи костылями прикручивать приходилось, чтобы не ломать совместимость со старым языком. В результате какой-то адъ на выходе.

И такое ощущение, что там идеологи об элегантности особо и не думали. Всё-таки система ценностей идеологов питона немного другая, это чувствуется.

Хотя последнее время много какого-то говна принесли. f-strings на первый взгляд прикольно, но реально это шаг в сторону говнокода, такой php древних времён. Декларации какие-то дикие.
413 1654985
>>54970
Там нет нихуя по факту, мань. Я же говорю: он потому и ценится. Можно давать писать код людям, которые в программирование пришли вчера.

>но никто за простым синтаксисом не разглядит


А что разглядывать-то, мань? Это вполне конкретные вещи, которые в питоне нет. А как говорят гоферы — и не нужно.
414 1654988
>>54966

>и легаси на каком нибудь втором питоне в каком нибудь


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

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

Вот банальные юникод-строки. Был префикс u"строка" во втором питоне, обязательный. Чего стоило оставить этот префикс в третьем, но объявить его obsolete, с обещанием убрать через несколько лет? Тогда можно было бы писать совместимый код и постепенно перекатываться.

Одна эта мелочь ставила крест.
415 1654989
>>54980
Элегантность по отношению к питону, имхо, неверный термин. Всё же, он про эстетику. А если говорить про эстетичный (или красивый) код, то тут уже по возрастающей идут всякие руби...скалы...хаскелли.

В питоне думают о простоте. В каком нибудь го о ней думают ещё больше.
85748.jpg26 Кб, 700x700
416 1654992
>>54989

> В питоне думают о простАте



Так будет больше соответствовать действительности.
417 1654993
>>54485

>Если я правильно тебя понял - ты запускаешь файлы через cmd типа


Да, все так. Я думаю вот о чем - черепаха пошагала и остановилась, потом я ее не выходя из графического интерфейса (получается файл все еще исполняется, cmd не выдала приглашения) могу ли перемещать дополнительно?
В общем, шизоидно получилось, суть - могу ли я дополнять уже выполненный код и получать сиюмитный результат?
Вот прошла она у меня 50 пикселей и все, строки в файле .py кончились а я тут такой опа и дописал пиздуй еще 20 пикселей и она попиздовала?
418 1654995
>>54988
Сразу видно нюфага, лол.
Нет ничего более постоянного, чем временное. Сегодня ты вставляешь костыль, завтра переходишь на другие таски, через пару месяцев ещё кто-то доложит туда свой костыль и пойдёт по другим таскам, а через пару лет в такой код никто даже залезать не захочет. И уж тем более в FAANG-ах, где кол-во программистов просто космическое и кодобазы на сотни гб.

Это как с недавним дропом поддержки x32 битного софта на макоси. Внезапно оказалось, что куча даже нового софта написана криво и не умеет в x64 (с банальными ошибками, вроде кривого типа для индексации массива), просто из-за того что была такая возможность и все хуй ложили пока не пришёл эпл и не выебал всех в сраку.
419 1654998
>>54989

> хаскелли


> эстетичный


Уродливый язык, как ни посмотри. С одной только обработкой ошибок здесь всё в разы хуже, чем в Go. Функции, принимающие тип из 100500 полей. Лапша из рекурсий и лямбд, потому что нет циклов и переменных. Стиль именования идентификаторов из одной буквы. Нужно быть в конец матанутым, чтобы увидеть в этом красоту.
420 1655000
>>54998
Зато решить задачу неэлегантно, засрав всё вокруг стейтом нельзя, вот он и эстетичный, лол. Всё есть функция, без лишних сущностей, есть жи брат
421 1655018
>>54961

>Нету. Блять, в питоне даже лямбд нормальных нет, ты о чём вообще?


Странно что ты еще Хаскель не притащил как образец на который маст хэв равняться иначе "не_ФП_яскозал"

>В питоне это тоже хуй пойми что, а не МП


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

>Ну хоть один поток полностью утилизировать сумели, ахуеть


Асинхронная работа в Питоне работает как надо, проблема лишь что приходится часто полагаться на сторонние либы ведь стандартная asyncio это просто каркас для других пакетов и не более. Многопоточность же не могут завезти в первую очередь из-за ограничений CPython которые хуй так просто наебнешь. Где хардкорная многопоточность все же нужна GIL внезапно таки освобождается и она работает, но это все под капотом ебошит и программер туда не залезет дабы ничего не наебнуть. numba тому пример
422 1655030
>>55018

>Асинхронная работа в Питоне работает как надо


Недоделана. Например asyncio.wait_for()
В теории должна прерывать выполнение по таймауту, однако реально этого не делает, если исполнение зависает на синхронной задаче, прерывания не происходит. Почему? Я ожидаю другого поведения. Это должно быть заложено в язык, но этого нет.

При этом реализовать самому реально, используя библиотеку signal, системнозависимую правда. Но это неудобно.

Ещё проблема с чтением stdout/stderr в запускаемых отдельных процессах. Нельзя читать данные, пока вызванный процесс не завершит исполнение. Это ни разу не асинхронное поведение, и хрен переборешь.
image.png12 Кб, 714x71
423 1655036
Пчелы, есть вот такой код парсера (он работает, с ним все хорошо), написанный с использованием aiohttp
https://pastebin.com/BELtEqvX
И есть модуль main, так же асинхронный, который вызывает в себе этот парсер
https://pastebin.com/t6w3PHJy
Луп мейна крутится с условием run_until_disconnected()
А луп парсера run_until_complete(). Иными словами, мне просто иногда из постоянно работающего мейна нужно вызывать метод из парсера, однако интерпретатор запрещает это делать с ошибкой пикрил
Почему так получается? Как мне разделить эти тупые лупы?
изображение.png8 Кб, 239x85
424 1655081
Сап, прогроммач. Есть пикрелейтед окошко. Поля ввода пароля защищено заглушкой вида show='*'. Есть кнопочка show, на нее привязана функция, которая меняет параметр show поля ввода пароля на None. Тем не менее, пароль остается все в том же виде. Есть идеи, как это реализовать?
425 1655084
>>55081
А, я уже сам разобрался. Надо менять не на None, а на ''
426 1655088
>>55036
Он кекается на bot.run_until_disconnected() или self.loop.run_until_complete(self._parse_content()) ?
image.png28 Кб, 756x156
427 1655099
>>55088
На втором.
Если я правильно понимаю терминологию, то мейн поток спокойно крутится, пока не дисконнект
А вот поток из парсера уже запустится не может
Полез в доки asyncio, похоже нужно вручную создавать новый таск
428 1655103
429 1655132
Есть знакомый, средней руки кодер, написали ему с одной веб-студии, покодить на Джанге за 7 доллларов в час, ну он связался, подписал договор, дали доступ ко всему, он потыкал-потыкал, тоже с Докером проблемы возникли, там-сям поковырялся, толком не разобрался. Ну его через пару дней и отшили, сам оправдывается, мол и учеба, и опыта с подобным не было.
Странный чел.
430 1655133
>>54943
бамп
431 1655136
>>55132
даун я бы на его месте, со всем этим кризисом, жопу рвал бы как мог
432 1655143
>>55132
Бывает
1586550139602.jpg109 Кб, 1300x961
433 1655146
Что на рынке труда с питоном? Меньше работ стало или больше? Один челик сказал, что перекатился с крестов на питон в другом треде и я заинтересовался тоже.
434 1655161
>>54993
Через просто исполнение файла - вряд ли, а если просто код в интерпретатор ебанешь - скорее всего сможешь, поэтому и >>> у тебя в учебнике
435 1655171
>>55161
Понял, спасибо.
Меня вот интересовало как раз пользуются ли люди в реальных коммерческих проектах возможностями интерпретатора?
Или все ограничивается исполнением заранее прописанных .py файлов?
Дело в том, что я еще пока не до конца понимаю саму парадигму кодинга на питоне(да и кодинга в целом). И когда ты начинаешь изучать подобные вопросы не поднимаются в литературе, а мне в голову засел такой, я считаю, фундаментальный по крайней мере на моем этапе развития в этой теме вопрос.
436 1655189
>>55171
Это одно и то же. Просто в одном случае интерпретатор читает ввод от тебя, а в другом из файла. Суть от этого не меняется.
437 1655193
Мммм, зачем нужны массивы, если есть списки? Погуглил немного и особой разницы между ними не обнаружил. Разве что ограничения на тип данных и размер для массива.
438 1655194
>>55193
Массив - static array С-господа пояснят
"Список" - dinamic array
List - linked list, нахуй ненужон кроме пары частных случаев
439 1655195
>>55193
Они быстрее и оптимальнее по памяти, потому что нет этой универсальности.
440 1655202
Для чего нужны массивы, когда есть кортежи?
441 1655217
>>55193
Массивы ищутся в памяти быстрее всего, так как элементы идут друг за другом, можно сказать

Каждый элемент списка разбросан по памяти и поэтому этот элемент должен содержать в себе данные любого типа И указатель на следующий элемент.

Поэтому также можно сказать, что массив это не набор указателей.
sage 442 1655228
>>55202
Не нужны, нужна повсеместная иммутабельность и бесконечный ряд факториалов на хаскелле.
443 1655317
>>55099
Тебе не нужно внутри объектов пользоваться функциями вроде run_until_complete.

Цикл обработки сообщений, Event loop который, в программе всегда один. Ты его стартовал и всё, дальше ты кидаешь в этот цикл свои задачи.
вот такого у тебя не должно быть:
def get_posts(self):
____return self.loop.run_until_complete(self._parse_content())

Код будет иметь другой вид, скорее
async def get_posts(self):
____return await self._parse_content()
444 1655337
>>55317

>Код будет иметь другой вид, скорее


async def get_posts(self):
____return await self._parse_content()
О господи, мне аж поплохело от того, насколько это очевидное решение.
Вероятно я запутался из-за того, что много тестировал отдельно этот класс вне основного Event loop
В общем, теперь все работает, большое спасибо!
445 1655345
Сап. Есть фукнция а(x), в функции а есть функия b(c)
Как вызвать функцию а, чтоб передать ей с (для функции b) ?
446 1655348
>>55345
def a(x, c):
____b(c)

Сформулируй вопрос нормально. Может быть ты даже сам придумаешь и ответ после этого.
447 1655357
>>55348
Уже понял. Нужно вызывать a(x)(c).
448 1655369
>>55217
Спасибо за всё писькинс
мимоньюфанг
postsentries.png13 Кб, 833x495
449 1655521
В Джанге у меня есть обычные модели типа Post и модели Entry, которые связаны с постами через ForeignKey (пикрил)
Надо намутить разграничение доступа между пользователями, чтобы только создавший эти instance мог их редактировать и смотреть. Мне надо поставить поле owner = ForeignKey(User) внутрь обоих: Post и Entry или достаточно будет поместить его только внутрь Post? Как обычно делается? Я канешн понимаю что Entry по-любому связан только с одним конкретным Post, но проблем с безопасностью так не возникнет?
450 1655647
Аноны, как проверить что список не пустой?
451 1655651
>>55647

> Аноны, как проверить что список не пустой?


Ну я и долбоеб. Уже нашел - пустой список - это False в питоне
A = list()
If not A:
Print(pust)
452 1655667
Нужно проверить некоторое количество ссылок на присутствие кейвордов на странице.
Понятно, что можно удалить теги и искать подстроки, но хочется что-то более сириус бизнесовое.
453 1655681
>>55521
А смысл дублировать поле в 2х моделях, если они связаны и так и ты можешь получить доступ в оба направления и посмотреть это поле?
454 1655746
>>55681
Нет какого-то эксплойта, через который можно посмотреть чужие Entry?
455 1655788
Анон, привет, есть цель написать очень простое приложение на android, можешь описать буквально пару шагов которые нужно пройти чтобы написать его на чистом python?
456 1655814
>>55746
У тебя же не простые селекты, куда ты можешь что угодно поставить, так что какого-то омега-очевидного способа скорее всего нет. Хотя если авторизация через токен и кто-то спиздит чужой токен, то можно, но это уже проблема пользователя
изображение.png1 Кб, 166x182
457 1655827
>>54520>>54508

>Даже с интами, питон все равно хеш считает?


>Да, конечно.

458 1655905
Привет. В питоне есть какой нибудь таймер, фитиль? Сейчас попробую объяснить

Вот у меня есть

While True:
----if событие происходит:
--------time. sleep(10)
-------- сделать так-то

Есть ли какой-то способ заменить sleep таким образом, чтобы действие исполнилось через 10 секунд, но чтобы в эти 10 секунд код не простаивал в ожидании, а все так же отслеживал события, запуская в очередь новые таймеры, если события произойдут
?
459 1655907
В жс можно написать for-цикл вроде этого:
for (a = 1, b = 3, c = a * b; a < 10; a++) {
...
}
Как что-то подобное реализовать с питонухе?
460 1655914
>>55827
С словарях хитрее алгоритм. Хеш-поиск работает так, что у тебя есть линейный массив с прямой адресацией по хешу
address = array[hash]
Ты просто не можешь сделать такой массив из 2^64 элементов, памяти не хватит в принципе. Массив маленький, динамически расширяемый по мере разрастания словаря. И вот магия с тем, как вычислить этот маленький хеш, она есть. И как коллизии обрабатывать, там ещё больше магии.
Стикер191 Кб, 284x284
461 1655916
>>55827
Просто хеш инта равен этому инту
462 1655919
>>55907
Никак. Этот тип цикла не поддерживается.
463 1655921
>>55905
Тебе надо открыть для себя асинхронное программирование. Да, в питоне это есть.
464 1655925
>>55907
b = 3
c = b * 1
for a in range(1, 11):
____...
Не очень понял, зачем тебе действие, которое выполняется один раз, нужно запихивать в скобки, но ладно.
465 1655928
>>55905

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


Скорее всего тебе понадобиться многопоточность.
Либо ты можешь убрать свой sleep и во время отслеживания своих действий (точнее, между ними) и запуска новых таймеров время от времени запускать проверку не прошло ли 10 секунд и не произошло ли какое-то событие - но это утопия и подходит только для не очень сложных случаев.

>>55907
В питоне только foreach цикл, такого for нету.
Можешь записать свою фиготу через while, впрочем твой конкретный случай можно и через for записать - у тебя вроде бы только a изменяется.

>>55914
Я в курсе же про всё это, и про коллизии тоже. Нет там никакой магии. Скорее хеш-функция выдаёт стандартный 64 битный результат, а словарь использует младшие n битов, удваивая и перестраивая массив при проценте заполнения больше определённого.
466 1655952
Как "перезагрузить" БД при работе с Джанго? Я тестирую приложение у себя на машине, поэтому часто приходится очищать БД (Postgres) и заполнять ее новыми данными. Раньше просто удалял модели и файлы миграций, теперь эта срань сыплет мне какими-то ошибками (django.db.utils.ProgrammingError: ОШИБКА: столбец "name" в таблице "django_content_type" не существует)

Что делать? Стирать к херам вообще все что есть?
15097077271480.jpg60 Кб, 599x900
467 1656003
Аноны, посоветуйте плиз курсы для ньюфага
1) онлайн
2) без жесткого тайминга (сдай задание завтра или умрешь)
3) с сертификатом
4) можно на ингрише
Очевидная Coursera очевидна?
468 1656028
>>55788
Никак ты этого на питоне не сделаешь, разве что консольный скрипт в каком-нибудь QPython запустишь.
Андроид - это жаба и котлин. Даже попытки написать что-то на родном NDK на C++ приводят к тому, что шаг влево шаг вправо - и приходится возвращаться к жабе.
Теоретически, возможен вариант с Jython, но вряд ли где-то есть нормальный пошаговый туториал, всё обрывками.
469 1656102
>>55788
kivy
но пожалуйста, освой Kotlin, он не такой ебанутый как Жаба и даже сходства с Питоном там есть, не иди по тропе пизданутых жс-еров которые суют свой язык просто всюду (в том числе и на мобилки), уже засрали все что смогли
470 1656104
Так, блэт. Внутри одного из class-based CreateView в Джанге у меня крашился редирект, решил провести ахуительный дебагинг с помощью print и посмотреть какой url возвращается его методом get_success_url:
print('URL:', self.get_success_url())
По итогу увидел что собственно этот метод и крашится: AttributeError: 'NoneType' object has no attribute '__dict__' С хрена ли метод не возвращает мне тот success_url, который был определен в классе?
15863230129220.png938 Кб, 635x637
471 1656105
Пистоны, вопрос по pyqt5.
Мне надо иметь возможность, сортировать результаты по нескольким значениям.
Т.е. например, есть список категорий, пользователь может несколько раз из этого списка выбирать разные значения и они "суммируются", как например тэги или фильтры на некоторых сайтах.
Какой виджет для этого лучше всего подходит?
472 1656106
>>56104
Дополнение: крашится он начал после того как я переопределил метод form_valid и стал сразу возвращать в конце return HttpResponseRedirect(self.get_success_url())
Думал, что все должно нормально работать, но что-то идет не так
473 1656228
>>55952
https://docs.djangoproject.com/en/3.0/ref/django-admin/#flush это что ли?
Для прогона тестов джанга создает отдельную бд и потом удаляет её, и если я правильно понял, что сомнительно, то вот здесь https://github.com/django/django/blob/master/django/test/utils.py есть функции setup_databases и teardown_databases, который смогут тебе помочь, если тебя надо снести базу и на ее руинах создать новую. А может лучше тесты написать и не страдать.
>>56104

>AttributeError: 'NoneType' object has no attribute


Либо не передал чего надо в метод, либо не вернул чего надо из метода. Если покажешь код, то будет проще тебя помочь.
474 1656343
конструктор ботов для телеграмма

Всем привет. Нужно без знаний кода собрать бота для телеграмма. Его функционал как у тиндера, только на минималках:
1. Зарегался, указал описание, фото, город
2. Жмешь поиск и тебе профили таких же зарегавшихся показывается

Я смогу такое сделать на конструкторе? Или там только «если а то б»?
475 1656361
>>48937
Думаю об используемых сущностях всегда и везде, смотришь на дорогу, думаю о классах Транспорт, наследуемых от него классах Машина и т.д., и т.п. ООП про мышление, а не про дрочку. Старайся думать о логике приложений на смартфоне, какие классы реализовывали разработчики, по твоему мнению. Что-то в этом духе.
476 1656379
Бля челы как заставить себя развиваться дальше (зачем и куда)
освоил удава (+ попутно жс (ес6 без фреймворков), жабу (в шараге) и всякие инструменты автоматизации типа баша, докера итд) на уровне "медиум++ задачек с литкода без гугла"
Но стажировок щяс ни у кого нет; через шарагу можно только в вротенд вкатится, а я хочу в бекенд

Если своровать у кого-нибудь классный гитхаб и отрефакторить его под себя, это покатит на собесах?
477 1656395
>>56102

>освой Kotlin


Блять опять эти скобочки дрочить блядские, начал изучать python потому что нет этой бесящей хуйни, но все равно, спасибо, буду параллельно изучать еще kotlin
478 1656397
>>56395
python kivy
480 1656430
>>55788
Гугли реакт нейтив, нейтив скрипт и прочух хуйню, вкатыш.
481 1656431
>>56430
JS - для пидоров-смуззихлёбов.
sage 482 1656447
>>56343
Так вот почему здесь так любят делать ботов - потому что это гуманитарное занятие где-то на уровне вордпресса и макросов для экселя. Им дали простейший в использовании язык - нет, не хочу, хочу программирование мышкой.
483 1656448
>>56430
Вопрос вроде был "как писать для андроида на питоне", а не "как писать для андроида не на жабе".
484 1656466
>>56343
Конструкторы нужны для очень простых проектов уровня сайтов визиток. Сам понимаешь, какая там логика.
Даже если и сможешь, это будет такое извращение, что проще самому выучить какие-то базовые штуки и накидать проект за пару часов.
Тебе всего-то понадобится обертка для работы с апи телеграмма (советую telethon или, если туповат - телебот; у них у обеих шикарные доки с кучей примеров) и какая-то бдшка. Можно воспользоваться встроенной sqlite, если бот небольшой - для знакомств с одноклассницами, например.
И в принципе все, это очень просто.
485 1656495
>>56379

>жабу (в шараге)


Удачи придти на вотчину к жаба-бояринам, там ты будешь обоссан и скормлен очередной AbstractProviderActorFactory
486 1656498
>>56398

>https://en.wikipedia.org/wiki/Kivy_(framework)


А кто-нибудь на нём писал что-то практичное, что именно на смартфонах работает?

Жить с ним можно, нормально там по скорости, подводные камни и слабые места есть?

С сетью нормально дружит? С asyncio можно подружить, или надо треды для сети делать, или как там вообще с этими вопросами принято?
487 1656500
>>56466
Так ладно. Я в качестве хобби когда-то только версткой и чуть js занимался. Я смогу эту хуйню на джаваскрипте сделать? Я не буду ради этой задачи питон изучать, лучше денег накоплю и фрилансеру задачу поставлю.
sage 488 1656512
>>56500
Да.
489 1656529
>>56498

>кто-нибудь на нём писал



нет
image.png135 Кб, 680x715
490 1656535
Дорогой анон, на что эта хуйня ругается?
491 1656537
>>56535
Отступы неправильные.
sage 492 1656538
>>56535
На синтаксис.
493 1656540
>>56535
Отступы.
495 1656552
>>56535
А еще у тебя n не определена.
496 1656560
>>56542
Вау, и правда даже официальная поддержка asynio уже есть.
https://kivy.readthedocs.io/en/master/api-kivy.app.html#async-configuration

Спасибо, Юра Гагарин, ты подарил мне надежду на космос.
497 1656562
>>56560
>>56542
>>56398
включите там в фак для ОП, что-ли >>47702 (OP)
498 1656581
>>56562
Сомнительная штука на самом то деле.
KivyMD забросили поддержку, в результате из ЛДНР какой-то петух взялся за это дело. Ему безусловно спасибо, но как бы на общий уровень намекает.

Но идею внести это в шапку полностью поддерживию, тем более скоро перекот.
499 1656599
>>56581

>Ему безусловно спасибо, но как бы на общий уровень намекает.


Ты всегда можешь ему помочь.
Или найти того, кто сможет помочь.
500 1656603
>>56599

> Ты всегда можешь ему помочь.


Угу, но мне совершенно не зашел подход киви в виде их файликов со стилями.
Хотя на QT5 хуярю только так, странно.
501 1656605
>>56603

> на QT5 хуярю


Ну-ка подсоби с этим >>56105 , пожалуйста.
502 1656645
>>56535
где n?
503 1656683
>>56105
>>56605
Какой хитрец.

Ну вообще, то что ты описал, больше похоже на действие при нажатии кнопки.
1 кнопка - 1 тег. Кнопка ведь может быть задизайнена и так что не догадаешь что это кнопка, да?
Жмякает юзер на тег-кнопку, а ты в память себе записуешь что за текст на кнопке был(напомню, ето тег).
504 1656684
>>56683
Я полагал что-то вроде либо кучи чекбоксов, либо выпадающего списка с возможностью отмечать пункты этого списка. Второе возможно?
505 1656686
>>56684
Ну я не спец по ЮИ/ЮХ и не скажу тебе как лучше, по возможно все из того что ты описал, да.
Я на сайтах везде вижу кнопки и по этой причине их тебе и описал. Да и работать с ними проще, если честно, работа со списком мне не сильно зашла, но это я.
506 1656687
>>56686

>по возможно


но возможно *
507 1656691
https://pastebin.com/p6wmdtPC

Для своего хеллоуворлда нужно было реализовать вот такой класс, но чувствую, что в конструкторе у меня какие-то дикие костыли. Есть варианты получше? Наверняка же это какой-то популярный паттерн, но я не знаю, как он называется.
508 1656694
>>56691
Называется singleton.
509 1656700
>>56694
Разве это singleton? У singleton'а может быть всего один инстанс на весь файл, а здесь ограничено количество инстансов с одинаковым значением атрибута. Или я не прав?
510 1656725
Синглтон придумали ООПшнутые, для всех задач достаточно статик полей и методов.
511 1656752
Мб это не по теме, но подскажите, как можно пофиксить следующее:
Крутится у меня в консольном окне скрипт, который слушает вконтактик по АПИ. Когда окно долго не находится в фокусе или параллельно запускается какой-нибудь другой процесс, то скрипт как-будто останавливается - логи не пишутся и респонсы на ивенты не отправляются, пока консолька вручную не пробудится каким-либо действием.
Как можно заставить окно со скриптом работать без перебоев?
512 1656780
>>56752
Возможно стоит запускать скрипт не ручками и поддерживать его работу открытым окном, а чем-то типа 'superviord',
изображение.png10 Кб, 288x404
513 1656784
Я вроде бы знаю про линеаризацию, но это вообще нормально, что поведение классов А/B изменяется (конструктор не вызывается) из-за изменения порядка родителей? Получается, super просто следующий элемент линеаризации выдаёт, потому что если одному классу нужны вызвать конструкторы классов 1 и 3, а классу 1 нужно вызвать конструктор класса 2 - то с каким угодно другим устройством super это будет невозможно сделать без ещё более тяжёлых костылей.

Это как-то весьма неудобно получается, мягко говоря. Что делать если у меня __init__ с параметрами, которые я явно передаю и я хочу засунуть этот класс в множественное наследование? Там же (возможно) будет другой "родитель", и super вызовет конструктор какого-то левого класса с моими параметрами. А целевой класс наоборот останется без этих параметров.

Хреновая какая-то концепция множественного наследования. Хуже неё только концепция исключений.
514 1656851
>>56700

>Разве это singleton? У singleton'а может быть всего один инстанс на весь файл, а здесь ограничено количество инстансов с одинаковым значением атрибута. Или я не прав?


У тебя именно самый настоящий синглтон. Паттерн это идея проектирования. Идея синглтона в том, чтобы создавать только один объект определённого типа, по мере необходимости, и чтобы для пользователя работа выглядела так, как с обычным объектом.

А если более общно, то синглтоны это просто "глобальные переменные". Со всеми их плюсами и минусами.
515 1656852
>>56784

>Хреновая какая-то концепция множественного наследования. Хуже неё только концепция исключений.


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

Наследование в питоне полное г-но, всё сделано криво и убого. Особенно множественное. То есть ни множественного наследования нормального нет, ни интерфейсов вместо него, всё через жопу.

Я не понял точно, что хочешь ты, но может тебе надо просто явно вызывать конструктор нужного класса вместо super. Для множественного наследования это самый адекватный вариант.
516 1656858
>>56784
А вообще у тебя самого кривая архитектура. Множественное наследование не для этого. В наследовании ты переопределяешь класс на основе родителя.

Если у тебя поведение родительских классов не согласовано друг с другом, у тебя могут быть проблемы. Ну банально в одном конструкторе ты делаешь переменную self.storage = {}, в другом self.storage = [] (для хранилища используются разные типы, но с одним именем. У тебя всё рухнет после этого. Аналогично с методами, может быть конфликт из-за этого.

Поэтому во многих языках множественного наследования нет, вместо используются интерфейсы, mixin и прочее. Но вот в питоне по этой части всё очень невнятно и неудобно.
518 1662127
Посоветуйте материал для вката в питон для тех, кто знает другие языки. Работаю на жабе и котлине, вскоре может понадобиться питончик.
Тред утонул или удален.
Это копия, сохраненная 12 июня 2020 года.

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

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