Вы видите копию треда, сохраненную 14 мая 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Литература:
Автоматизация рутинных задач ч.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/ (нужно знать ангельский или уметь пользоваться переводчиком)
Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
Шаблон шапки: https://dumpz.org/bqyrfCbEPA9t
Принципиальных вроде как нет, но, например, завезли f-string, и после этого пользоваться всякими .format не хочется. Словари стали упорядоченными более или менее, OrderDict уже как бы и не особо нужен. Датаклассы какие-то прикрутили, альтернатива namedTuple, как я понял(а я не понял). И всякие такие мелочи. Ну вот читаешь ты свою книгу, а потом открываешь какой-нибудь код и видишь непонятные колдунства, которых в книге не было, оно тебе надо?
Да меня скорее раздражает тот факт, что красиво уложиться в 80 колоночек не получается, особенно если используешь аннотации для типов.
А зачем укладываться в 79 символов? Это было актульано лет 30 назад. Сейчас норма 120 символов.
ну кстати в этом есть смысл. с всеми аннотациями и кучей переменных крайне сложно стало влезать
"В интернете" написано
>Limit all lines to a maximum of 79 characters.
https://www.python.org/dev/peps/pep-0008/
Так что спроше ещё раз, где прочитать про 120?
>Created:05-Jul-2001
Сформулируй свой вопрос и найди более одного источника, желательно датированного не каменным веком.
Какой источник лучше пепа может быть? Ответ на стак оверфлоу? Пост на форуме питона нижних васюков? Скриншот из дискорда с твоим другом?
Регексы не учитывают человеческую тупость
Если ты хочешь строго следовать рекомендациям по написанию кода 2001 года, то никто не в праве тебя останавливать.
Только не тащи нам сюда потом свои односимвольные переменные, а то как же, больше 80 же НЕЛЬЗЯ!
intellij по умолчанию 120 символов, например.
https://youtu.be/wf-BqAjZb8M?t=260
Вот тут разработчик ядра Python говорит что считает 90 оптималным значением.
Какой вывод можем сделать? Длина строки решается один раз в начале проекта и вся команда этому следует. Брать больше 120 не нужно, так как в гите как раз 120 блина строки и будут переносы.
>intellij по умолчанию 120 символов, например.
Так, в иде на яве для программирования на яве 120 умолчание, при чём тут, спрашивается, питон?
>Вот тут разработчик ядра Python говорит что считает 90 оптималным значением.
Во-первых, даже близко не 120. Во-вторых, говорит, а не пишет где-то в документации. Видео на ютубе, даже с конференции, всего немногим лучше ответа на стаковерфлоу.
>так как в гите как раз 120 блина строки
На гитхабе ты хотел сказать. Подстраивать стиль написания кода под конкретный сайт, это как в 2000 подстраивать стандарт mp3 музыки под воспроизведение на myspace.
Так что? Ты где-то прочитал про 120, или ты так агрессивно отстаиваешь значения по умолчанию в intellij?
Есть реальные профиты в bs и прочем. Попользуйся и поймешь.
PyCharm основан на intellij, вот причем тут петон.
И да, повторюсь, ты можешь строго следовать устаревшим рекомендациям, главное чтобы код получался элегантным. Если у тебя получится - отлично! Но судя по твоему первому скриншоту - пока не очень выходит.
120 это общепринятое число для других языков. Какую нахуй документацию я тебе должен показать?
>Но судя по твоему первому скриншоту - пока не очень выходит.
Это не мой скриншот.
>120 это общепринятое число для других языков.
Это ты тоже по видео на ютубе узнал, или колоночки на каком-то сайте посчитал?
> Какую нахуй документацию я тебе должен показать?
Да хоть какую-нибудь. Пока ты пришёл, бурлескнул про то, что "сейчас норма 120", а когда я тебя спросил, где ты об этой норме узнал, ты показал свою снобскую рожу и отправил меня искать "в интернете". После пары постов рассказов о том, что официальные рекомендации устарели, выяснилось, что "в интеренете" — это надо было длину строки по умолчанию на гитхабе и в одном IDE, на котором пайчарм основан, за золотой стандарт принять. Действительно, как это я сразу не нашёл такую очевидную и доступную рекомендацию "в интернете", и не начал мгновенно по ней действовать. Про видео, которое ты притащил, даже не говорю, там никакими 120 даже и не пахнет.
Создай список и в цикле добавляй свои "match_id" в этот список. Возвращай список.
> 120 это общепринятое число для других языков.
У меня на работе стандарт 180. Не питон. Не всегда получается уместиться из-за некоторых нюансов оформления кода.
Берёшь свой лист, или в чём ты там хочешь их хранить, с айдишниками и делаешь к нему .append(match_id)
гениально, че я додумался только, когда спросил:?) Я еще список создал в цикле и думал че каждый раз обнуляется щащащ
1.
def foo(x):
if x is None:
return 0
else:
return 1
2.
def foo(x):
if x is None:
r = 0
else:
r = 1
return r
бамп
Свой докабафф пилишь?
ЧЯНТД? Почему функция для определения ключа для максимального значения в словаре работает корректно, а для минимального - нет? Как-то контринтуитивно для моей хуёвой интуиции.
Где в Джанге есть мини-туториал по обычному менеджменту данных типа CRUD? Столкнулся с тем, что в приложении приходится много создавать, модифицировать и удалять записи. Я в принципе могу это сделать, но в данный момент я нахуярил кучу view в стиле new_product (для создания записи), mod_product (для изменения), del_product (для удаления). Выглядит уебищно и громоздко, если ничего не сказать. Как это сделать изящнее?
Ну не совсем. min/max от словаря, по крайней мере, возвращает ключ, не соответствующий максимальному значению в словаре. Похоже, что min(dct) и max(dct) вообще равны min(dct.keys()) и max(dct.keys()).
Через функцию указанную в key по сути формируется новый массив из него выбирается минимальный максимальный.
У тебя для каждой функции получается условно [0, 0, 0, 0, 1, 0], для max это работает, для min просто берется первый ноль
Для начала: как бы записать эти данные в двумерный массив? Допустим, в этом векторе 1xK данных всегда ровно хватает чтобы заполнить все NxM ячеек
Это ж numpy, поэтому полагаю надо использовать срезы или страйды (которые я в душе не ебу как юзать). Голый последовательный перебор значений в одномерном векторе при помощи цикла for нерационален, т.к. в перспективе таких записей придется делать дохрена
>Допустим, в этом векторе 1xK данных всегда ровно хватает чтобы заполнить все NxM ячеек
np.reshape(K, (N, M))
>Если 2D массив окажется заполненным, а в единичном векторе еще остаются данные (может быть и такое), то операция все равно сличается завершенной.
>срезы
np.reshape(K[:N*M], (N, M))
А другой вариант мне лень думать.
Собственно данные спарсил, получилось более 3к записей. И тут у меня встал вопрос; а каким способом это все проверять?
Неужели придется отдельно скачивать каждый файл и вытаскивать из него ip сервера для пингования?
Или может кто-то подскажет более элегантный вариант?
https://pastebin.com/nRnr3dfx
Короче накидал примерную ситуацию:
import threading
from queue import Queue
def myfunc():
while True:
num = queue.get()
print(num)
queue.task_done()
mylist = []
for x in range(10):
for i in range(10):
for i in range (10):
mylist.append(i / 10)
queue = Queue()
for t in range(3):
t = threading.Thread(target=myfunc)
t.setDaemon(True)
t.start()
paths = []
for i in mylist:
queue.put(i)
queue.join()
print(len(threading.enumerate()))
в итоге получается 31 тред, вместо желаемых мной 3 (ну это понятно, эта штука в цикле), но как сделать иначе, чтобы новые треды не плодились и при этом все треды при деле были?
Короче накидал примерную ситуацию:
import threading
from queue import Queue
def myfunc():
while True:
num = queue.get()
print(num)
queue.task_done()
mylist = []
for x in range(10):
for i in range(10):
for i in range (10):
mylist.append(i / 10)
queue = Queue()
for t in range(3):
t = threading.Thread(target=myfunc)
t.setDaemon(True)
t.start()
paths = []
for i in mylist:
queue.put(i)
queue.join()
print(len(threading.enumerate()))
в итоге получается 31 тред, вместо желаемых мной 3 (ну это понятно, эта штука в цикле), но как сделать иначе, чтобы новые треды не плодились и при этом все треды при деле были?
>Не врубил правда, как и зачем вот это работает
>np.reshape(K[:N⛧M], (N, M))
Сразу делает срез и с ним работает. Решейп не инплейс, так что зачем отдельной строкой брать срез заранее?
>После 1го решения
Не очень понял, первое решение >>17491, если len(K) == N⛧M
Второе >>17493, если len(K) > N⛧M
Третье >>17497, если len(K) < N⛧M
Джавист на связи
Понял, что не могу нормально вкатиться в Питон из-за излишне высокого интеллекта. Парню, прогающему на статическим типизированном языке и соблюдающему святые заповеди ООП банально не выйдет адекватно прогать на херне вроде Питона или ЖС. Печаль
Все так. Бывает надо написать что-то по быстрому, и питон это просто типа школьной арифметики 2+2. Мозг даже не успевает хоть чуточку напрячься. Ни для чего серьезного явно не подходит. Мимо плюсист.
> Джава
В твоей джаве всё может нахер полететь из-за неправильной строчки в xml, а генерики лишь приятный сахарок над кастингом в Object и обратно.
>Все так. Бывает надо написать что-то по быстрому, и питон это просто типа школьной арифметики 2+2. Мозг даже не успевает хоть чуточку напрячься. Ни для чего серьезного явно не подходит. Мимо плюсист.
Ленивый ты. Явисту вон сколько расписал.
Правда сильнее лжи
Блин, и правда. просто я не очень умный Ладно, на деле оказалось, что необязательно прям сохранять файл, чтобы его просмотреть.
Осталось придумать, как этот говнокод ускорить и/или прикрутить многопоточность.
Можно попробовать с помощью ThreadPoolExecutor.
Как-то так https://dev-gang.ru/article/kak-sdelat-kod-python-parallelnym-s-pomosczu-3h-strok-x32tjod5s6/
При желании на питоне можно писать как на джаве, просто этого делать не нужно.
Если программировать на жабе сложнее, то ты легко должен быть способен писать на языке проще. Плюшки питона типа динамической типизации делают его скорее более гибким. Дело скорее в том, что твой высокий интеллект видимо недостаточно высок, чтобы воспользоваться чем-то новым для тебя. Или привык, что когда пишешь из говна и палок, компилятор найдет все твои косяки и сообщит о них?
Как гуру ооп может пояснишь, почему в твоей жабе предпочитают использовать делегирование вместо наследования? При том что последнее одна из тех самых твоих пресвятых заповедей ооп.
Блядь, я дебич, транслэйт не поставил зависимости, а я забыл активировать венв и понял это только на скрине.
Сука, это говно ещё и не переводит нормально, я же сам смотрел код, он точно обращается к гугл транслэйту, почему у него тогда результат не такой, как в обычной веб форме
Пиздец, поставил другую библиотеку, а она переводит по третьему, не так как та и не так как в веб форме, что за пиздец....
Дениска, ты главное не переживай так. Не думаю, что тебе критично иметь перевод точно такой же, как в вебе, так что юзай то, что удобнее и клади болт
Ну знаешь, возможно это именно с моим пробным десятком текстов, но в веб форме перевод солидно лучше, прямо очень заметно. Я собираюсь ещё попробовать две вещи: разбивать текста на отдельные предложения и апи яндекс переводчика.
>Или привык, что когда пишешь из говна и палок, компилятор найдет все твои косяки и сообщит о них?
Всегда так делаю, не пользоваться этой функцией языка, всё равно, что принципиально не пользоваться, например, декораторами.
Всё в порядке, а почему это не должно работать?
(звёзды убираю)
@task
def foo(args):
____pring(args)
эквивалентно
foo = task(foo)
task возвращает новую функцию wrapper, поэтому дальше, когда ты пишешь
foo(a, b=100)
это уже будет реально вызов
wrapper(a, b=100)
где-то в недрах которого вызывается исходная foo
Главное, что нужно запомнить про декораторы, это что
@deco
def foo(a, k):
____pass
абсолютный эквивалент (синтаксический сахар)
foo = deco(foo)
понимая это ты легко поймёшь всю логику кода, почему и как это работает.
Кто тебе сказал что наследование - святая святых? Инкапсуляция это святая святых
Когда ты хуяришь наследование только чтоб обьеденить части кода (при том что часть методов суперкласса в принципе не юзаются), ты даун. Без вариантов
? Что значит "под статическую типизацию"?
Typing это давняя фича Пистона, кто не юзает ее в крупных проектах еблан априори
Шалом, правоверные. Вкатился в питон, почитываю Лутца, прошёл курс на курсере, но не могу понять, что читать/смотреть/проходить чтобы вкатиться в датасайенс. Нашёл на курсере один курс от яндекса/мфти, так там какая-то хуйня вместо подачи материала и задания на первой неделе уровня устанавливаем питон, отсылаем скриншоты сокурсникам.
Куда воевать то ёпт.
Бамп вопросу
Наплодил на каждую операцию с данными отдельный view, отдельную форму и отдельный template. Хелп, как рефакторнуть этот кал
Typing уродство обычно, в том виде, как в питоне уж точно.
Уродливый громоздкий негибкий синтаксис, какой-либо оптимизации реальной не происходит и реальной проверки рантайм. Хотя можно втыкать костыли, оформить проверку через декоратор, например, и включать для отладки нужных функций.
Ты как бы получаешь уродство C++, при отсутствии каких-либо плюсов языков вроде C++/Java.
Но можно использовать для декларирования функций в разных API, там оправдано немного изуродовать код.
Статическая типизация тоже уродство с большими ограничениями. В принципе нормально, что переменная может быть разных типов, это называется полиморфизм. Статическая типизация этого не позволяет, и это проблема.
Хотелось бы гибкого подхода, чтобы в коде функции можно было бы декларировать переменные каким-то типом, а можно любым типом, и чтобы в рантайме экспешен возниках, если ты пытаешься тип переписать. По идее это несложно было бы поддержать, но нет.
>Хотелось бы гибкого подхода, чтобы в коде функции можно было бы декларировать переменные каким-то типом, а можно любым типом, и чтобы в рантайме экспешен возниках, если ты пытаешься тип переписать. По идее это несложно было бы поддержать, но нет.
Пчел...
В джанге есть generic views, если у тебя примитивный круд, то должно сгодиться. Можно поискать какие-нибудь приложения-генераторы вьюх для джанги. Если тебе сойдет rest, берешь Django Rest Framework, там есть свои generic views, с ними вьюха в три строки. Где-то видел сайт django builder или как-то так, ты вводишь модель, а он тебе к ней все остальное генерирует. Можешь свой обобщенный класс вью написать, отнаследовав его от стандартного.
Конечно же без нейронок и прочего говна, ведь цифры довольно схожи между собой.
Понятно, спасибо.
Провести горизонтальные и вертикальные линии, посчитать количество пересечений? Помню была такая лаба в универе по теме распознавания образов
Это в первую очередь из-за опасности непредсказуемого поведения, когда потоки имеют общие данные, но в принципе можно, если ты его избегаешь, погугли Thread-safety и как оно достигается. В питоне есть GIL, поэтому одновременная работа нескольких потоков невозможна и часть проблем отпадает (как и преимуществ). В питоне его можно использовать для любых блокирующих операции, если необходимо, что бы программа в это время делала и другие действия.
Смотря для каких целей. Многопоточные программы обычно необходимость, так ты можешь обрабатывать блокирующие операции и полноценно использовать ресурсы.
Паттерны скорее в том, как работать в многопоточных приложениях, что использовать, что нет. Антипаттерн использовать мютексы для блокировок, например, обмен данными лучше делать через очереди и некоторые фишки есть.
В питоне, обычном, многопоточность ущербная и применение сильно ограничено из-за этого.
Я опять вышел на связь, помогите с проблемкой, плз.
Есть такой скрипт: https://pastebin.com/0qMggbi8
Нужно, чтобы созданные треды (3 штуки) в цикле, который идет ниже, переключались на другую функцию. Они начинают с таргетом myfunc, как переключить их на myfunc2?
Ты формулируешь вопрос настолько же криво, насколько пишешь код. Хуй поймёшь, чего ты хочешь.
Попробуй запустить два цикла, в одном ты три треда myfunc запускаешь, в другом два треда myfunc2. Тогда обе функции будут кушать из одного треда.
Да бля, нет же.
Хули не ясно? Нужно изменить таргет уже созданных тредов в цикле, треды должны обрабатывать очередь только по одной функции. Алгоритм такой:
- объявил N функций
- создал 3 треда
- первый проход цикла
- набил очередь, треды работают с очередью
- изменил таргет для созданных тредов
- треды обрабатывают очередь через новый таргет
- второй проход цикла
- набил очередь, треды работают с очередью
- изменил таргет для созданных тредов
- треды обрабатывают очередь через новый таргет
a = [int(i) for i in input().split()]
n = int(input())
for i in a:
if n == i:
print(a.index(i), end = ' ')
Вводим:
5 8 2 7 8 8 2 4
8
Получается:
111, а нужна 1 4 5
>print(a.index(i), end = ' ')
Description
Python list method index() returns the lowest index in list that obj appears.
Ты хоть читай, чем пользуешься.
Все правильно, ты берешь индекс 8, он тебе возвращает ближайший. То что эта 8 из конца листа - нихуя не значит.
Такое задание. Видимо, на чистую теорию.
>Я нихера так и не понял правда
.index() не та функция, которую ты должен использовать. Она делает совсем не то, что ты думаешь она делает. Если хочешь совсем тупо, то делай тупыми методами:
a = [int(i) for i in input().split()]
n = int(input())
for i in range(len(a)):
if n == a:
print(a, end = ' ')
Спасибо, попробовал - отлично работает, только на 3 и 8 иногда проебывается, буду лечить.
веб форма гугл переводчика: Она просто моя ученица. Я думал, что мы поделимся напитком в качестве деловых партнеров ради старых времен.
py-googletrans: Она просто ученица моей. Я думал, что мы бы поделиться напитком в качестве деловых партнеров в старые добрые времена.
Ну короче я понял, что перевести нормально даже мелкие куски простого текста полностью свободно, без всяких ключей к апи и прочего, просто невозможно. Можете не пытаться, если вам придёт в голову.
ЯННП.
Получается, это и не полноценный декоратор вовсе? Или, если учитывать, что это сделано через лямбду, то это нормально?
Если что, задание сформулировано так - "написать лямбда-декоратор, сохранив его в переменную".
Это декоратор, но ты его не совсем правильно юзаешь в первой лямбде должна быть функция, а не аргументы, что бы ты мог ее вызывать, а так же если добавить еще лямбду, то можешь и аргументы засунуть
lambda_deco = lambda func: lambda args, kwargs: func(args, kwargs)
Или так
lambda_deco = lambda my_arg: lambda func: lambda args, kwargs: [func(args, kwargs), my_arg]
@lambda_deco('test')
def a(args, *kwargs):
____print('Hello')
____return args, kwargs
>>18467
А, если так, то все норм, декоратор не обязан вызывать функцию
Попробуй горизонтальную линию в нижней половине, типа под соединением восьмерки или центральной засечки тройки.
Просто добавил больше примеров, вроде как лучше стало.
Еще буду логику улучшать и улучшать, спасибо, антош.
Подкрутил тут, подправил там, теперь все заебис.
Метод a.index(i) возвращает индекс первого попавшегося числа i вот оно и выводит тебе постоянно первую 8. Нужно делать проход цикла по индексу.
Хочу написать программу, которая будет сама за меня писать программы. Я только деньги со сберкнижки буду снимать.
Ну не траллируй, я действительно недавно начал только изучать. Просто к примеру есть какие-то маленькие кусочки кода которые я могу писать по памяти, но что-то сложное уже начинает ломаться, тупить и выдавать пиздец. Вот и хочу узнать, стоит ли тратить время именно на то, чтобы любой код уметь писать по памяти начиная с самого малого, или лучше охватывать разные алгоритмы более обширно, а потом уже возвращаться и подгугливать какие-то конкретные детали?
Типа - ну вот тут вот вычисляется самая маленькое значение из списка, тут вот происходит поиск, но в целом не иметь возможности написать это все самому по памяти, но знать в принципе что программа делает при чтении и понимать общий принцип построения логики. Так возможно продолжать изучение, или все нужно постепенно изучать досконально?
Если я правильно понимаю, отдельные модули программы надо делать независимыми, а уже потом объединять их вместе по предварительно намеченной схеме программы
через subprocess или os.spawnv
Если у тебя программа будет работать всегда (а она должна это делать по сути), то тебе достаточно одной переменной
> Правильно ли я полнимаю, что если через subprocess запустить несколько питоновских скриптов, то это будет параллельное выполнение
Да, правильно, параллельное и независимое. Но только всё-таки это надо делать через Pool и Process модуля multiprocessing.
Кстати модуль поддерживает и shared объекты уже "из коробки".
Работа идёт
https://github.com/IronLanguages/ironpython3
Можно ещё вот это использовать:
http://pythonnet.github.io
>Работа идёт
Билда трешки до сих пор нет, двушка не обновляется, но коммитов дохуя, что они там делают?
1) Проблема с сишными расширениями
2) Поддержка фич отстает от cpython, только в декабре выкатили 3.6
3) Нужно перепедаливать проект
a = [int(i) for i in input().split()]
for i in range(1, len(a)):
if a[i - 1] * a > 0:
print(a[i - 1], a)
break
1. Почему в range указана 1
2. Почему в условии a[i - 1]
Пробовал в range писать 0, а в условии a[i+1], но это не работает. Не ясно только по какой причине.
>python-овское общества
Это кто? Чуваки из PSF пилят cython за донаты, энтузиасты свое за меньшие донаты, обычным прогерам поебать, им за это не платят.
Потому что это писал аутист
Забудь это решение и используй for elem in a как белый человек там эта единица вообще по приколу стоит
Просто сишку из человека не вывезти.
Они cpython пидорят, зачем им так распылятся, ведь кто-то это уже делает за них.
Спасибо. Я почему решил уточнить, данный вариант выделили разработчики ресурса, где эта задача размещена. То есть изначально рекомендуется делать именно так (возможно лишь в рамках изученного). Естественно, я бы до такого не додумался.
Уже написали, поддержка версий, расширений и т.п.
Кроме того, просто не всегда pypy будет работать быстрее. PyPy работает хорошо там, где много итераций простых циклов, а где-то он реально проигрывает в производительности. Аналогично и с Cython, где-то он хорош, но и проблемы с ним есть.
Далеко не везде проблемы производительности актуальны. Какая разница, у тебя проц загружен на 5% или на 0.5%?
В общем когда актуально, тогда и надо думать. И такие решения есть, которые позволяют ускорить при необходимости. При этом всегда можно распределить, часть функционала одной машиной исполнять, часть другой, пересылать данные потом упакованные pickle или классическими форматами.
Ловлю исключение except pycurl.error.
Как в в блоке try самостоятельно выбросить pycurl.error?
Уже не надо.
raise pycurl.error
>myproject/myapp/templates/myapp - вот нахера надо 2 раза писать myapp? Папка templates же и так внутри этого приложения лежит
Што? При чем вложенность папок к темплейтам? И нейминг ты любой можешь сделать для теймплейтов
>И нейминг ты любой можешь сделать для теймплейтов
Естественно, но не в этом суть
>При чем вложенность папок к темплейтам
Потому что везде вижу как внутрь тех же темплейтов вставляют еще одну папку, имя которой дублирует имя приложения
>Потому что везде вижу как внутрь тех же темплейтов вставляют еще одну папку, имя которой дублирует имя приложения
А, ты в этом смысле, так так понятнее же. Смотри, у тебя есть десяток приложений, у каждого свои темплейты, структурируя по различным папкам ты получаешь аккуратные папки с темплейтами для приложений, или не структурируешь и получаешь мешанину.
1. Потому что смотрят на письку и его соседа слева. Чтобы у первой письки был сосед слева надо начинать со второго. У второго индекс 1 (у первого 0)
2. это сосед слева.
3. потому что улетает за границу в правой части, надо ещё len(a) - 1 делать.
Типо как правильно vue с flask подружить
Откуда pip подгружает пакеты, если я говорю ему например pip install numpy? На каком сервере он находит этот билд numpy? Как они туда попадают? Могу ли я вручную скачать откуда-то архив этого билда, не устанавливая его?
А как пакеты попадают туда? Могу написать свой yoba_module_maxx_power_ownage и забросить туда чтоб каждый мог его установить и насладиться моим ахуенным кодом?
Пчел, в интернетах все давно расписано, ты можешь загуглить такую тривиальную вещь сам.
Да я видел как это происходит но вопрос не в этом. Они что реально позволят любому дауну подгрузить свой говнокод с гитхаба?..
https://medium.com/@joel.barmettler/how-to-upload-your-python-package-to-pypi-65edc5fe9c56
да, потому пупя засрат нерабочей хуитой, которую приходится фильтровать в поисках чего-то годного.
О, кармадрочерство.
А пользователь либы авансом должен поставить звезду? Через пип-то он установить её не может, только вручную.
Количество звезд это нихуя не показатель, вон неработающее говно залайкали только из-за красивого графика с тестами
https://github.com/squeaky-pl/japronto
Спасибо, я так и представлял, просто уточнил
>Могу ли я вручную скачать откуда-то архив этого билда, не устанавливая его?
pip download package
В общем есть небольшой класс, представляющий из себя множество ключевых слов и операций над ним. И есть событие, которое должно работать с содержимым этого множества. Но оно тупо не работает, т.е событие вроде как обращается к классу, но при этом в нем ничего не сохраняется и не выводится. И дебаггер это все почему-то не отлавливает по брейкпоинту, я не могу посмотреть как там и где сохраняются данные. Чяднт?
https://pastebin.com/XKdskWgs
не смотрите на регулярку, это не мем
Кажется если я так и дальше буду пропускать малопонятыне моменты без углубления, я вообще ничего не выучу.
https://dumpz.org/a2PXepQwS3TY
Нет
лучше дочь шлюха, чем сын который приходит в питон-тред с вялыми попытками кого-то затралеть
Дочь-питонист.
Мне нужно получить рандомный порядок картинок, но текстовые файлы во втором массиве должны совпадать с ними
Хотя, по идее, нахуй мне второй массив с .txt, если я просто могу заменить расширение
Скорее всего эта проблема из-за того, что psycorp2 ещё не работает с пистоном 3.8
У меня такая же залупа была с numpy, пришлось ставить под 3.7
Питонотред настолько хорош, что что-бы получить решение даже не нужно дожидаться чужого ответа
>psycorp2 ещё не работает с пистоном 3.8
А знаешь почему я вообще 3.8 в эту среду поставил?)) Потому что функция django.contrib.admin.register не работает в 3.7 - когда я вставляю туда свою модель чтобы зарагестрировать ее Python крашится нах (да, сам интерпретатор), судя по тому что говорят на форумах: https://www.reddit.com/r/django/comments/e5m7zv/accessing_admin_is_crashing_the_server/это именно из-за приколов 3.7
Вот теперь познал что значит "ебля с версионированием"
Собери версию из гита, там вроде работает
Ага, особенно учитывая то, что я не знаю питона.
Вот только чому я не додумался до этого раньше...
Кстати, Аноны, а теоретически возможно такое, что те два вызова glob.glob могли дать мне разный порядок файлов и при записи я бы получал расхождение между картинкой и текстовым файлом?
Ты как регистрируешь?
Я видел:
django.contrib.admin.register
django.contrib.admin.site.register
django.contrib.admin.sites.register
ебаные разные версии Джанги...
Что из этого вообще использовать? В коде вроде юзаю django.contrib.admin.site.register - работает, но когда пытаюсь отдельно импортировать в консоли эту функцию - пишет что модуля site вообще не существует (есть только sites, где register нет). Че это бля такое?
Но хочется чтобы это все было в еще более развернутом виде и не так скомкано
Вводные такие:
1) знаю питон, не знаю всякие пхп и джаваскрипты, поэтому питон
2) на фласке сайты уже делал, но в этот раз контейнтом будет наполнять человек, далёкий от программирования, поэтому нужна cms, соответственно, джанго (не ошибаюсь ли в этом пункте?)
3) писать cms с нуля это такое, поэтому прошу совета, какую лучше взять, чтобы можно было по быстрому написать пару шаблонов страниц и потом наполнять это дело текстом и картинками.
Всякие хтмл и ксс знаю.
Пип не ставит питон
Если из под винды, то идешь на сайт и качаешь нужный билд
Если линух, то просто указываешь нужную версию пакета
(есть еще jupyter и jupyterlab - но то же самое говно)
>не знаю всякие пхп и джаваскрипты
Возможно, в обозримом будущем меня уговорят прикрутить туда всякое. Поэтому питон.
Если бы у него был линух, то у него все сопутствующие пакеты были бы пересобраны под самый последний питон в репозиториях, так что тут уточнять ни к чему было.
>Если бы у него был линух, то у него все сопутствующие пакеты были бы пересобраны под самый последний питон в репозиториях, так что тут уточнять ни к чему было.
Я не думаю, он ебанашка, которая сидит на ролинг-релиз дистрах без возможности, установки прошлых версий пакетов, в дебианоубунтах и красношляпах все нормально
>>20239
Вы прочитали, что я написал?
>сопутствующие пакеты были бы пересобраны под самый последний питон в репозиториях
На линуксах, если ставить из реп (как ты и должен делать, потому что там за тебя и слюнки подотрут), то всякие доп. библиотеки будут собраны под версию пистона, которая в репах. В репах 3.5? Вся шелуха тоже под 3.5.
Выкидывают-выкидывают. Сначала называют old stable, а потом выкидывают вместе с релизом.
>Сначала называют old stable
Ты странный если тебе внезапно понадобились пакеты старше олдстейбла
Пусть как нормальный поцан asdf ом питон нужной версии ставит, а пипом свои пакеты.
Я тебе просто объясняю, что перестают поддерживать старые версии везде. Где-то быстрее, где-то медленее. Если тебе нужна какая-то конкретная версия, то её может в определённый момент не оказаться ни в актуальном арче, ни в актуальном дебиане, ни даже в ещё поддерживаемом центосе.
Бампуэ
Из того что гуглится - можешь сделать кастомное поле
https://docs.djangoproject.com/en/3.0/howto/custom-model-fields/
Можешь подключить какую-нибудь noSQL базу данных и хранить там прямо списки, сортируя как хочешь
Ебана, а каковы подводные если я буду совмещать MongoDB и Postres в одном проекте?..
Если драйвера под нее есть то все нормально
https://docs.djangoproject.com/en/3.0/topics/db/multi-db/
Зависит от того, что ты на них будешь делать и как организуешь архитектуру
http://magic.io/blog/asyncpg-1m-rows-from-postgres-to-python/
Вообще про пет-проекты, но и про рабочие тоже можно рассказать. Любая информация будет полезна.
Нет, для бухгалтеров штуку в которой учет средств вели, серых я так понимаю.
Да, искал по локации и тегу, лойсал фотки.
Сервис с вебмордой на джанге и микросервисным ядром для работы с фотостоками, свалил через год, сейчас работаю на букмекерсий стартап
Есть такая штука в джанге как management command, по сути скрипт джанги, просто запускаешь его по крону каждые 30 секунд. Но вообще все используют celery, и ты так делай.
>celery
Гуд, усвою. По факту он в Джанге может выполнять прикладную асинхронность связанную с тасками? И даже никаких asgi и 3й версии Джанги не нужно?
Не сравнивайте логические типы с True и False с помощью ==:
Это опасно. Можно лишиться девственности.
Ну вот смотри, если ты пишешь if bool == True:
То почему бы не написать if (bool == True) == True: ?
Первое что приходит в голову:
Добавить два поля для id следующего и предыдущего Entry и реализовать методы create, delete, next, insert и так далее. То есть тупо реализовать все что нужно, прямо в модели.
>>20708
По celery я тебе ничего рассказать не могу, не разбираюсь, потому как сам не пользуюсь. По асинхронности в джанго - тоже самое, они там что-то анонсировали в третьей версии, но я так и не понял что там можно асинхронно, а что нет. Похоже, что просто прикручивают django channels. Сижу на старой версии, жду когда сокеты завезут.
>По асинхронности в джанго - тоже самое, они там что-то анонсировали в третьей версии, но я так и не понял что там можно асинхронно, а что нет.
Насколько я понял, они добавили поддержку ASGI и декораторов асинк_ту_синк и синк_ту_асинк. А 3 версия сейчас будет проходная, т.к. они планируют полностью перевести фреймворк на асинхронность к 4 версии, где-то на хабре была подробная статья про это
Ну и их старый роадмап
https://www.aeracode.org/2018/06/04/django-async-roadmap/
Бамп. Неужели никто машинным обучением не интересуется?
Потому что менее понятно. А в bool == True: сразу видно, что тип булев, должен быть правдой. Меньше надо помнить.
is может быть и вредно, если bool на самом деле, например, int. Или придётся писать if bool(int) is True:
Большие Дяди принципиально юзают только True и False. Никаких None или int
Или такое даже смотреть никто не будет?
Ты учти что это в оба конца работает и если у тебя там будет говнокод то это сыграет даже похуже чем завал на двухмерном массиве.
Хочу скачать пару курсов а рейта нет
https://www.labirint.ru/books/486755/
Эти две же ок? Хочу бумажные. Вторую частично читал, первую совсем нет
Или мб проще читалку купить, но это еще сложнее и выбрать и эти наверное в бумаге возьму
Погоди погоди. Приведи пример из реальной жизни, в котором реально нужно писать "if bool == True"
Оно и так понятно, а кому не понятно - Гвидо объяснит лично
>Don't compare boolean values to True or False using ==.
> Yes: if greeting:
> No: if greeting == True:
> Worse: if greeting is True:
>Don't compare boolean values to True or False using ==.
А я и не сравниваю "boolean values", я сравниваю variables, а какие оно может values принимать?
Если, например, ты спрашиваешь про False? И там не False, а пустая строка? Или None?
if var
>Если, например, ты спрашиваешь про False? И там не False, а пустая строка? Или None?
Приведи пример реального кода с такой ситуацией.
Нахуя это делать?
Выглядит как идиотская экономия на спичках, учитывая прожорливость самого питона. Или есть какой-то подвох?
У меня нет под рукой реального кода, где False, [], и None это не одно и тоже, чтобы показать тебе, так что не могу.
>А я и не сравниваю "boolean values",
>Не сравнивайте логические типы с True и False с помощью ==:
>пустая строка
Пустая строка все еще False, ровно как и None
press f
>Не сравнивайте логические типы
Логические значения. Логические значения бывают только True и False. А переменные могут быть не только True и False. Что не надо писать "if True == True" и так очевидно.
>Пустая строка все еще False, ровно как и None
О том и речь. У if a и if a == False будет разное поведение.
Да я знаю, что это не одно и то же, речь то не об этом.
>>21199
>У if a и if a == False будет разное поведение.
Никто так и не сравнивает, речь была о True.
Обычно в нормальном коде в переменной bool или её аналоге и так будет булево значение. И достаточно написать if bool
Если туда попадает всякая левая фигня, то это проблема кода уже и её надо решать.
>речь была о True.
Подожди, то есть эта схема не универсальна даже между True и False и применяется исключитально для True?
Имхо, нет смысла держать открытым подключение, если оно не используется. Плюс, могу ошибаться, если при открытом подключение программа упадет, это подключение может далее висеть незакрытым.
Я обычно пишу либо if bool, если мне надо, чтобы что-то произошло, если условие выполняется
Либо пишу if !bool в противном случае
Но я не сильно опытный программист
В том-то и дело, что будет использоваться.
Если ты сразу вычитываешь или полностью пишешь файл, то да, нет смысла держать открытым.
При падении GC должен подчищать, по-моему, это в общем-то штатная ситуация для самого питона.
Чо
Я живой человек, я пью пиво по вечерам, отвянь
регексы из другой грамматики. с ними ты пойдёшь нахуй, когда захочешь вложенность победить и другие ништяковые вещи, которые даёт контекстно-зависимая грамматика.
делай один список из кортежей через zip, а потом уже делай свою ёба сортировку по первым элементам всех кортежей.
Пацаны, я сейчас таки допёр что regex это "Regular Expression"! Ёба, мама мне всегда говорила, что я одаренный и не зря. Скоро буду нейронки писать и 400к зашибать
Это значит, что если напишешь так, к тебе в 12 ночи явится Гвидо и отпиздит восьмым пепом
Значение эфемерно. Вот такой кастомный класс вообще всегда будет тебе выдавать True при сравнении и дальше что?
class Mine:
----def __eq__(self, other):
--------return True
Когда проверяешь ссылки ты точно знаешь что это синглтоны True или False
значит такой это хуйня-объект, который эквивалентен всему. нахуя его по айди пробивать?
>В том-то и дело, что будет использоваться.
Тогда нет никакого смысла закрывать соединение с БД, потому что коннект и аутентификация это достаточно медленная операция. С файлами тут чуть попроще, конечно.
Как в обычном скрипте послать собственный асинхронный сигнал? Вот к примеру некая функция вернула определенное значение, значит посылается какой-то асинхронный сигнал и вызывается функция-обработчик для него. Или с помощью Celery это намутить реальнее?
>Async From Sync
Ну да, по делу. Только вот мне бы единожды кинуть сигнал внутри синхронного кода и не париться. Незачем плодить async loop. Клавиатурное прерывание Ctr+C это ж тоже обработка сигнала (который уже бросает эксепшн KeyboardInterrupt). Вот реально ли сделать сигнал который реагирует на свою комбинация клавиш? Или тут без Си-прогинга не обойтись?
>Незачем плодить async loop
Так ты и не плоди, с 3.7 можно пользоваться раном, об этом в статье тоже есть. Насчет прерывания хз
А как ты это сделаешь на Си? Ctrl+C это системный сигнал, его сама ОС генерит.
Я не очень такими вещами занимался, вероятно тут многопоточное решение будет, основной поток обрабатывает клавиатуру и сам генерит сигнал, если была нужная комбинация.
Просто не сделаешь. Но и на Си просто не сделаешь.
Так повесить обработчик сигнала, а потом своему же процессу послать сигнал. В чем проблема?
>Async From Sync
Там в этой части муть какая-то. Хотя не читал.
В любом месте для питона 3.5.3 и старше можно безопасно вызвать asyncio.get_event_loop(), не надо той мути для создания евент лупа. С 3.5.2 (он в дистрибутиве убунты 16.04, что печально) хитрее, поэтому лучше питон всё-таки обновить.
Для 3.7 уже больше возможностей, можно асинхронную задачу запустить просто как
asyncio.create_task()
Но всё это не имеет смысла в твоём контексте, ты реально делаешь что-то не то.
Потому что для бул переменной достаточно написать "if a". Аналогично для пустых списков, нанов и прочих фолси
Подавать в предикт x_test[0]? Последний блок
и для чего 6 кусок
Поделитесь, какой язык знаете любите/используете в петах помимо питона? Go/JS?
is True
Поставить хэндлер не проблема. Проблема заделать свой signal. Там в либе даны лишь основные сигналы (действующие на уровне ОС). Как я понял, без влезания в низкоуровневый прогинг на Си тут не обойтись
Ну так системные и используй, это стандартный IPC.
SIGUSR1/2, например. Отправляются через os.kill.
Вот, например, в жсе - я клонирую репу с гитхаба, ставлю зависимости через npm install и они ставятся в папку с проектом.
Как это происходит с питоном? Я клонирую репу, в репе есть файл requirements.txt - как дальше мне поставить зависимости локально?
Создаешь виртуальное окружение, устанавливаешь пакеты, в пайчарме это из коробки есть
Мне нужно в шеле сначала перейте в директорию после чего создать виртуальное окружение с таким же именем как и проект?
Вообще без разницы где создавать. Тот же venv главное активировать, а работать можно откуда угодно.
Может ты хочешь иметь отдельную папку, где у тебя будут все окружения, но никто не мешает тебе это в проект закинуть
А если я создаю окружение внутри проекта, то это окружение нужно в гитигнор добавлять, верно? А то я создал окружение внутри проекта и у меня появилось 500 новых файлов. И еще вопрос, есть ли какое то стандартное название для папки с виртуальным окружением внутри проекта? Или куда обычно их ставят?
бамп
>А если я создаю окружение внутри проекта, то это окружение нужно в гитигнор добавлять, верно?
Да
>И еще вопрос, есть ли какое то стандартное название для папки с виртуальным окружением внутри проекта? Или куда обычно их ставят?
Зависит от выбора виртуального окружения, для venv это папка с именем venv, оно в корень проекта обычно ставится
Спасибо анончик. Вроде разобрался. А ты не знаешь, в питоне случайно нету практик для сендбокса скриптов/проектов? Или это мне нужно на уровне ос делать?
Если ты не собрался изменять строки больше пары мегабайт, то это не имеет особого смысла
При частых изменениях удобно работать со строками как с последовательностями и брать конкретный элемент через __getitem__. Канешн можно реализовать обертку из этого, но строки все равно будут immutable
Как диды массив из символов делай, или bytearray
Хочет какие-нибудь конструкции типа r['ch1','ch2'][:10]['data']. Типа взять два куста из словаря, срезать им первые 10 строк и извлечь из низ ключ 'data'. А то генератор на генераторе городить приходится.
Так я уже. Просто просто после R это очень многословно.
Снизу должен быть православный ИДЛЕ
Ясно вампир не палится. Ну короче я так и думал пока я время на всякую хуйню трачу вы радуетесь и живёте вечно. Пидоры блять ебаные я же то же хочу
Ну тащемта это уровень 11 класса - 1 курса, разве что графические либы можно заменить на numpy
А как собственно совмещаются Django (где асинхронность допилят ой как не скоро) и asyncio?
главное не бухтеть
P.s. советую анонам-новичкам подписаться на этого мужика, и на Ютубе найти видео с конференций с ним.
>мапа компактнее чем массив массивов
Да ладно!
>Как по мне - отличный вопрос для собеседования, что бы спросить у собеседующего, если надо будет.
Нет, вопрос говно, измерение пиписьки на знание вещей, которые никогда не будут использоваться
Вопрос хороший, потому как именно подобный вопрос из области "хуй знает, надо продумать, поразмышлять" и ждут.
Очень хорошо что ты с лету подобрал возможную причину такого поведения.
На самом деле, погружение в вимы-эмаксы это дохуя человекочасов. Зачем добровольно навешивать на себя такой груз?
С тем же вимом достаточно выучить по верхам чуток и охуенно себя чувствовать в любых никсах.
А дальше это очень на любителя, особенно с превращением его в ололо-IDE.
Что должно произойти?
Да
Я изучил, дурачок. Я изучил даже ed.
Но смотря квадратными глазами на фронтенд с мильйонами хуйни для изучения, какие там редакторы ещё?
Тем более, для вкатывальщиков.
Ну а я цикл for даже не прошёл ещё ну а хуля еще 10 задачек осталось ща решу и уже буду то же программировать а хуля делов то бля ёпта
То есть это уже оффициально всё да ? В цикле for значения range() менять смысла не имеет это уже точно ?
Уменьшать i ? Или что уменьшать ?
Ты вопрос понял вообще ? Я меняю к в теле цикла(увеличиваю) но цикл работает только до того первого значения к не дальше.
Вот смотри
То же самое ты тролишь меня похоже дила нашёл да ? Конкуренции боишься ? Ажна затрясся весь денег жалко ?
Так я и говорю почему бля не меняется ? Что за инициализация токая бля ? Ебать. Ты чо нахуй ? Да лано, не трону ебать. Не бойся.
>Тот же venv главное активировать
Скорее в проект прописать, чтобы оттуда запускался.
Активировать не обязательно, достаточно по полному пути вызывать, и автоматом будет подхватываться нужное окружение. То есть вместо того, чтобы запускать
source /home/vasya/venv/bin/activate
python hello.py
можно смело писать
/home/vasya/venv/bin/python hello.py
и всё будет прекрасно работать без предварительного активирования окружения. Для запуска из скриптов это важно, и в принципе иногда удобно, особенно если хочется в разных окружениях что-то пускать.
Не нужно тебе программированием заниматься. Не на питоне уж точно, ты пока не готов.
Почитай просто, как циклы работают в питоне, как генераторы.
У тебя вызов range(k) происходит только один раз, перед самой первой итерацией. Дальше создаётся генераторный объект, который возвращает значения от 0 до k-1, и ты на него повлиять уже никак не можешь.
Я уже понял ебать но всё равно спасибо бля внатуре от души
Это я понимаю но как сия магия происходит ?
Я вообще не видел что бы перед for что то стояло и где про такое искать ?
Генераторные выражение, тебе ссылку уже привели. Одна из особенных фишек питона, которых нет в большинстве других языков.
Чаще они используются для того, чтобы списки генерить.
попробуй
s = "asdfasdfasdfgadfg"
lst = [c for c in s]
print(lst)
lst = ['<' + c + '>' for c in s]
print(lst)
lst = [c if c in 'aouie' else '_' for c in s]
print(lst)
можно использовать и в циклах, но это уже не очень принято.
Django
Надо сделать модель в которую буду заполнять поля и их сумировать и вот эту сумму вносить в модель ...
То есть есть 3 филда Int
1 - Input(x) 2 - Input(y) 3 - а в 3 филд вношку x+y (но не рукой, а что бы програмно заполнялось(надо делать кое какие расчеты) и что бы вносить в это поле можно было только редоктируя 1 и 2 фил.
То есть как я понимаю, надо засунуть функцию/метод в модель и при иницилизации модели ее вызвать и забить ее результат в филд? Как это сделать?
Есть отдельная книжка именно про такие особенности? Про всякие @, else для for, и with тоже. А то я как-то какую не возьму: "как пользоваться if", "создадим список d=[]".
ай ам спикинг инглиш вери вел
В документации нет способов нахуевертить всяких штук, только конкретные инструменты.
Я к вам с совсем нубским вопросом.
Когда очень очень давно учился в универе по спецухе программирования, изучая с++ и паскали.
Потом все это забросил, а недавно решил вспомнить былое чисто для себя, мозги размять.
Из всего за это время множества языков выбрал питона (хз почему, ну вот его).
Разобрался в синтаксисе, вспомнил кое-какие методы и алгоритмы, короче запилил несколько программок.
Но, собственно сам вопрос вот в чем:
как дальше из ide ее выпустить? Там она запускается, работает, а дальше что делать? Например скомпилить и использовать на другом компе или кому то скинуть. Погуглил это дело, оказывается это целая пляска с бубнами.
Объясните глупому какой тол тогда в этом языке, если из него дальше программу нельзя нормально сформировать? Ну или я чего то еще не понимаю, подскажите плз.
Вычисляемые поля, сигналы, попробуй погуглить сначала
Все твои плюсы, шарпы и жабы тоже требуют рантайм, просто он или есть искаропки, или его таскают с собой с инсталлятором.
Принцип тот же.
А, objects.count...
Другое еще хотел уточнить: SOAP API актуально где сейчас? Или в основном везде идет REST?
В ынтрыпрайзах встречается, но по-моему, уже почти легаси.
Расскажи поподробнее об этом. Я не совсем понимаю что делать.
Вот я в ide накидал. Сохранил в py файл. Как из этого сделать exe?
И почему пишут что это редко делают, что вдруг поменялось?
Из него не нужно делать ехе. Надо устанавливать питон там, где оно будет запускаться.
Ехе можно сделать, но это суть тот же питон, примотанный изолентой.
Файл легче запускать через терминал командой python -m, при условии шо питон на машине установлен канешн
На unix в 1ю строчку захуяриваешь #!<python_path> (можешь папку с виртуальной средой вместо со своей прогой таскать) и тогда файл запустится из терминала на похуй, без команды python
Если тебе надо послать твою ахуительную говнопрогу другу-ламеру, то конвертируй py2exe, в инете есть туториалы, сам этим не занимался
Хмм, а в других языках с этим проще? Зря я питон выбрал получается?
Т.е. сейчас простейшая задача - дома накатал программульку для компа на работе, такую вспомогательную и упрощающую рабочий процесс. Но выходит дело я не смогу ей пользоваться, т.к. надо на этот комп ставить питон среду, а комп весь без прав админа.
>>22846
Говнопрогу именно себе, но на другой комп.
А почему так сделали? Это же пиздец неудобно. Все равно что машина, которая только в гараже может заводиться....
> Хмм, а в других языках с этим проще? Зря я питон выбрал получается?
Зря, попробуй голенг, он очень простой(проще питона) и делать экзешники в нем можно одной командой. Ну и сами программы получается на порядок быстрее питухонских
Тебе нужен интерпретатор чтоб интерпретируемый код работал, что тут странного? Точно так же как компилируемому коду необходим компилятор
Попробуй .cpp файл на похуй запустить двойным щелчком мыши
>Что то не могу найти, можно какую то ссылку на соус откуда начать?
https://golang.org/
https://golang.org/dl/
гайд тут https://go-tour-ru-ru.appspot.com/welcome/1
алсо милости прошу к нашему шалашу >>1603114 (OP)
>вкатывальщика
Если цель - поиск работы в Россие, то лучший вариант это не питон, и даже не го. Если опыта совсем нету - то пхп или жс. Поработаешь пару лет, потом можно будет и на любой интересующий тебя стек перепрыгнуть.
Спасибо, уже тоже набрел на тред и эти сайты.
Попробую его.
Еще пара вопросов можешь подсказать?
У Го тоже много разных IDE? Если так, то посоветуй плс хорошую?
И второй - вообще этот Го как язык нормальный? Функционал, синтаксис итд?
В питоне мне понравилось что нет кучи фигурных скобок, точек запятых в конце и кучи всякой лишней разметки. Потом еще показалось удобно как он переменные сам понимает и не приходится на каждом шагу подсказывать что тут строка, а тут интежер.
>У Го тоже много разных IDE
Рекомендую вскод с плагином.
>Го как язык нормальный?
Строгая типизация. Синтаксиз си-образный. Абстракций меньше че в питоне.
Если хочешь глянуть на синтаксис, глянь любой проект
https://github.com/trending/go
>отом еще показалось удобно как он переменные сам понимает
В голенге с этим все намного лучшее, потому что иде точно знает какой ты указал тип у переменной и сразу тебе покажет все методы.
На сколько близко к правде и на кого этот список, по вашему, на среднего джуна или уже мидла?
Бамп вопросу. Есть ли целесообразность такого подхода или лучше на похапэ как жиды делать?
Почему нет? Что тебе мешает сделать борду на джанге? Я когда курсы смотрел там одно из ДЗ было - борда
Пытаюсь запустить свой хеллоу ворлд и вот такая залупа. Щоделать?
Ясно.
Ливать из программирования.
https://habr.com/ru/company/yandex/blog/490788
Шта? Все ж работает в консоли норм
Саму концепцию репла все подряд пизданули из лишпов, где она много мощнее.
На потестить однострочники годится.
Я в вебе вообще ноль, но из того, что я понял - джанга скорее как конструктор по типу вордпресса, нет?
Нет просто вообще. Полу-конструктор для бэкенда, фронт часть самому придётся писать полностью, только админка есть в коробке.
Что ты хочешь в куках передавать? Ты данные можешь в сессиях хранить. Ты можешь использовать легковесную базу sqlite, если не хочешь маяться с постгресом.
Куки вообще о другом и для другого.
А что, через встроенные жинжа темплейты никто фронт не пишет?
Обязательно накручивают поверх какой-то жс фреймворк типа реакта, а джанга только для работы с бд и рестом?
Если что-то совсем простое можно и на темплейтах, можно к ним бутстрап, джейквери приклеить - будет лучше, если одностраничник можно хоть вью прикрутить
Там не jinja, а jinja-подобные темплеты. Кстати лучше их заменить именно на джинджи, потом меньше проблем будет.
Джанго из коробки тебе даёт именно бэк часть. Это механизм шаблонов без реализованных шаблонов, продвинутую работу с БД через ORM, всякие там механизмы куков, авторизаций, систему для создания middleware, url-процессинг и массу подобной хрени.
Но в коробке, кроме админки, ничего больше и нет. В отличии от типичных конструкторов сайтов. Никаких шаблонов галерей, меню, досок объявлений, ничего нет вообще. Ни кода для базы, ни фронт части. Всё самому.
На базе jinja ты легко можешь сам сайт написать, но это при условии, что ты владеешь HTML/CSS/JS.
Бутстрап - спорное решение. Его разрабатывали давно, когда браузеры плохо нормальный HTML и CSS поддерживали. В результате они велосипеды убогие и кривые пилили, когда на голом HTML ты можешь сделать всё прямее и лучше. Вот в самой базе, bootstrap grid. Сейчас гриды лучше в голом HTML поддержаны, более функциональные, и уже все современные браузеры поддерживают. Вообще проблема многих таких решений.
jQuery тоже устарел. Или лучше на голом JS, или уже мощные современные фреймворки.
А на чем можно быстро лепить симпатичные мордочки погромисту без всяких зойчатков дизайна?
Имеются в виду не сайты, а сорт оф гуи в вебе, для управления всякими штучками на бэкэнде.
Мне нравится вариант с рест апи + морда на клиенте на каком-то жирном жс фреймворке. Или есть что получше?
Clean code же, хоть и примеры на жабе.
Это ж не ответы разрабов, а случайные ответы простых студентов
На самом деле магия, не видел чтобы генераторы вставляли прямо как аргумент функции
Можно изи запустить питончик на heroku или pythonanywhere.
В прод питон запускается реально заёбисто: добавление всех зависимостей в requirements.txt, docker, gunicorn и nginx.
Это важные навыками для профи питониста, как впрочем и для разраба на любом другом языке.
В любом случае, настраивать весь этот ci/cd адок придётся не очень часто пытаюсь себя успокоить, настроил и хуячишь код.
Чаще приходится писать и читать бизес-логику, а это на питоне код пишется быстрее, чем на других языках.
Но если ты не катишь свои проекты в серьёзный прод, то это всё не нужно и ты можешь спокойно юзать сервисы, написанные выше в 1 строке. А потом когда придётся катить проекты в прод - научишься настраивать всё это за неделю-другую
Кстати, в exe тоже можно скомпилить питоновскую прогу и это не очень сложно :)
Гошечка хороша и вакансии в Москве есть и получают Гоферы больше питонистов, но мне кажется она посложнее питона из-за обязательных: асинхронщины, указателей и ссылок.
+ статическая типизация обычно замедляет разработку фич
ну и у гошечки нету django
Кидали уже выше ссылку на спеку generator expression >1622793
там создаётся генератор в 1 строку
я думал выражение генератор должно быть обернуто в еще одни ()
это ж просто перепечатка видоса одного чувака https://youtu.be/9kLI6R0heTQ
Он вроде хорош в питоне, шарит
Список на сильного джуна/мидла, близок к правде. Но там описаны прям все навыки, примерно мидла.
Не обязательно шарить за весь список, если хочешь устроиться джуном.
Если бы я составлял обязательный список, я бы точно выкинул:
1. HTML, CSS, JS - на питоне обычно апихи пишут и если тебя не взяли на fullstack, ты будешь супер мало писать фронт.
2. Асинхронность мало юзается в старых проектах, а кроме легаси джуну ничо больше не доверят :)
3. Тестирование
4. PostgreSQL - глубокое понимание не требуется, главное знать основы SQL и уметь быстро гуглить
Все эти вещи очень важны, но они не фундаментальны и быстро учатся по ходу работы и по необходимости.
>Шутки шутками, пасты пастами, но может ли новичок написать свою имиджборду на джанго?
>написать
>сам
>на питоне
Лол, сделай просто
import django_imageboard
https://github.com/wgoode3/Django-Imageboard
Напиши на фласке свою имиджборду
>для управления всякими штучками на бэкэнде
Для управления штуками в бекенде у тебя есть админка, поставляемая из коробки.
почему на питоне?
ну а вообще очевидно тебе нужен графический фреймворк для питона, хоть тот же ткинтер
классная картинка. Что за дядя?
Не надо. Там ещё любят всё в comprehension заворачивать даже там, где не надо. Пиши проще. Серьёзно.
>типа видеоплеера
Ты уверен, что справишься? Понимание работы плееров есть? Демуксинг там, декодинг, вот это всё.
Потому-что хочу на питоне, ну то есть я понимаю что он не так эффективен в этом даже как делфи,.. Не знаю что ещё взять поэтому плеер, мб сначала мп3, а потом уже и видео.
Одному, без наставника тяжело, постоянно прыгаю с одной книжки на другую и не могу зацепиться за что-то конкретное, если можешь предложить что-нибудь - я буду только рад.
>>23596
Не уверен, но надо с чего-то начинать.. погуглю как воспроизводить видеофайлы и т.д.
>как воспроизводить видеофайлы
ffmpeg, если вдруг сам не найдёшь. Если не разбираешься, то лучше не берись за это. По ЦОС хотя бы что-то почитай ещё.
Я пробовал делать это при помощи wxPython, а именно wx.ScreenDC но проблема в том, что при движении курсора мыши этот слой в местах прохода стирается, меня такое положение дел не устраивает
Нашёл что-то на стэковерфлоу но не знаю как это использовать и есть ли для этого какие-то инструменты в Пайтоне https://stackoverflow.com/questions/1025412/how-does-f-lux-work
Спасибо
Посоветуйте материала по тестам по этому же языку. Хочу вкатится, понять что к чему и для чего нужно. Заранее спасибо, змеякi!
двачую
Спасибо.
А в каком то из них есть конструктор форм? Чтобы рисовать окошки-кнопочки, а не текстом их выписывать?
Спасибо за ответ, я уже работаю джуном, но посчитал что это видео довольно полезно, что бы выделить для себя некие направления дальнейшего развития, как по твоему, что еще можно было бы посмотреть/потыкать для этого стека, помимо того, что он озвучил?
Уже можно pythonloc/piploc. Будет как в npm.
Какой придётся. Допустим есть мод для майнкрафта написанный на скала, нужна скала. Другие игоры требуют луа для моддинга. Если писать с нуля то мне проще на питоне, если ускорить надо, то проще модуль на си написать для того же питона. Душа лежит к расту.
Потому что байткод интерпретируется. Там цикл и большой свитч по опкодам. Java и C# тоже могут работать в режиме интерпретатора, но они включают JIT и на лету компилируют фрагменты байткода в нативный машинный код. Разделение на компилируемые-интерпретируемые языки не всегда чёткое в общем.
Можно try, более строго будет использовать регекс. isdigit будет медленно и громоздко. try сработает как надо в большинстве случаев. Регекс нужен если тебе надо оставить число строкой, но при этом быть уверенным что там записано число и в точном формате, без подчёркиваний и плюсов например.
Если тебе нужно параллельно перемалывать что-нибудь на CPU в питонячем коде, то мультипроцессинг. Любой ввод-вывод (диск, сеть) и числодробилки на си вроде numpy умеют отпускать GIL и мультитрединг будет работать.
Это всего лишь константа, которую ты можешь использовать как специальное значение. Например задавать какие-нибудь неполные значения вот так: [4, ..., 8]. Естественно в коде тебе нужно будет самому обработать эллипсис и вставить недостающие числа.
Что такое индексы в БД, какие алгоритмы там используются, для чего они нужны.
Почему плохо считать количество строк как len(Model.objects.all())
Чем отличаются GET и POST запросы. Почему нельзя всё делать с помощью GET.
Короче хуй знает, почему этот учебник всем советуют. Может есть какой нибудь более подробный? Советовали Diving in to Python и Лутца.
так сортировку пузырьком в 9-10 классе проходят лол
https://nnfs.io/
Лутц - норм.
Из тех что я читал больше всего зашел "Рамальо Лучано - Python. К вершинам мастерства", но он не совсем хорош для начинающих.
Нужно написать передачу данных на ардуинку с малины через блютус, на питоне.
Перерыл гугел, и что-то не нашел.
Только циферку передать, мне будет достаточно.
Окай, подумою, к следующему треду может и куплю.
Решил хотя бы вывести список
b = []
while True:
text = input()
b.append(text)
if not text:
break
print(b)
а вот как из него дубли убрать я хз что-то. Подскажите аноны добрые !
if text not in b:
b.append(text)
Можно в конце прогнать через сет и обратно в список, например.
Ну опять же, for с тем же условием, что выше.
Т.е. закидывать в новый список только то, чего там нет.
Уже не надо.
Понял, спасибо большое
Но у тебя ретёрн ничего не возвращает, у тебя функция сама всё печатает
Мне как раз нужно, чтобы то, что напечатано через цикл, печаталось через return как целая строка.
что за реклама -_-
алсо в том же грокаем глубокое обучение вообще показано как свой нейрофреймворк сделать лол
Лист нельзя. По сути нужно вернуть многоуровневую строку, где каждый уровень - это один из вложенных в лист листов, конвертированный в строку.
Класс, спасибо.
Потому, что там "__str__" в методе.
Не реклама, просто открыл свой акк на кикстартере и там в закладках оно.
Гляну что за книга, первый раз слышу.
Что можешь сказать про такое решение ? b = []
while True:
text = input()
b.append(text)
if not text:
break
print(b)
from itertools import groupby
new_b = [el for el, _ in groupby(b)]
print(new_b)
а, понял
Чем поднять, руками? На каждом планшете? Тогда зачем python-ом копировать, если можно сразу руками. Хуйню ты какую-то сказал неподумавши.
Как ето нет буквы. Была же.
В питоне медленная математика, это да, сетевые либы написаны хорошо
>медленнее PHP
Настолько медленнее, что лавруха с гигатонной комьюнити на последней быстрой пыхе медленнее джанги
Он изменится извне, а в словаре будет старый, так что ты больше не сможешь извлечь его значение.
Там вообще залупа. Я уверен есть простое решение но я собираю эту хуйню по кусочкам как даун. Только моральная поддержка двача и спасает. Кстате тебе маны не залить через ментальный фаллос ?
Ты не понял... я про изменяемость как таковую. Я уже писал свой лист с
__hash__(self): return 1
Все работало без эксепшнов. Вопрос в том почему изменяемые объекты в принципе не используют как ключи? Вот могу я например реализовать хеш-алгоритм по которому из всех элементов списка создается строка и потом вычисляется ее хеш
Решаешь задание, в конце выдает вариант разрабов и несколько случайных.
Потенциальная неоднозначность, ты сохранил лист как ключ и можешь изменить этот же объект в любом другом месте кода.
Привет, а какие вопросы тебе на собеседовании задавали? По каким темам гоняли? Портфель с гитхаблом просили?
Лови мой вариант.
Подозреваю, что можно вообще четенько. Я нахуевертил из того, что пока знаю.
n = 5
width = n2 + 1
for x in range(width):
sign = -1 if x > n else 1
diff = n - ((n-x) sign)
x1, x2 = n - diff, n + diff+1
row = [' '] width
row[x1:x2] = range(x1, x2)
print(row)
Главное иметь большой мочевой пузырь. Бесплатный кофе и печеньки это как минимум + 15% к зарплате.
Ну смари малёк, одно правило. Готовь очко. ГОТОВЬ АНУС ПАДЛА.
https://ideone.com/2Ub9Wv
Дружище, тебе бы математикой позаниматься немного для развития мышления.
Пойдёт, подумал же о нём. Но во всякие одноразовые скрипты не потянешь же.
Кстати, как развить логику? У вас с этим все в порядке?
Спасибо за наводку. Пробежался мельком, вроде неплохо. Буду знакомиться ближе.
В общем, я почитал детальнее, у тебя только три варианта отрабатывается
if key == "=":
elif key == "C":
elif key == "-/+":
А как часто на практике приходится строить ромбы? Ну то есть приходит заказ на 10 ромбов вот оплата, срок неделя.
При чём тут практика? Хочется красивый код читать и писать.
Челик скинь настройки своего шрифта, цветов вот этих всего такого это как ты так сделол ? Есть готовые пресеты как у тебя ?
Смахивает на дефолтный саблайм.
Там есть пара дефолтных пресетов
В реальном коде да, а в таких быстрохаках лень сочинять.
> никогда, это чисто страдание херней, тебе в принципе на питоне особый функциональный скилл не нужон.
Вот и я о том же. Практической пользы от таких заданий никакой, если только для общего понимания и принципа работы. Это я с дивана рассуждаю.
https://pastebin.com/dP8EtRe6
Ещё бы гуры подтянулись и показали класс, лол.
Короче во первих вот эти квадратные скобки нельзя использовать такое я не прохоил еще и она должна быть с вершиной посередине
for w in input().split():
A[w] = A.get(w, 0) + 1
print(A[w] - 1, end=' ')
Через сколько времени вы смогли бы самостоятельно до такого додуматься? Я вот вообще не бум-бум, хотя только материал по теме прочитал. Возможно стоит чаще смотреть в чужой код, а не часами велосипед придумывать.
Со split дурацкий хак, а так всё довольно очевидно.
Или там предпологается вводить много значений?
Если ты введёшь одно значение, то оно тебе напечатоет только
0
и всё.
Оно считает и печатает одинаковый ввод, но я не очень понимаю применение этой функции.
Имело бы смысл запускать его зацикленным, а так один подход, так что я подумал, что это такой способ тримнуть ввод, лол.
>>25556
Изначально условие было таковым:
В единственной строке записан текст. Для каждого слова из данного текста подсчитайте, сколько раз оно встречалось в этом тексте ранее.
Словом считается последовательность непробельных символов идущих подряд, слова разделены одним или большим числом пробелов или символами конца строки.
> one two one tho three
> 0 0 1 0 0
Смотришь на решение и все кажется таким очевидным, но это сейчас, до этого ступор был.
Вряд ли. В общем виде "сколько раз оно встречалось" в питоне красивее всего решается через defaultdict, так что сомневаюсь, что здесь надо городить списки.
Из базовых типов оно как-то очевиднее, чем предложенное аноном решение.
Но может и под специальные, да.
Как тебе очевидно? Мне представляется, что сколько что-то встречалось естественным образом перетекает в пары объектов: Что и Сколько_раз. А это дикт. Как ты списком хочешь это представить?
Не могу судить, но конкретно решение которое я выкладывал выше считается рекомендованным.
Я тут на днях задачку решал, необходимо было вывести все слова которые НЕ повторяются. Сейчас добавил в неё буквально одну переменную и одно действие, чтобы она считала колличество повторений каждого слова, вышло пикрил
Чем наращиваем? Куда считаем? Вот у него дикт: попалось слово, он его взял в качестве ключа, и дал ему значение 1. Попалось ещё раз? Прибавил к значению 1.
Ну, допилился, у тебя '\' нет, например. В любом случае, не заебался кавычки и запятые ставить? Сделал бы хоть единой строкой эту толпу.
Надеюсь ты понимаешь, что для строк длиннее 5 слов результат станет менее интересным? Лукап по дереву словаря станет существенно быстрее, чем каждый раз бегать по всему листу с подсчётом. Надо чекнуть дефолтдикт для полноты картины.
При
tstr = 'one two one two three ' * 10
уже
6.746952266
11.926739449000001
Я догадывался, что так будет, да.
>Дефолт дикт ещё даже медленне для этого оказался.
Хотя нет, на 3й знак, но побыстрее
https://ideone.com/orahSi
Пиздос, как же уебищно выглядит этот пичарм из коробки, от цвета комментариев аж глаза заболели
Ну хуй с тобой, уговорил. Заменил ручной тупл на string.punctuation
> Ну вон через гет нормальный способ.
Добавить добавил, но два слова в один ключ переводит. Нужно сплит воткнуть, скобки или что-то еще?
Я для небольших скриптов использую вскод, нах этот пичарм нужен, если у тебя проект уровня laba1.py
Не могу понять куда именно сплит ставить. Без него только в таком виде работает, но это лишь один ключ.
a = {}
a = a.fromkeys([input()])
Можно и без сплита. Так, например.
А вообще реально через дикт компрехеншн одновременно и добавить ключи, и посчитать длину этих ключей?
А, там такая же задача была, оказывается. Не читал посты выше.
Я этим и занимаюсь , решаю задачки из codeforces
Но если книжку интересную посоветуешь для такого буду рад, желательно с практикой я если не делаю забываю сразу
А впрочем не надо, по пути пойму
Не могу найти библиотеку для открытия 3d объектов.obj или .fbx для питона. Цель - вертеть 3d объект кодом и сохранять изображение в .jpg.
Буду благодарен за наводки
Я там масштабы твоей аппы не очень представляю, но почему бы просто не взять блендер и подёргать его через нативный питоний апи?
https://docs.blender.org/api/current/index.html
Насколько понимаю, я тогда буду ограничен blender'ом, а в проекте планируется также использовать opencv и в общем работа с вебкой
Ну смари малёк, первое это конечно анал. ГОТОВЬ АНАЛ БЛЕАТЬ!
Аноны, посоветуйте материалы для вкатывания в асинхронность. Активно курю статейки и видосы по asyncio, но такое чувство, словно чего-то фундаментального не знаю, о чём в них не говорят.
>я тогда буду ограничен blender'ом
Да не обязательно.
Ты можешь гонять блендер порождённым процессом, как тут: https://www.youtube.com/watch?v=20nTx1x4nRY
Ты можешь юзать blender as module: https://pypi.org/project/bpy/
И я где-то видел ситуацию, где питон снаружи цеплялся к запущенному блендеру, делал какую-то свою работу, отключался и уходил по своим делам. Но нагуглить не смог.
Это сложная тема, её сходу не возьмешь. Нужно некоторое время и практика, чтобы прохавалось.
Такой еще вопрос: частенько в вакансиях на бэк идут рядом Джанго и asyncio/aiohttp, но как они блин согласуются? Нормальной асинхронности в Джанге еще не скоро быть, так зачем работодателю обязательно и знание Джанги и знание асинхронок?
Генераторы
list comprehension
a = list('a')
if len(a) == 1:
print(a[0],1, end = '')
Большое спасибо за помощь.
линейному программированию/нелинейному, немного архитектуры, знаю sql, знаком с шарпом,
может скинешь код?
Какую либу юзаешь для интерфейса? Многие либы и фреймворки поддерживают асинхронщину или трединг из коробки
>asyncio/aiohttp, но как они блин согласуются?
Ты на aiohttp можешь полноценный сервер написать
Ну я бек имел в виду.
Если ты хочешь писать на C, в прод, то конечно ctypes лучше. Он и поддерживается официально из коробки и выполняет именно то что ты хочешь - позволяет юзать сишный код в питоне
Но писать на Сишке...не очень интересно, поэтому есть cython, который позволяет писать почти как на питоне, но и немного как на си
Зачем вообще оптимизировать код на питончике?
tkinter. А какой смысл скидывать? Просто вот у меня например tar архивирует файлы и я жду пока он закончит чтобы получить returncode из-за этого зависает, но так с любой другой программой будет.
Возьми и перекати. Шапка есть в шапке
Вы видите копию треда, сохраненную 14 мая 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.