Сохранен 547
https://2ch.hk/pr/res/400291.html
Прошлые домены больше не функционируют, используйте адрес ARHIVACH.HK.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Официальный Тред Языка Python #3

 Аноним 29/10/14 Срд 23:20:45 #1 №400291 
14146140457410.png
Этот тред пройдет под знаком темной стороны силы.
>Dooku is a set of libraries for the Python programming language that provides various useful stuff that you might need in everyday usage. The idea is to provide a set of libraries and useful functions, just like Boost does in C++ world.
http://dooku.readthedocs.org/en/latest/

Полезные ссылки
http://pythondigest.ru/ - новости и так далее. Можно подписаться на их твитер.
http://habrahabr.ru/post/205944/ - полезные материалы для начального уровня.
http://pythonanywhere.com/ - бесплатный и простой хостинг для джанги, например.

Завтра ищешь в интернете книжку...

Прошлый тут >>380633
Аноним 29/10/14 Срд 23:22:31 #2 №400293 
14146141511160.png
>>400291
Когда уже абу починит превью png?
Аноним 29/10/14 Срд 23:38:26 #3 №400298 
в етом ИТТ треде мы выяснили что новомодные анальные игрушки для быдляков ПИСТОН и ХАЧКЕЛЬ
сосут у олдфажных мега языков на все времена C-шки и perl-а все время
---
лучий вариант на ПИСТОНЕ: http://ideone.com/udDJ9
(императивный понос)
2 варианта на ХАЧКЕЛЕ
1.ебаный пиздец во всех смыслах и имеперативное гавнище: http://ideone.com/M42su
(сосет у C-шки)
2. деклашотивное петушение http://ideone.com/0e3qE
(сосет у декларотивного петушения на perl)
---
для сравнения
perl: http://ideone.com/i0ob4 http://ideone.com/olq5B
C: http://ideone.com/ap43H
LUA: http://ideone.com/DVdhr http://ideone.com/Xkj4D
---
http://ideone.com/6cZYq лисп как и ожидалось сонул, ну и возможно ответ неправильный
(какието черезжопные варианты с 33 кратной вложеностю скобок быле побыстрее но натая хуйне никому не сдалась когда есть простое и самое быстрое решение на C-шке)
Аноним 29/10/14 Срд 23:51:24 #4 №400303 
>>400298
Это что, золотой пост?
Аноним 29/10/14 Срд 23:53:06 #5 №400304 
>>400293
> абу
> починит
Аноним 29/10/14 Срд 23:58:13 #6 №400305 
разу уж такое веселье тут пошло
может, подкинет кто туториал по фласку?
Аноним 29/10/14 Срд 23:59:27 #7 №400308 
>>400298
Хотел посмотреть, как давно это было, да все ссылки уже протухли. Спи спокойно, нульчик.
Аноним 30/10/14 Чтв 00:00:03 #8 №400309 
>>400305
http://rutracker.org/forum/viewtopic.php?t=4566244
Аноним 30/10/14 Чтв 00:05:02 #9 №400314 
>>400309
благодарю, Антош!
Аноним 30/10/14 Чтв 00:17:04 #10 №400325 
>>400298
Ссылки дохлые, что там хоть? Очередной кукурузный и никому не нужный тест по подсчёту 1000000 числа фибо?
Аноним 30/10/14 Чтв 00:19:23 #11 №400327 
>>400325
Ньюфаг? Иди просвещайся https://lurkmore.to/%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Iamyou/%D0%9A%D0%BE%D0%B4%D0%B0%D1%87
Аноним 30/10/14 Чтв 01:29:03 #12 №400351 
14146217439370.jpg
Анон, скажи за порфолио, если я решу связать жизнь с пистоном:

1.имеет ли смысл делать имидж борду, да ещё и на какой-нибудь торнадо (или что там норм, что-нибудь с асинхио в связке и тд).
2.делать ли бложек, если есть борда, или бложик > борды ? тут, конечно, джанга
3. форум с авторизациями/регистрациями/модераторами/админами
4. пилить ли сраный_чатик на асинхио с JS клиентом и выбсокетами ? оно вообще. нахуй кому надо будет ? всего-то меньше 100 строк, примут за дебила с "привет мир"
5. что надо ещё, чтобы не послали нахуй с таким портфолио ?
6. а если я хочу быть кем-то отличным от веб-девелопа, но всё ещё писать на пистоне
Аноним 30/10/14 Чтв 01:46:16 #13 №400358 
>>400291
Бля буду, спасибо за ссылку на этот хабрапост, ебана :3
Аноним 30/10/14 Чтв 08:31:24 #14 №400392 
>>400327
Вот откуда у очкоблядей этот постоянный элитизм на пустом месте?
Аноним 30/10/14 Чтв 09:54:01 #15 №400402 
>>400351
Всё что ты назвал это hello world, уровня туториалов, никому не интересно.
Попробуй сделать библиотеку, которая будет кому-нить полезна и выложить на pypi.
Аноним 30/10/14 Чтв 10:30:41 #16 №400408 
Стоит ли сейчас изучать петон? Насколько он востребован на западном рынке труда?
Аноним 30/10/14 Чтв 10:35:06 #17 №400409 
14146545067950.png
14146545067961.png
14146545067972.png
14146545067973.png
>>400408
Один из самых популярных ЯП. Востребован.
Его в любом случае полезно знать хотя бы как второй язык, скриптовый, для системного администрирования, автоматизации и прочего.
Аноним 30/10/14 Чтв 14:45:13 #18 №400465 
>>400392
Потому что элита элитна априори
Аноним 30/10/14 Чтв 14:51:48 #19 №400470 
Киньте гайдов по django + extjs, чтоб въехать быстро, без разжевываний.
Аноним 30/10/14 Чтв 16:06:02 #20 №400481 
>>400402


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

На самом деле я было без воображения и не могу придумать ничего хоть немного полезного, есть опасение, что если я запилю либу, она сама будет уровня ХВ, не потому что не смог, потому что не придумал
Аноним 30/10/14 Чтв 16:08:36 #21 №400482 
>>400481
Потому что необходимость делать либы появляется по мере того, как что-то делаешь. В какой-то момент не находишь то, что тебе нужно и приходиться пилить самому.
>смысл же показать как я код пишу
Обычно на собеседованиях дают задания же. Оторванные от реальных задач, всякие задачи на смекалку и знание каких-то хитрожопых тонкостей, что жутко бесит.
Аноним 30/10/14 Чтв 16:25:08 #22 №400486 
>>400482
в том и проблема, я не могу придумать себе проект. вернее могу, но все это набор херни для решения инстант-задач, ничего уберсложного или для чего нет плюшек в pypy

максимум, могу подкинуть себе задачку на пару часов, чтобы мозги размять, но придумать что-то большое, на что не будет времени жалко - мозгов не хватает
Аноним 31/10/14 Птн 01:23:47 #23 №400620 
>>400351
Пили всё. Я как заёбаный человек в качестве интервьювера могу сказать что это облегчает задачу в разы.
Аноним 31/10/14 Птн 07:00:41 #24 №400660 
Cтоит ли учить питон, если я знаю кресты лишь на средненьком уровне? Паттерны учу по крестам, игрульку на SFML пишу.
Прост вдруг питон перемешает все знания в башке.
Аноним 31/10/14 Птн 08:23:13 #25 №400664 
Не знаю куда писать, пишу в первый попавшийся. Я один при выполнении commit мысленно добавляю в голове 'suicide'? Надо срочно увольняться.
sageАноним 31/10/14 Птн 15:05:48 #26 №400729 
>>400664
Всё у тебя будет хорошо. В рашке найти работу программистом можно за месяц-полтора. А если так любишь английский, то в америку езжай.
sageАноним 31/10/14 Птн 18:22:31 #27 №400775 
>>400729
Люблю английский, но и Россию люблю. Программирование не люблю. Вернее, не люблю программировать за деньги. Но без денег не умею жить.
Аноним 31/10/14 Птн 20:03:02 #28 №400798 
>>400620
анон, ты питоном зарабатываешь ? скажи более-менее, что надо знать/уметь чтобы нормально работать, а не фрилансить как шлюха
Аноним 31/10/14 Птн 20:06:44 #29 №400803 
>>400798
кресты/шарп/джава
Аноним 31/10/14 Птн 20:07:48 #30 №400804 
>>400798
Надо знать питон.
Аноним 31/10/14 Птн 21:03:04 #31 №400826 
Подкиньте годную литературу для изучения python
Аноним 31/10/14 Птн 21:12:52 #32 №400829 
>>400826
SICP
Аноним 31/10/14 Птн 22:58:43 #33 №400869 
>>400829
А что нибудь понятное, и на русском хотя бы, не силён в английский. Если плохо ищу, то можно ссылку?
Аноним 31/10/14 Птн 23:34:25 #34 №400878 
14147876659200.png
>>400869
Аноним 31/10/14 Птн 23:41:37 #35 №400879 
>>400878
Че это за херня? Я не эту пикчу клеил!
Аноним 31/10/14 Птн 23:54:46 #36 №400885 
>>400879
лол, открой ее
sageАноним 31/10/14 Птн 23:55:37 #37 №400886 
>>400878
ужс какой л л
;DDD
sageАноним 31/10/14 Птн 23:56:51 #38 №400887 
а хелуин типа
Аноним 01/11/14 Суб 00:00:57 #39 №400888 
>>400798
Кроме знания просто синтаксиса питона тебе нужно знать понимать практиковать git, базовые знагия реляционной теории, понимания как работает ОС, состязательные проблемы, паттерны проектирования. Как специалист ты должен полностью понимать как вообще работает компьютеры и сеть. Короче танненбаум + лутц/бизли + фреймворк который ты будешь использовать и ты уже отличаешься от фриланс макаки. Зарабатываю питоном, в большинстве случаев (80 %) - django
Аноним 01/11/14 Суб 00:01:08 #40 №400889 
>>400885
>>400887

Ах вот оно что.
И куда мне теперь девать столько кирпичей? вопрос риторический
Аноним 01/11/14 Суб 19:02:28 #41 №401059 
Большой вопрос. Касаемо связи по сети в питоне + tkinter

В общем, имеется:
1. "клиенты" с интерфейсом в tkinter'е
2. консольный сервер, получающий сообщение от одного и отправляющий другим.

Как правильно — для маленькой частной программы, а не энтерпрайзного решения — организовывать асинхронную связь по сети через socket?

Если получить нечего, то socket ждёт себе и ждёт, из-за чего гуи клиента виснет до получения какого-либо соощения. Для сервера норм, если нет сообщения, то ему и делать ничего не надо.

В данный момент я сделал так:
1. В клиенте стоит неблокирующий сокет, выдающий ошибку в случае отсутствия данных. Собственно, эта ошибка ловится и возвращается какое-нибудь "empty"
2. Функция listener'а пробует получить сообщения, и если там это "empty" — tkinter.after(150,receive). А если что-то есть, то уже дальше куда надо отправляется.
То есть, каждые 150 миллисекунд я проверяю, не пришло ли мне там чего по сети.
В итоге интерфейс не виснет, спокойно могу разные виды данных (самоустановленные, разумеется) получать и обновлять что нужно без всяких проблем.

Процессор, вроде бы, не грузит (когда ставил 5 миллисекунд, мои core2duo 500-строчным кодом загружались на 15 процентов) — 0.5% времени всего занимает.

Собственно, а нормально ли вообще такое решение? Как-то немного топорно это смотрится, постоянно проверять, а не просто ожидать получения и уже тогда выполнять операции. Задержка не так важна, в принципе, но приятно было бы иметь минимальную возможную без нагрузки на процессор.

Пытался через multiprocessing/multithreading, но не взлетело, всё равно зависало, почему-то. Ещё не разобрался, видимо. В теории, взлетит ли запуск двух процессов: в одном клиент, в другом этот самый network listener, но уже с блокирующим сокетом. И вот второй процесс пусть себе висит, а отедльный гуи будет себе работать без проблем?


Ну и мимовопрос, который просто лень было пока погуглить: как-нибудь в байтовом формате объект pickle (отправленный socket.sendto(pickle.dumps(a))) можно распознать? Грубо говоря, у меня передаётся либо string (на любых языка), либо вот уже что-то более серьёзное (объект какого-нибудь самописного класса, например) через этот pickle.dumps. Добавлять очередные флаги как-то не хочется. Передавать всё через pickle — тоже.
Аноним 01/11/14 Суб 19:12:03 #42 №401060 
>>401059
О последнием: так-то я посмотрел, как оно выглядит, и начинается с \x80\x03X каждый раз (дальше уже количество символов, если это строка, идёт, и так далее), но мало ли где ещё такое начало будет.
Аноним 01/11/14 Суб 19:34:27 #43 №401075 
14148596672830.jpg
>>400888
спасибо анон, значит иду в правильном направлении: гит - знаю, сети сейчас задрачиваю, надо теорию по ОСям подтянуть
Аноним 01/11/14 Суб 19:42:34 #44 №401079 
>>401059
заебало читать эту простыню, но почему бы не запилить всё на асинхио ? прием/рассылка сообщений делается с половины пинка, в качестве примеров погугли чатики на вебсокитах с питоновским сервером на асинхио, на гитхабе точно есть

и да, проверять на наличие сообщений это пиздец из 90х, уже давно используют события
Аноним 02/11/14 Вск 03:22:14 #45 №401186 
>>401079
>и да, проверять на наличие сообщений это пиздец из 90х, уже давно используют события
Да я понимаю, лол, но надо мне было хоть что-то придумать, чтобы работало.

В общем, асинхио ещё не пробовал, но зато, вроде, с мультитредингом разобрался, и сделал так:
socket blocking включил, внутри Tk() запускается в отдельным тредом функция с msg, addr = socket.recvfrom(), и как только что-то получает, создаётся событие, которое tkinter ловит и делает что нужно. Норм?
В асинхио, я так понимаю, тоже примерно так всё сделано, ведь как иначе-то можно сделать?
Аноним 02/11/14 Вск 05:57:40 #46 №401194 
Что из чтива есть по питону и джанге, чтоб кратко и по делу? Без всяких объяснений ООП и прочего.
Аноним 02/11/14 Вск 20:45:28 #47 №401369 
>>401194
Что ты хочешь получить от такого чтива? Ты хочешь разобраться как работает или научится чему-то? Не совсем понятно , что тебе надо.
Аноним 02/11/14 Вск 20:47:48 #48 №401374 
>>401194
http://www.djangobook.com/en/2.0/index.html
http://www.tangowithdjango.com/
http://effectivedjango.com/tutorial/
https://docs.djangoproject.com/en/1.7/intro/tutorial01/
Недавно в /r/django наоборот жаловались что туториал слишком сложный, требует знания mvc паттерта и понимания основ веб разработки
Аноним 03/11/14 Пнд 00:05:47 #49 №401430 
>>401369
>Не совсем понятно , что тебе надо.
Нужен полный справочник по языку, описывающий все его возможности и нюансы. По джанге уже вкинули.
Аноним 03/11/14 Пнд 00:12:10 #50 №401433 
>>401430
>описывающий все его возможности и нюансы
Это же трёхтонный талмуд будет, не? Да и после прочтения которого всё забудешь. Разве не лучше по мере поступления необходимости что-то выучивать? Какую интродактори книжечку, конечно, и можно почтитьа, но оно, вероятно, по basic python спокойно гуглится, или какой-нибудь курс на сайте а-ля codecademy пройти
Аноним 03/11/14 Пнд 00:13:28 #51 №401434 
>>401430
Официальная документация.
Хорошая книжка http://www.script-coding.com/Python/Otkidach.html и ещё автора Сузи.

И ещё просто perl. Запусти ipython и смотри help(str.replace) и т.п. автодополнение по табу
Аноним 03/11/14 Пнд 00:15:14 #52 №401435 
>>401434
тьфу ну perl а repl. В языке есть встроенная помощь по всем методам и интроспекция. Используй это люк.
Аноним 03/11/14 Пнд 00:19:57 #53 №401438 
>>401434
>Официальная документация.
Она на инглише. Читать могу, но после нескольких жутко страниц заебывает.
> Описание охватывает наиболее распространенные версии Python: от 1.5.2 до 2.0.
Тухловато же.
Аноним 03/11/14 Пнд 00:24:38 #54 №401440 
>>401438
Учи инглиш, без него кодить нереально.
Sad, but true.
Даже если документация к языку переведена, в библиотеках не разберешся.
Аноним 03/11/14 Пнд 00:31:49 #55 №401441 
>>401440
> Учи инглиш
Ненавижу английский, поэтому и учить его не собираюсь.
> в библиотеках не разберешся
Знаний и терпения на пару страниц обычно хватает, поэтому проблем не было.
Аноним 03/11/14 Пнд 00:33:25 #56 №401442 
>>401441
В любом случае книга в переводе откидача лучшая. Почитай, она ещё актуальна.
Аноним 03/11/14 Пнд 00:36:00 #57 №401443 
>>401442
Описанная версия от 2.7 сильно отличается?
Аноним 03/11/14 Пнд 00:41:42 #58 №401444 
>>401443
Есть отличия, но не принципиальные. Думаю они даже совместимы так-то.
Аноним 03/11/14 Пнд 01:14:56 #59 №401447 
Ёбаные некрофилы. Какой нахуй второй пайтон.

По справочнику - david beasley - pro python. Вообще гугли двух авторов - бизли и лутц
Аноним 03/11/14 Пнд 01:16:29 #60 №401449 
>>401447
3-й питон не нужен.
Аноним 03/11/14 Пнд 01:16:51 #61 №401450 
>>401443
1.5.2 и 2.0 даже на центосах уже не стоят. Читай сращу про третий питон лутца.
Аноним 03/11/14 Пнд 10:16:34 #62 №401521 
Сколько время нужно, чтобы набрать знаний для уровня джуниора? Если есть 2-3 часа в день времени
Аноним 03/11/14 Пнд 11:22:07 #63 №401537 
>>401449
Твой анус никому не нужен, второй питон мертвеет
Аноним 03/11/14 Пнд 11:31:13 #64 №401539 
>>401537
Ты питон с пердлом не путаешь случайно?
Аноним 03/11/14 Пнд 11:33:09 #65 №401540 
>>401539
>Ты питон с пердлом не путаешь случайно?
Нет. Питон 3 намного лучше второго.
Аноним 03/11/14 Пнд 11:46:18 #66 №401544 
>>401540
Конечно лучше, теперь принт со скобочками использовать надо. Такой-то порядок в языке навели.
Аноним 03/11/14 Пнд 12:44:47 #67 №401557 
Собираюсь ФРЕЛАНСЕТЬ на фласке. Подкиньте идеек для портфолио.
Аноним 03/11/14 Пнд 12:53:20 #68 №401559 
>>401544
>Пок-пок ченджлог не читал и так понятно что нинужен!
Ясно.
Аноним 03/11/14 Пнд 13:09:18 #69 №401564 
>>401559
Поясните нюфаку за отличие 2 от 3, начал на втором и не знаю проблем.
Аноним 03/11/14 Пнд 14:09:49 #70 №401580 
14150129896550.png
Нубовопрос, посоны: в PEP8 нихуя нет про indentation вот в таком случае; pylint матерится, как ни изворачивайся. Как правильно-то? Или всё-таки заводить переменные под результат каждой из функций?
Аноним 03/11/14 Пнд 14:36:50 #71 №401589 
>>401521
Бамп. Поясните, братишки
Аноним 03/11/14 Пнд 16:58:08 #72 №401622 
>>401589
2 месяца
Аноним 03/11/14 Пнд 18:05:37 #73 №401647 
>>401564
встроенный eventloop (начиная с 3.4), все строки юникодные. Плюс переписали систему слотов, плюс дохуя всего, ну почитай же ченджлог
Аноним 03/11/14 Пнд 18:23:03 #74 №401650 
Аноны, помогите ньюфагу. Как правильно реализовать такую ерунду?
for a1 in xrange(10):
__for a2 in xrange(a1):
____for a3 in xrange(a2):
______...
__________for a10 in xrange(a9):
____________print a1, a2, ..., a10
Аноним 03/11/14 Пнд 18:47:27 #75 №401659 
>>401650
используй матрицы, что ли. можешь даже сам класс матрицы написать, и уже с ним оперировать.
Аноним 03/11/14 Пнд 19:02:53 #76 №401667 
>>401659
http://docs.scipy.org/doc/numpy/reference/generated/numpy.matrix.html
Ну есть у меня матрицы, а что дальше-то?
Аноним 03/11/14 Пнд 19:03:24 #77 №401668 
>>401580
А зачем вообще так делать?
Аноним 03/11/14 Пнд 19:09:24 #78 №401671 
>>401650
print(9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
Аноним 03/11/14 Пнд 19:13:49 #79 №401673 
>>401671
Это совсем другое.

Неужели никто не знает, как это реализовать? Мне просто нужно вывести все десятизначные числа, в которых цифры следуют в порядке убывания.
Аноним 03/11/14 Пнд 19:15:48 #80 №401674 
>>401673
Ты не поверишь. Такое число только одно.
Аноним 03/11/14 Пнд 19:20:10 #81 №401676 
>>401674
Да, я не то написал. В порядке невозрастания. И там тогда for a_i in xrange(a_(i-1)+1).
Аноним 03/11/14 Пнд 19:22:35 #82 №401677 
>>401676
http://ideone.com/8nk3Hv
Аноним 03/11/14 Пнд 19:26:05 #83 №401678 
>>401677
Спасибо! А как написать print(xs, sep='') на python2.7?
Аноним 03/11/14 Пнд 19:27:43 #84 №401680 
>>401678
http://ideone.com/NQFZ43
Аноним 03/11/14 Пнд 19:33:44 #85 №401686 
>>401680
Okay. А как тогда сделать list.append((xs, sep='')) вместо print?
Аноним 03/11/14 Пнд 19:35:32 #86 №401688 
>>401686
http://ideone.com/IVa4kp
Аноним 03/11/14 Пнд 19:44:51 #87 №401694 
>>401688
Спасибо, буду учить python3 тогда.
Аноним 03/11/14 Пнд 20:45:23 #88 №401708 
>>401677
Что-то я понять не могу, а почему функция комбинаций с повторениями возвращает только неубывающие?
Сам решил так — http://ideone.com/J7zBFS Насколько это хуже встроенной (не считая красивости) команды?
Аноним 03/11/14 Пнд 20:49:29 #89 №401710 
>>401708
ой, там я с ренджом n немного оборался, он (1,5) должен быть, тогда всё верно делает.
Аноним 03/11/14 Пнд 20:54:10 #90 №401712 
>>401708
https://docs.python.org/3.1/library/itertools.html#itertools.combinations_with_replacement
>Combinations are emitted in lexicographic sort order. So, if the input iterable is sorted, the combination tuples will be produced in sorted order.
Аноним 03/11/14 Пнд 21:03:34 #91 №401715 
>>401712
Хотел спросить, нахуя оно это делает, но понял, что это не комбинации с повторением, так как есть with replacement, а есть with repetition, о котором я думал.
Аноним 03/11/14 Пнд 23:50:42 #92 №401809 
>>400291
Что за dooku, 95% которого — копия all, any и not any. Пиздец, нахуй оно вообще нужно? НАЩА ЛИБА КАК БУСТ ТОЛЬКО ФУНКЦИЙ В НЕЙ ПЯТЬ.
Аноним 04/11/14 Втр 03:51:55 #93 №401859 
>>400888
Поясни за паттерны проектирования конкретно в питоне, а то есть мнение, что большая часть их - богомерзкая джава-хуита, в питоне либо вредная, либо каким-то образом уже присутствующая.
Аноним 04/11/14 Втр 12:28:30 #94 №401938 
Помогите запилить цикл который проверит мой список на дубли соседних элементов
Это что-то вида
if b == b
b = b+1
else skip
Я хз как это правильно и нормально сделать на третьепитоне
Аноним 04/11/14 Втр 12:29:14 #95 №401940 
>>401938
> b+1
>else skip
>Я хз как это прав
там i конечно в квадратных скобках после b, но двач их сожрал
Аноним 04/11/14 Втр 12:44:02 #96 №401943 
>>401938
http://ideone.com/eDZpQZ
Аноним 04/11/14 Втр 12:47:16 #97 №401945 
>>401809
А хрен его знает. Я первую попавшуюся взял из дайджеста последнего. Предлагайте интересные варианты на будущее.
Аноним 04/11/14 Втр 15:17:15 #98 №401980 
ВЫ ВСЁ ВРЁТЕ. ГОВОРИТЕ, ЧТО ЯЗЫК ПРОСТОЙ; А Я ПРОЧИТАЛ 50 СТРАНИЦ САМОУЧИТЕЛЯ ПО ПИТОНУ И НЕ МОГУ НАПИСАТЬ ПАРСЕР ХМЛ ФАЙЛОВ, ДАЖЕ ЧУЖИЕ ПРИМЕРЫ КОДА НЕ ПОНИМАЮ. ВЫ ВРЁТЕ ВСЁ. НЕ ЛЕГКИЙ ВАШ ЭТОТ ПИТОН.
Аноним 04/11/14 Втр 15:41:57 #99 №401984 
>>401980
>А Я ПРОЧИТАЛ 50 СТРАНИЦ САМОУЧИТЕЛЯ ПО ПИТОНУ И НЕ МОГУ НАПИСАТЬ ПАРСЕР ХМЛ ФАЙЛОВ, ДАЖЕ ЧУЖИЕ ПРИМЕРЫ КОДА НЕ ПОНИМАЮ
А до этого 5 лет водил такси и играл в танки?
Аноним 04/11/14 Втр 16:00:35 #100 №401995 
>>401984
НЕ СУДИ МЕНЯ
Аноним 04/11/14 Втр 16:08:42 #101 №401997 
Наброшу унижений из отдельного треда: https://2ch.hk/pr/res/401987.html
Аноним 04/11/14 Втр 21:22:53 #102 №402107 
>>401859
Так и есть. Надо думать головой. Копипастить паттерны это очень вредная практика, характерная для джавамакак
Аноним 04/11/14 Втр 21:47:57 #103 №402112 
>>401938
from itertools import groupby
Аноним 05/11/14 Срд 18:30:11 #104 №402375 
14152014111020.png
Матаны, имеется такая вот матрица. Необходимо найти все "пустые" (нули) точки, вокруг которых есть 3 и более единичек. На пике там Х поставил. Какой наиболее рациональный способ нахождения этих Х-ов? Простой топорный перебор if Xm+1,n and Xm,n+1... как-то не очень. Если какая-то возможность поиска по "маске"?
Аноним 05/11/14 Срд 18:32:00 #105 №402377 
>>402375
Есть ли
Аноним 06/11/14 Чтв 00:16:02 #106 №402551 
>>402375
Просто прикладывай к каждому элементу матрицы (ну, не к каждому, но от 1 до n-1 "шаблон" 3х3. И считай сколько единичек окружает один элемент.
Аноним 06/11/14 Чтв 00:33:28 #107 №402569 
>>402551
В общем, кроме как for i in m: for j in n: ... (проверять каждую клетку) по-другому не сделать? Я надеялся на какой-нибудь векторизированный способ, или там операцию какую с матрицей произвести.
Аноним 06/11/14 Чтв 02:02:48 #108 №402621 
Правильно ли я понимаю, что -verbose режим вручную вписан в код? То есть, это не какой-то магический автоprint всего происходящего, а банальное if '-verbose' in sys.argv: print('...')? Ну там функцию printverbose написать и т.д., это уже детали.
Аноним 06/11/14 Чтв 09:43:12 #109 №402668 
>>402375
numpy можно юзать? там слайсинг в 9000 раз удобнее
Аноним 06/11/14 Чтв 10:00:32 #110 №402671 
>>402668
Что хочешь можно юзать, я же для себя. А что у тебя за идея с нами?
Аноним 07/11/14 Птн 03:01:03 #111 №402943 
>методы класса и объекта в одной области видимости
>при переопределении класса объект пользуется его старой копией
Ну и говно же этот ваш пистон.
Аноним 07/11/14 Птн 20:54:43 #112 №403227 
>>402943
> >при переопределении класса
Так правда делают?
Аноним 08/11/14 Суб 02:37:14 #113 №403309 
>>403227
Во время разработки, например.
Аноним 08/11/14 Суб 03:17:36 #114 №403314 
C++ кун врывается в тред.
Думаю подучить питон, чтобы писать на нем в тандеме с крестами.
Это хорошая идея или с крестами не очень? Слышал про jython, но он под джяву, а с сython как-то глухо
Аноним 08/11/14 Суб 04:53:50 #115 №403320 
>>403314
>в тандеме с крестами
С c++ оче плохо взаимодействовать, т.к. он не имеет стандартизированного ABI, из-за чего приходится делать вручную или генерировать автоматически сишные обертки.
Аноним 08/11/14 Суб 05:00:25 #116 №403322 
>>403320
Т.е. с чистой сишкой?
Блядь, придется отказаться от затеи.
Аноним 08/11/14 Суб 05:13:09 #117 №403323 
>>403322
Зачем тебе вообще кресты? Так много узких мест?
Аноним 08/11/14 Суб 05:15:29 #118 №403324 
>>403323
Нет, просто я учащийся. А в связке - так это чтобы кресты не забывать.
Просто немношк с недоверием к питону отношусь. Скрипты же..
Аноним 08/11/14 Суб 05:28:09 #119 №403325 
>>403324
Для чего-то небольшого не вижу смысла два языка использовать, но если очень хочется, то swig (http://www.swig.org/ ) тебе в помощь
Аноним 08/11/14 Суб 05:30:14 #120 №403326 
>>403325
Да, я понял, что затея плохая.
Ладно, пойду дальше кресты учить
Аноним 08/11/14 Суб 05:59:48 #121 №403327 
>>403326
> пойду дальше кресты учить
Лол. Вот это действительно плохая затея.
Аноним 08/11/14 Суб 07:47:22 #122 №403329 
>>402551
>прикладывай к каждому элементу матрицы "шаблон" 3х3.
А каким образом это сделать-то? например, маленькая_матрица in большая_матрица False всегда выдаст, numpy.where тоже []. Пока что у меня просто для каждого элемента 4 if'а (через try, чтобы и крайние проверяло), после которых c+=1.
Аноним 08/11/14 Суб 10:03:32 #123 №403341 
Какая из оберток к SDL наиболее удобная в этом вашем петоне?
Аноним 09/11/14 Вск 02:47:02 #124 №403672 
Реально ли найти работу на питону с опытом менее года?
sageАноним 09/11/14 Вск 06:02:01 #125 №403695 
>>400291
http://youtu.be/vHeeXI84GIA
Почему все питонщики такое махровое быдло?
Аноним 09/11/14 Вск 06:26:52 #126 №403697 
>>403695
Низкий порог входа.
Аноним 10/11/14 Пнд 00:32:30 #127 №404101 
>>403697
Это значит, что нет пути? Питон не нужен?
Аноним 10/11/14 Пнд 07:53:36 #128 №404194 
>>404101
>Это значит, что нет пути?
Это значит, что порог входа низкий.
>Питон не нужен?
Если есть из чего выбирать, то да, не нужен.
Аноним 10/11/14 Пнд 12:30:00 #129 №404273 
14156118006170.jpg
>>403695
СИ ДВА ПЛЮС
sageАноним 10/11/14 Пнд 13:49:53 #130 №404292 
>>402621
import os, argparse

defaults = {'color': 'red', 'user': 'guest'}

parser = argparse.ArgumentParser()
parser.add_argument('-u', '--user')
parser.add_argument('-c', '--color')
namespace = parser.parse_args()
command_line_args = {k:v for k, v in vars(namespace).items() if v}

combined = ChainMap(command_line_args, os.environ, defaults)
print(combined['color'])
print(combined['user'])
Аноним 10/11/14 Пнд 16:56:15 #131 №404351 
>>404292
Я смотрю, у тебя тут ПОРТЯНОЧКИ КОДА
Аноним 10/11/14 Пнд 18:17:39 #132 №404421 
>>404292
docoptt
Аноним 10/11/14 Пнд 18:52:03 #133 №404442 
>>404421
>The option parser is generated based on the docstring above that is passed to docopt function.
ХУИТА
Аноним 10/11/14 Пнд 18:55:36 #134 №404447 
скажите, пожалуйста, как в строке заменить один символ и перед другим символом поставить пробел?
Аноним 10/11/14 Пнд 19:27:58 #135 №404469 
>>404447
http://ideone.com/PrSRdi
Я бы так сделал.
Аноним 10/11/14 Пнд 19:58:11 #136 №404491 
Может кому-то поможет.
Аноним 10/11/14 Пнд 23:21:03 #137 №404556 
на хабре дичайший шлак а не статьи по питону, ничего не понятно было когда читал, нашел намного лучше источники
Аноним 10/11/14 Пнд 23:27:30 #138 №404559 
>>404556
Ну так поделись, что-же ты.
Аноним 11/11/14 Втр 09:18:45 #139 №404621 
>>404442
Обоснуй.
Аноним 11/11/14 Втр 20:32:06 #140 №404836 
Вопрос по дженге.
Когда я делаю проект на своем компе, то использую джангосервер.
Но когда я деплою его куда-то, то там уже нормальный сервер стоит, например Apache.
Значит, это сервер занимается отдачей статических файлов?
А базу данных тоже надо настраивать на работу с сервером?
Где вообще почитать про деплой приложения на джанге? Какие настройки использовать?
Аноним 11/11/14 Втр 20:58:04 #141 №404851 
>>404292
Чому-то у меня ChainMap не работает. В любом случае, каоке это отношение к вопросу имеет?
Аноним 11/11/14 Втр 21:38:15 #142 №404876 
Есть два стула: остаться тип фулл-стек разработчиком (джанга 2 года + ангуляр 1 год), можно пойти на вакансию с фронтендом онли.
С одной стороны, я круче прокачаю фронтенд и стану более лучшим фуллстек девелопером потом. Кроме того, есть впечатление что фронт сейчас перспективнее.
С другой стороны, проебу экспу с бекендом.
Как быть?
Аноним 11/11/14 Втр 21:53:12 #143 №404886 
>>404876
По-моему опыт в фронтенде более выгоден, чем опыт в джанге.
Аноним 11/11/14 Втр 22:03:51 #144 №404895 
>>404886
Разверни мысль если не сложно.
Аноним 11/11/14 Втр 22:34:00 #145 №404903 
>>404895
Бекендов много (и джанга далеко не самый популярный из них), а фронтенд (читай javascript и браузер) один.

Либо, если бекенд тебе ближе и уже есть целых два года опыта – имеет смысл перекатиться на РОБУСТ СКЕЛЕЙБЛ ИНТЕРПРАЙЗ стек уровня go/slala или на чем там щас модно хайлоад писать.
Аноним 11/11/14 Втр 23:01:57 #146 №404912 
>>404903
То есть ты предлагаешь пилить всякие красивые эффектики, анимацию, чтобы все так "вау" на убогом джаваскрипте в треде про питон? В добавок, ты это отвечаешь на пост, где вообще не было вопроса про выбор бэкенда/фронтенда. Зачем так жить?
Аноним 12/11/14 Срд 00:01:55 #147 №404930 
>>404912
>не было вопроса про выбор бэкенда/фронтенда
Был вопрос про выбор фуллстак/фронтенд, мой ответ вполне релейтед.

>ты предлагаешь пилить всякие красивые эффектики
С приходом javascript mvc большая часть логики приложения находится у клиента. А бекенд опыт уровня двух лет джанги как раз позволит максимально эффективно пользоваться инструментом.

>на убогом джаваскрипте
Okay.
Аноним 12/11/14 Срд 00:03:42 #148 №404931 
>>404930
Ох чувак, прости. Я вообще не посмотрел откуда дискуссия пошла и спутал.
Аноним 12/11/14 Срд 00:25:28 #149 №404941 
Всем привет!
Как через python запостить на двач?

С вакабой все было понятно, а как на макабе? Поглядев Chrome Console я нашел https://2ch.hk/posting.fcgi?json=1 и переданные данные, но не могу понять, как они передаются? Как их передать через cURL или еще как-то?
Аноним 12/11/14 Срд 01:09:13 #150 №404947 
>>404903
Спасибо.
Не думал что два года это такой большой опыт.
Аноним 12/11/14 Срд 13:18:24 #151 №405018 
>>404947
При условии что ты эти два года не в настольный теннис играл, конечно.
Аноним 12/11/14 Срд 15:22:31 #152 №405062 
pyodbc помер? Не могу его найти в pip, а без него нельзя использовать sqlalchemy для коннекта с MSSQL.
Аноним 13/11/14 Чтв 02:24:37 #153 №405431 
>>404836
Статика отдается сервером(апач, нгинкс). База нужна, в сеттингс.пу ты же настраиваешь коннект к твоей бд.
Тут вот на примере gunicorn + nginx рассказывается как деплоить проект.
https://www.digitalocean.com/community/tutorials/how-to-deploy-a-local-django-app-to-a-vps
Аноним 13/11/14 Чтв 10:58:08 #154 №405507 
>>405431
Спасибо.
Аноним 13/11/14 Чтв 22:37:56 #155 №405712 
Меня тут спрашивают насчет русскоязычных курсов по питону. Заморские я знаю, а вот наши...
Аноним 13/11/14 Чтв 22:43:24 #156 №405716 
>>405712
Изучай заморские и не выёбывайся.
Аноним 13/11/14 Чтв 23:44:11 #157 №405732 
Привет, анон. Есть у меня одно задание, чувствую, что близок, но решить не могу. Что ввести, что запустилась функция bad я понял, а вот дальше (вернее начало, флаг вводится в начале), я хз. Помоги, анон


base64 as printf
import random
import math
import time

def Captcha():
j1 = random.randrange(25)
J1 = random.randrange(25)
print("J1 = ",j1,"| j1 = ",J1+2)
cap = j1 J1+2
return cap

def bad(ml,m1):
mI = [4624, 10817, 10002, 10204, 9413, 14166, 9807, 11032, 15384, 9225, 11459, 10620, 1948, 11677, 9230, 11464, 2320, 7761, 15394, 10628, 12789, 13017, 10022, 13947, 13480]
if (chr(len(ml)) > chr(len(mI))):
print(printf.b64decode(b'RmxhZzogdGhpcyBpcyB2ZXJ5LXZlcnkgbG9uZyB3b3JkLCBhcyB5b3Ugc2Vl'))
return
for mi in range(len(mI)):
mI[mi] = (mI[mi]+mi) >> 0
for mi in range(len(ml)):
if ((pow(ord(ml[mi])^mi,2)+2
mi) << 0) != mI[mi]:
ss = input('>> ')
if int(ss) == m1:
print("Ok. Your are 'win'!")
print(chr(70)+chr(108)+chr(97)+chr(103)+chr(58)+' '+ml)
return
else:
return
time.sleep(6)
print(printf.b64decode(b'RmxhZzo='))
print(ml)
return

def Start():
SecretKey = random.randrange(1,30)
print(SecretKey)
MegaLongInt = Captcha()
flag = input('>> ')
if (int(input(">> ")) != MegaLongInt):
print("Flag is \"You are 'winner'!\"")
else:
bad(flag,SecretKey)
return

if True:
Start()
Аноним 14/11/14 Птн 00:02:52 #158 №405733 
2 дня в питоне. Хуями не закидывайте.
S = {'xui': 'sosesh', 'xuy': {'ololo': 'privet'}, 'rnd': ['1', '2']}
Есть возможность добавить/удалить/изменить пару ключ:значение в ключ xuy?
Аноним 14/11/14 Птн 00:40:13 #159 №405743 
Подскажите нормальную IDE с нормальным автодополнением кода. В pycharm поставил pygame и он нихрена не дополняет: пишет всякую херь вроде модулес миссинг, анресолвед референс, однако, код все равно работает.
Аноним 14/11/14 Птн 01:09:38 #160 №405760 
>>405716
Да это не мне.
Аноним 14/11/14 Птн 02:39:35 #161 №405772 
>>405733
> S = {'xui': 'sosesh', 'xuy': {'ololo': 'privet'}, 'rnd': ['1', '2']}
>>> s['xuy']['ololo']='123'
>>> s
{'rnd': ['1', '2'], 'xui': 'sosesh', 'xuy': {'ololo': '123'}}
>>> s['xuy']['foo']='bar'
>>> s
{'rnd': ['1', '2'], 'xui': 'sosesh', 'xuy': {'ololo': '123', 'foo': 'bar'}}
Аноним 14/11/14 Птн 09:48:45 #162 №405802 
>>405743
emacs + elpy + jedi или sublime + jedi
Аноним 14/11/14 Птн 14:01:50 #163 №405876 
>>405772
Спасибо, няша
А метод append() подходит только для списка? В словари им добавлять нельзя?
Аноним 14/11/14 Птн 16:41:57 #164 №405943 
>>405876
Да. Нет.
Аноним 14/11/14 Птн 20:32:06 #165 №406037 
Как в медленном работать с байтиками напрямую? Чтобы они были в двоичном виде. То есть мне надо открыть файл, его закодировать примитивным шифрованием и сохранить. А потом обратно. Вот и я хочу, например, каждый бит просто ксорить.
Аноним 14/11/14 Птн 21:04:22 #166 №406048 
>>406037
bytearray
Аноним 14/11/14 Птн 21:39:14 #167 №406053 
>>406048
Спасибо, то что надо.
Аноним 14/11/14 Птн 21:48:09 #168 №406055 
>>406053
Сам загуглить не мог что ли?
Аноним 14/11/14 Птн 21:49:05 #169 №406056 
>>406055
Зачем, если здесь всегда готовы помочь?
Аноним 14/11/14 Птн 22:02:17 #170 №406059 
>>406056
Сэкономил бы время.
Аноним 15/11/14 Суб 03:10:54 #171 №406146 
>>406055
Ну я иногда не совсем представляю что именно спрашивать у гугла. Python byte operations? Иногда и правда легче тут спросить.
Аноним 15/11/14 Суб 16:25:04 #172 №406263 
Решил попробовать vim + jedi. Пишу "modulename.", олл гуд, всплывает список содержимого модуля. Но пробую "some = 1; v = some +1", и в присваивании v some не дополняется и приходится писать руками. Так и должно быть?
Аноним 15/11/14 Суб 18:15:10 #173 №406305 
>>406263
Так и должно быть.
Аноним 15/11/14 Суб 18:43:03 #174 №406314 
>>406305
Хуево. А это можно поправить? Я нюфак и не могу толково сформулировать гугол-запрос.
Аноним 15/11/14 Суб 21:13:01 #175 №406405 
14160751816110.png
>>406263
>Так и должно быть?
Нет. Но ты же вимер...
Аноним 15/11/14 Суб 21:28:26 #176 №406413 
Блядь, нахуя вам пиздон? По нему вакансий 0.
Аноним 15/11/14 Суб 21:30:41 #177 №406414 
>>406413
Тут свободные люди, художники и артисты, программирующие ради искуства, а не рабы системы, вкалывающие на дяду в тесном и душном офисе.
Аноним 15/11/14 Суб 21:31:37 #178 №406415 
>>406414
Ладно, пойди борща наебни, джангодрочер
Аноним 15/11/14 Суб 21:36:15 #179 №406419 
>>406415
>борща наебни
>21:31:37
Ты ебанулся? Кто на ужин борщ ест?
Аноним 15/11/14 Суб 21:36:46 #180 №406421 
>>406419
Тот кто на пиздоне пишет.
Аноним 15/11/14 Суб 22:02:53 #181 №406440 
>>406413
А по чему не 0?
Аноним 15/11/14 Суб 22:40:01 #182 №406455 
>>406405
Что за редактор?
Аноним 15/11/14 Суб 22:55:21 #183 №406465 
>>406455
эмакс
Аноним 15/11/14 Суб 22:56:15 #184 №406469 
>>406455
емакс + elpy + jedi
Аноним 16/11/14 Вск 01:45:54 #185 №406561 
Быстренький вопрос.
Как в джанге просто отправить куки и потом прочитать когда надо? Мне чисто для учебного проекта laba1, поэтому нужен самый простой спрособ.
sageАноним 16/11/14 Вск 07:06:56 #186 №406580 
>>406561
Чиста открываешь доку и чиста ищешь раздел про куки.
Аноним 16/11/14 Вск 12:24:36 #187 №406629 
>>406561
google django send cookie
, mrazota ti tupaya
Аноним 16/11/14 Вск 12:27:34 #188 №406631 
>>406413
python Found 1 114 vacancies
java Found 2 728 vacancies
c++ Found 1 696 vacancies
php Found 2 238 vacancies
ruby Found 432 vacancies
Аноним 16/11/14 Вск 12:29:57 #189 №406634 
>>405876
Можешь добавить в словарь свой метод append(), который добавляет элементы как тебе надо.
Аноним 16/11/14 Вск 12:51:09 #190 №406639 
>>406631
И из какого манямирка эта инфа
напоминаю, что 1114<1696<2238<2728
Аноним 16/11/14 Вск 12:56:04 #191 №406642 
>>406639
Напомнаю, что 1114 >> 0
Аноним 16/11/14 Вск 13:31:00 #192 №406661 
>>406634
как это реализовать? В смысле, как добавить свой метод для словаря?
Аноним 16/11/14 Вск 15:05:49 #193 №406704 
>>406639
>>406415
>>406413
>лол эпичный траль) пиздон)) шутки про борщ
Детектирую первокура который таким странным образом пытается приобщиться.
Аноним 16/11/14 Вск 18:11:44 #194 №406786 
14161507045180.png
Надеюсь, умирать вы будете так же медленно, как работает ваш говнокод.
Двадцать! Двадцать ебаных минут расчитывало зависимости для обновления трех, блять, трех, сука ебаных пакетов!
Аноним 16/11/14 Вск 18:41:39 #195 №406794 
>>400291
Устанавливаю pycuda, в процессе лезут какие-то ошибки, но вроде как встает. Запускаю тесты и получаю: "ImportError: /usr/local/lib/python2.7/dist-packages/pycuda-2014.1-py2.7-linux-x86_64.egg/pycuda/_driver.so: undefined symbol: cuMemHostRegister_v2". Объясните, как это поправить? Гугол молчит.
Аноним 16/11/14 Вск 19:13:25 #196 №406807 
>>406639
hh.ru без фильтров.

Аноним 16/11/14 Вск 20:16:28 #197 №406842 
>>406661

>>> class dict_(dict):
def append(self,args):
for arg in args:
if arg and type(arg)==dict:
for i in arg.iteritems():
key = i[0]
value = i[1]
self[key] = value
else:
raise Exception("Not a dictionary.")

>>> x = dict_({4:3})
>>> x.append(5)

Traceback (most recent call last):
File "<pyshell#136>", line 1, in <module>
x.append(5)
File "<pyshell#134>", line 10, in append
raise Exception("Not a dictionary.")
Exception: Not a dictionary.
>>> x.append({11:11},{12:12})
>>> x
{12: 12, 11: 11, 4: 3}
>>> x.append({433:23,223:12})
>>> x
{12: 12, 11: 11, 4: 3, 223: 12, 433: 23}
Аноним 16/11/14 Вск 20:18:13 #198 №406845 
>>406842
Блядь, короче: http://pastebin.com/zaZABRfc
Аноним 16/11/14 Вск 23:34:16 #199 №406923 
try:
a = float(input())
print(a)
except:
print("err")

При вводе 0.1+0.1+0.1-0.3
выводит 5.55111512313e-17

Объясните недопрогеру, как решить проблему
Аноним 16/11/14 Вск 23:44:55 #200 №406924 
>>406923
http://stackoverflow.com/questions/26411692/python-float-value-addition-and-substraction-give-wrong-value
Аноним 17/11/14 Пнд 00:42:53 #201 №406944 
Анон, можешь подкинуть ссылки на туториалы по реализации всякого разного линала на питоне?
Аноним 17/11/14 Пнд 02:56:50 #202 №406994 
Пытаюсь скачивать файлы по списку из аргумента, вот только не работает: http://pastebin.com/aUtbyA6d
Где накосячил?

Выдает:
user@peka:~/Documents/PythonProjects/downloader$ ./downloader.py urllist.txt
Traceback (most recent call last):
File "./downloader.py", line 12, in <module>
data = urllib2.urlopen(url)
File "/usr/lib/python2.7/urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 404, in open
response = self._open(req, data)
File "/usr/lib/python2.7/urllib2.py", line 422, in _open
'_open', req)
File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(args)
File "/usr/lib/python2.7/urllib2.py", line 1214, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib/python2.7/urllib2.py", line 1187, in do_open
r = h.getresponse(buffering=True)
File "/usr/lib/python2.7/httplib.py", line 1045, in getresponse
response.begin()
File "/usr/lib/python2.7/httplib.py", line 409, in begin
version, status, reason = self._read_status()
File "/usr/lib/python2.7/httplib.py", line 373, in _read_status
raise BadStatusLine(line)
httplib.BadStatusLine: ''
Аноним 17/11/14 Пнд 03:01:13 #203 №406996 
>>406994
там еще i += 1 должно быть в цикле, но и без этого должен был загрузиться хоть один файл.
Аноним 17/11/14 Пнд 03:32:07 #204 №407001 
>>406994
>new.write(data)
new.write(data.read())

Примерно как-то так
http://ideone.com/mQSlGv
Аноним 17/11/14 Пнд 03:32:25 #205 №407002 
А как уменьшить размер скомпилированной проги? Однострочный print("hello, world") компилируется в 17.7 мегабайт. Впрочем, и весьма значительный код в те же 17.7 мегабайт.
Ладно, 9.5 мегабайт там python framework занимает, но остальное-то? На 8 мегабайт каких-то библиотек зачем-то напихано, хотя они вовсе не используются.
Как у людей получается 1-5 мегабайтные приложения вообще с ГУИ делать? Весь секрет в использовании уже имеющихся на компьютере пользователя библиотек и модулей?
комплию с py2app
Аноним 17/11/14 Пнд 03:36:56 #206 №407003 
>>406994
>>407001
Ошибка
>httplib.BadStatusLine
>A subclass of HTTPException. Raised if a server responds with a HTTP status code that we don’t understand.
может с ссылками в файле что-то не так
Аноним 17/11/14 Пнд 10:15:28 #207 №407032 
>>407002
C pyqt вообще по 70 получается. С какого вдруг это тебя так волнует?
Аноним 17/11/14 Пнд 11:14:16 #208 №407050 
>>407002
Там ничего не компилируется же на самом деле.
В ру2ехе простая программа занимает порядка 6 мегабайт.
Аноним 17/11/14 Пнд 11:16:27 #209 №407051 
>>406996
> i += 1 должно быть в цикле
enumerator
Значение знаешь?
Аноним 17/11/14 Пнд 11:29:11 #210 №407055 
>>407002
Байтоебство в питоне это крайне ебанутая затея. В экзешнике нихуя не компилируется кроме библиотек там находятся библиотеки и интерпретатор + ддлки. Вот твои мегабайты.


Самое действенное. Сжать библиотеки upx’ом. Консольное приложение. Работает элементарно. На вход передается файл, оно его сжимает.

Удалить unicodedata.pyd, bz2.pyd, select.pyd, w9xpopen.exe. Веса немного, но, как минимум, в проекте станет меньше файлов

Если в setup.py указать опцию optimize:2, то модули будут компилироваться в .pyo (python optimized code), а не в .pyc (python compiler script). Это не дает большого эффекта.
И наконец, можно подчистить library.zip от неиспользованных модулей и кодировок. Только аккуратно.
Аноним 17/11/14 Пнд 17:55:12 #211 №407159 
>>407001>>407003
Спасибо, пойду разбираться.
Аноним 17/11/14 Пнд 19:54:56 #212 №407215 
Поясните за Learn Python Hard Way.
Аноним 17/11/14 Пнд 20:04:29 #213 №407226 
>>407215
Говно.
Аноним 17/11/14 Пнд 20:14:38 #214 №407236 
>>407226
Почему?
Аноним 17/11/14 Пнд 20:18:12 #215 №407239 
>>407236
Когда я вижу субстанцию выглядющую как говно и пахнущую как говно, я называю её говном.
Аноним 17/11/14 Пнд 21:34:54 #216 №407277 
>>407239
Да у вас же утиная типизация!
Аноним 17/11/14 Пнд 22:01:44 #217 №407289 
Такой вопрос, значит.
Предположим есть гуи приложение. И частенько так бывает, что поведение элемента меняется после первого нажатия. Например, клавиша добавить в избранное превращается в удалить из избранного. Как такое реализуется? Например вот в фреймворке kivy нажатие вызывает метод on_touch_down. Если скажем, я буду использовать некую переменную, в которой будет адрес метода, который надо вызвать из on_touch_down. Какой нибудь __touch_handler. И я каждый раз буду присваивать ему ссылку на новый метод. Так делают? Или есть другие годные практики?
Аноним 17/11/14 Пнд 23:40:24 #218 №407370 
>>407289
> Или есть другие годные практики?
Можно попробовать реализовать (или найти) одноразовые события. Либо, в случае с добавлением в избранное, метод on_touch_down может вызывать, в свою очередь, обработчики из следующей структуры: https://docs.python.org/3/library/itertools.html#itertools.cycle
Аноним 17/11/14 Пнд 23:50:10 #219 №407381 
>>407370
Спасибо, посмотрю.
Аноним 18/11/14 Втр 03:10:22 #220 №407422 
sosoni pomogite pls
13. Проверьте выполнения выражения set (sent3) <set (text1). Измените аргументы функции. Результаты объясните.
26. В строке "Love me tender, love me sweet, never let me go." Написать программу для нахождения: Количества употребление слова "me"
Аноним 18/11/14 Втр 07:49:52 #221 №407430 
Есть .py файл, в котором есть следующее создаётся класс:

arg1 = "a"
arg2 = "b"
arg3 = "c"

class Class(...):
__ def __init__(self, arg1, arg2, arg3):
____ print(arg1)
__ def method1(self):
____ print(arg2)
____ print(arg3)

Этот класс из этого файла импортируется в дргом и там создаётся объект этого класса с другими параметрами, а не теми, что указаны в этом файле.
Если сделать
obj = Class("A", "B", "C")
То результат будет:
"A"
"b"
"c"

Почему в __init__ он правильно воспринимает аргументы, а в методах обращается именно к тем, что были заложены внутри .py файла? (Разумеется, если их оттуда удалить, то он попропусту будет ругаться на undefined переменную.) Получается, мне нужно все аргументы в self.arg в ините переводить?
Аноним 18/11/14 Втр 07:57:35 #222 №407431 
>>407430
там в __init__ нужно self.method1() добавить, чтобы он при создании вызывался, разумеется.

Потестировал, оно и без всяких импортирований именно так работает. Впрочем, можно вызывать self.method1(arg1, arg2, arg3), тогда всё работает.

Вся проблем просто в том, что в моём случае method1 это event_handler, так что никакие аргументы я в него передать не могу. В моём случае только self.arg1 = arg1 можно сделать и далее их использовать в методах? Или можно что-то ещё сделать?
Аноним 18/11/14 Втр 11:38:12 #223 №407461 
>>407422
http://ideone.com/bMaBh2
Аноним 18/11/14 Втр 11:43:13 #224 №407462 
>>407461
much love <3
Аноним 18/11/14 Втр 12:03:03 #225 №407465 
>>407430
Тут дело в области видимости. Самое простое - сделать все в self.arg1 = arg1
Аноним 18/11/14 Втр 12:08:09 #226 №407466 
>>407430
Ну разве ты не видишь, что в init ты передаешь все три аргумента, а в method1 ни одного, поэтому он за ними обращается в global scope.
Аноним 18/11/14 Втр 13:45:44 #227 №407499 
>>407466>>407465
Я уже примерно догадался, да. __init__, получается, ничем особо от других методов не отличается, кроме его автоматического выполнения при инициализации класса? Просто мне (почему-то) казалось, что эти переданные в класс аргументы им "запоминаются", то есть передаются в том же self, и в любом месте могут быть использованы.
Аноним 18/11/14 Втр 18:03:22 #228 №407567 
>>407499
Они там запоминаются если ты их там сохраняешь.
Аноним 18/11/14 Втр 18:23:20 #229 №407573 
14163242005140.png
Что он от меня требует?
Аноним 18/11/14 Втр 18:30:26 #230 №407575 
>>407573
запятую
Аноним 19/11/14 Срд 02:54:48 #231 №407823 
В книге Learn Python The Hard Way есть упражнение, в котором нужно исправить ошибки в говнокоде.
Код тут: http://learnpythonthehardway.org/book/exercise26.txt
Я всё исправил (http://ideone.com/mnYWjR), всё работает, кроме одного: так получается, что этот файл импортирует сам себя, и из-за этого запускается по нескольку раз: вручную, и проходя строчу import.
Я выполнил упражнение, или есть способ запускать один раз?
Аноним 19/11/14 Срд 02:55:28 #232 №407824 
>>407823
Конечно же http://ideone.com/mnYWjR
Аноним 19/11/14 Срд 03:04:38 #233 №407825 
>>407823
Ступил. Правильно было просто удалить "ex25." перед методами.
Аноним 19/11/14 Срд 16:32:44 #234 №407949 
Вопросик такой, если серии "нахуй оно тебе надо".
Есть хоть сколько-нибудь значимая разница в порядке условий в if/else? Допустим, переменная принимает значения от 0 до 100, равноверятно, и написав
if foo>95: print(foo)
else: pass

Делаю ли я плохо? Лучше ли будет написать
if foo<96: pass
else: print(foo)

Потому что гораздо чаще foo будет меньше 96? Короче, стоит ли расставлять условия (особенно если несколько elif'ов) в порядке снижения частоты их выполнения? Если их там тысячи таких мест будут во всей программе, например.
Аноним 19/11/14 Срд 18:43:25 #235 №407975 
>>407949
Это тебе надо смотреть байткод питона. Сколько операций производят те или иные действия.
Но если смотреть ассемблер, то сначала просто сравнивается два числа и выставляются соответствующие флаги, а потом в зависимости от этих флагов производится переход. То есть количество операций одинаково.
Аноним 19/11/14 Срд 20:23:11 #236 №408010 
Код
______________________________________________
for i in range(len(t)):
x = index['threads'][0]['posts']['comment']
a = index['threads'][0]['posts']['name']
cur.execute("insert into po values (%s, %s) %(x,a)")
cur.commit()
______________________________________________

Traceback (most recent call last):
File "android.py", line 18, in <module>
cur.execute("insert into po values (%s, %s) %(x,a)")
sqlite3.OperationalError: near "%": syntax error


Анончики, что я делаю не правильно?
Аноним 19/11/14 Срд 20:28:31 #237 №408012 
>>408010
Уже нашел
>cur.execute("INSERT INTO po VALUES (?,?)" (a,x))
Но теперь
>Traceback (most recent call last):
> File "android.py", line 18, in <module>
> cur.execute("INSERT INTO po VALUES (?,?)" (str(x),str(a)))
>TypeError: 'str' object is not callable
Аноним 19/11/14 Срд 20:38:52 #238 №408015 
>>408012
А если так
> cur.execute("INSERT INTO po VALUES (?,?)" %(message,auth))

то
>TypeError: not all arguments converted during string formatting
Аноним 19/11/14 Срд 21:33:51 #239 №408044 
>>408010
>>408012
>>408015
Другой синтаксис у форматирования строк в питоне.
Аноним 19/11/14 Срд 23:13:43 #240 №408084 
>>408044
Угу, уже понял.
>cur.execute("INSERT INTO post_table (msg, author) VALUES ('%s', '%s')" %(message, auth))
Аноним 20/11/14 Чтв 13:04:06 #241 №408242 
Мне вот интересно. Теоретически, можно на питоне реализовать все что угодно. Например, я хочу сделать игру на kivy. Но смогу ли я нормально реализовать освещение? Что-то я сомневаюсь. Есть ли там техническая возможность изменять только часть спрайта? Вообще, что такое свет в 2д играх? Шейдеры? Подбор нужного цвета каждого пикселя?
Аноним 20/11/14 Чтв 17:16:13 #242 №408283 
>>408242
>Шейдеры
Воксели.
Аноним 20/11/14 Чтв 19:02:25 #243 №408325 
>>408283
Модная хипстерская игрушка? 2d воксели?
Аноним 20/11/14 Чтв 23:13:05 #244 №408413 
>>408325
> 2d воксели?
Да, называются пиксели.
Аноним 21/11/14 Птн 01:44:23 #245 №408484 
>>408084
Так неправильно делать.
cur.execute("INSERT INTO post_table (msg, author) VALUES ('?', '?')", (message, auth))
Надо
Аноним 21/11/14 Птн 16:15:21 #246 №408656 
14165757212170.png
>>400291
Конструкция elif в блоке except, который в цикле, не работает?

for key,value in hash.items():
try:
>действие
except:
elif key = 1:
print "Действие не взлетело.Запускаю процесс 1"
elif key == 2:
print "Действие не взлетело.Запускаю процесс 2"
elif key == 3:
print "Действие не взлетело.Запускаю процесс 3"
Аноним 21/11/14 Птн 16:31:02 #247 №408658 
>>408656
А, конструкция IF ELIF ELSE же. Понял. Всё работает.
if key == 1:
print "Действие не взлетело.Запускаю процесс 1"
elif key == 2:
print "Действие не взлетело.Запускаю процесс 2"
elif key == 3:
print "Действие не взлетело.Запускаю процесс 3"
Аноним 21/11/14 Птн 17:11:11 #248 №408665 
>>400291
Как заставить vim воспринимать flask.ext? Или имакс, поебать в общем-то.
Аноним 22/11/14 Суб 01:09:13 #249 №408762 
Раз тут упомянулись 2д игры, задам вопрос по поводу вывода изображения. А как его "по-настоящему" делают? Каждый кадр всегда прорисовываются все элементы заново? Например, если мне нужно вывести фоновую картинку и клетки поля, а потом только поверх них что-то рисовать, нормально ли, что у меня это всё стоит в on_draw(), то есть, он каждую секунду всё это прорисовывает по много раз? Или оно и так, для вывода на экран, каждый кадр должно прорисовываться/сообщать гпу обо всём? Просто мне как-то кажется более разумным один раз при старте нарисовать это всё, а потом не трогать. Я просто в процессе работы видео-драйверов не смыслю, может оно в принципе только так и работает.
Если я, например, прорисовку изображения вынесу в отдельную функцию и убери все очистки экрана и прорисовку фона выведу в отедльную функция (чтобы вызвать один раз), то оно при начатии рисуется и потом "пропадает", оставаясь только в виде артефактов сзади, а прорисовка движущихся объектов оставляет за собой как бы след, который постепенно (в течение чуть менее секунды) исчезает.

В общем, кто что может интересного рассказать/ссылку кинуть о работе с open gl?
Аноним 22/11/14 Суб 01:28:02 #250 №408764 
>>408762
А ещё сопутствующий вопрос:
Почему-то частота вызова функции с некоторым интервалом времени (в доках написано, что секунды указываются) зависит от фпс. Почему? У компьютера нет как таковых часов, что ли? Я знаю, что по крайней мере один из багов в халфе первой был выставление фпс в >9000 и прижатие одной дверью, которая случайно лечила хп, а не отнимала, вело к добавлению тысяч хп в секунду. В диабле тоже все длительности яда и прочего были завязаны на кадры. Почему так?
Аноним 22/11/14 Суб 03:34:45 #251 №408775 
14166164856340.png
Решил написать очередную сохранялку картинок/webm:
http://ideone.com/s5X7ZY

Все работает, только нужен Grab и модуль какой-то который с грабом в комплекте для чтения css селекторов. Кто допишет чтобы создавалась папка с названием треда и все картинки качались туда - молодец. Ну и от Grab можно избавится А то я уже хочу спать.
Аноним 22/11/14 Суб 03:51:22 #252 №408780 
>>408775
Не хочу огорчать, но в кукле уже три года есть кнопка "сохранить картинки".
Аноним 22/11/14 Суб 05:14:16 #253 №408785 
>>408775
Дали им апи, блядь, бери и качай. Нет хочу говно жрать, хочу хтмл парсить.
Аноним 22/11/14 Суб 11:29:41 #254 №408810 
>>408785
бля, внатуре, есть же апи. Спасибо, я забыл.
Аноним 22/11/14 Суб 13:39:48 #255 №408830 
>>408764
http://habrahabr.ru/post/136878/
Аноним 22/11/14 Суб 14:18:32 #256 №408836 
Официальный тутор по джанге требует понимания основ веб разработки и mvc. А есть ли годные туторы для детей-аутистов, что включали бы в себя все в комплексе? А то непонятно, как учить, с какой стороны подойти. Сесть и начать фигачить код, как это обычно делается, не выходит.
Аноним 22/11/14 Суб 21:58:58 #257 №408966 
>>400291
Собираюсь изучить Питон для моддинга одной игры. Реально все шесть книг нужно прочитать? Втом списке они расположены в порядке освоения?
Аноним 22/11/14 Суб 22:02:51 #258 №408968 
>>408966
Читай Бизли
Аноним 22/11/14 Суб 23:03:36 #259 №408997 
>>408968
>>408967
Начал читать Бизли и ни хуя не понимаю. Опыта в прогреммировании нет. Как научиться кодить понемногу? Каким-нибудь базовым командам и функциям.
Аноним 22/11/14 Суб 23:13:40 #260 №409003 
точнее я вообще никак не соприкасался с программированием раньше
Аноним 23/11/14 Вск 01:52:57 #261 №409070 
>>409003
>>408997
SICP читай. В нем самые основы рассматриваются.
Аноним 23/11/14 Вск 02:12:52 #262 №409079 
https://stepic.org/67

Почему ещё не было?
Аноним 23/11/14 Вск 11:38:29 #263 №409142 
Посоны, есть такая штука:
http://ideone.com/hBglXd

Как сделать так, чтобы лямбда была в ините, а не в аргументах при создании объекта? То есть, чтобы создавая объект через c = Class(x+5), поведение было таким же? (Т.е. присвоение self.y не значения, а функции)
Аноним 23/11/14 Вск 11:44:12 #264 №409145 
>>409142
Или это в принципе невозможно, потому что (x+5) просчитывается именно в момент передачи его в качестве аргумента, то есть на момент self.y = arg, arg равен результату и никакого понятия о том, что передавалась функция, а не число, не имеет?
Аноним 23/11/14 Вск 12:59:58 #265 №409173 
>>408836
А ты повтори все подряд за туториалом. Он не сложный, правда. Весь код там есть. Потом пробуй написать свой блог с одной формой - если что забудешь смотри опять в туториалах. Потом попробуй опять с нуля что-нибудь простое написать. Так со временем и вольешься.
Аноним 23/11/14 Вск 13:00:53 #266 №409174 
>>409079
Потому что это совсем днищевский уровень для самых новичков. Это не интересно! Давай что нибудь посложнее.
Аноним 23/11/14 Вск 13:03:26 #267 №409176 
>>409142
Какая-то каша у тебя в голове.
http://ideone.com/iZmU5E
http://ideone.com/mC2MeW
Фиг знает что ты хочешь.
Аноним 23/11/14 Вск 13:10:46 #268 №409181 
>>409176
Лол, ты не видишь свой stdout?

Хочу я того, чтобы в переменную функции записалось не значение, а функция/операция, переданная и сформулированная в аргументе. Но, по-видимому, "x+5" это и есть как бы значение, сами действия никуда кому не передаётся и сразу выполняются.

Прописать "self.y = lambda: arg + 5" в ините нельзя, потому что в этом-то и весь смысл, что функция может быть разной (и она довольно громоздкая, а не x+5), иначе и смысла во всём этом не было бы.
Аноним 23/11/14 Вск 13:13:53 #269 №409185 
>>409142
Никак. Ето петон же.
Аноним 23/11/14 Вск 13:14:45 #270 №409186 
>>409185
А как в Си? Или что ты там котируешь. Так, для сравнения.
Аноним 23/11/14 Вск 13:14:56 #271 №409187 
>>409142
Можно, конечно, строчкой передавать Class("x + 5"), только нахуй это надо.
Аноним 23/11/14 Вск 13:16:31 #272 №409188 
>>409186
В сишке макроснёй можно.
Аноним 23/11/14 Вск 13:21:15 #273 №409192 
>>409186
А зачем тебе? Вангую, что у тебя там хуёво спроектированная пердолина.
Аноним 23/11/14 Вск 13:51:23 #274 №409208 
>>409187
Не, строкой не пойдёт, там же переменные не из глобал скоупа, а всякие self.param передаются из другого класса.
Ну ладно, пусть так тогда будет. По сути, я просто хотел перенести символы "lambda: " в другое место для красоты.

>>409192
>А зачем тебе?
В смысле зачем? Ну ты с таким презрением "это же питон" говоришь, вот мне и интересно стало, как это было бы сделано в "не питоне" и "нормальном языке".
>Вангую, что у тебя там хуёво спроектированная пердолина.
Если интересно: http://ideone.com/EqFWot
Аноним 23/11/14 Вск 14:13:27 #275 №409218 
>>409208
Меню за высотой и шириной к окну обращаться должно.
Аноним 23/11/14 Вск 14:22:22 #276 №409224 
>>409218
А если у меня два окна? Какое из них хардкодом вписывать в метод класса? А если я захочу изменить название переменновать window = Window() DRUGOE_WINDOW = Window()? Снова переписывать класс меню? А если я захочу добавить вторую менюшку, того же класса, но которая будет не относительно размеров окна, а относительно размеров какого-то другого элемента (рамочка там, например)?
self.x и self.y должны быть просто изначальной, "нулевой" точкой данной конкретной инстанции объекта класса Menu, относительно которой все элементы рисуются.
Аноним 23/11/14 Вск 14:27:08 #277 №409228 
>>409224
>А если у меня два окна?
Одно меню в два окна? Наркоман шоле?
>Какое из них хардкодом вписывать в метод класса?
Никакое.
>А если я захочу изменить название переменновать window = Window() DRUGOE_WINDOW = Window()? Снова переписывать класс меню?
Таки советую тебе почитать что-нибудь по ООП.
>А если я захочу добавить вторую менюшку, того же класса, но которая будет не относительно размеров окна, а относительно размеров какого-то другого элемента (рамочка там, например)?
Вот и передашь ей рамочку, например.
Аноним 23/11/14 Вск 14:33:17 #278 №409230 
>>409228
>Одно меню в два окна? Наркоман шоле?
Два окна, в каждом по меню.
>Вот и передашь ей рамочку, например.
В смысле, ты предлагаешь мне menu = Menu(window, args) делать?
Тоже вариант, конечно.
Аноним 23/11/14 Вск 14:36:21 #279 №409232 
>>409230
А, нет, не вариант. Для каждой инстанции Menu может быть нужна своя функция расчёта нулевой точки же. Для одного меню это self.width/2, для другого — self.width9000/self.height.
Аноним 23/11/14 Вск 14:36:43 #280 №409233 
>>409230
>Два окна, в каждом по меню.
Меню-то разные.
>В смысле, ты предлагаешь мне menu = Menu(window, args) делать?
Да. Обычно так вообще и делают: передают область (фрэйм), на котором меню (или ещё какое говно) должно нарисоваться.
Аноним 23/11/14 Вск 14:44:18 #281 №409236 
>>409232
К тому же, тебе никто не запрещает передавать относительные координаты расположения.
Аноним 23/11/14 Вск 14:44:35 #282 №409237 
>>409233
>Меню-то разные.
Ну в смысле разные? Если это "меню" содержит кнопки "выйти" и "сделан фон ядовито зелёным", чего им разным-то быть? Оба меню будут одного класса, просто рисоваться в разных окнах и в разных местах.
Так-то я window и так передаю для создания событий по клику на эти кнопки.

Я >>409232, в общем, объяснил проблему. Что мне нужен доступ не конкретно к окну, а к формуле расчёта нулевой точки, чтобы когда надо было перерисовать их, оно стояло именно там, где нужно. Размер окна там по чистой случайности.
Аноним 23/11/14 Вск 14:46:51 #283 №409238 
>>409236
> тебе никто не запрещает передавать относительные координаты расположения.
Ну я вот их через lambda: ... и передаю. Как ещё можно? Мне нужно, чтобы именно в момент вызова place_buttons() расчитывались self.x и self.y с самыми последними данными.
Аноним 23/11/14 Вск 14:53:53 #284 №409241 
>>409237
>Ну в смысле разные?
Объекты разные.
>Как ещё можно?
Передавай менюшке окно и относительные координаты, а она сама уже пусть считает и рисует как хочет.
И никаких костылей тогда не понадобится.
Аноним 23/11/14 Вск 15:04:42 #285 №409244 
>>409241
>Объекты разные.
Лол, ну это понятно. Я к тому, что класс и методы там одни и те же.

>и относительные координаты
Как? Мне нужно не просто в момент передачи чтобы они были относительными, а в любой момент вызова, и относительно уже новых значений тех же переменных.
Аноним 23/11/14 Вск 15:10:48 #286 №409245 
>>409244
Вот тебе пример
self.menu = Menu(self, x = 0.5, y = 1)
А менюшка, когда ей надо, вычисляет реальные координаты как-нибудь так:
real_x = self.frame.width self.x
real_y = self.frame.height
self.y
И никаких ломающих глаза и абстракцию лямбд.
Аноним 23/11/14 Вск 15:11:31 #287 №409247 
>>409245
Блять.
>real_x = self.frame.width × self.x
>real_y = self.frame.height × self.y
Аноним 23/11/14 Вск 15:19:07 #288 №409249 
>>409245
Ну я же писал -> >>409232, выражение расчёта реальных координат должно быть изменяемым вне определения класса.

В общем, вот простеший пример. Покажи, как это сделать без лямбд. http://ideone.com/0dQyHT

Аноним 23/11/14 Вск 15:21:01 #289 №409250 
>>409249
Добавлю, что на конкретное меню мне сейчас уже плевать, я ему хоть харкодом мог бы расположение вбить для двух режимов работы, а вот способ "правильного" выполнения нужного мне действия узнать хотелось бы.
Аноним 23/11/14 Вск 15:25:27 #290 №409253 
>>409249
>self.menu1 = Menu(lambda: self.p2/self.p1, '1')
>self.p1 = self.p1 × 1.3
>self.p2 = self.p2 / 1.3
>self.menu1.output()
За такой грязный побочный эффект нужно пиздить руками и ногами.
Лучше делать как-то так:
menu1.x = ... или menu1.move(x = ..., y = ...), а не менять значение магических переменных.
Аноним 23/11/14 Вск 15:29:06 #291 №409255 
>>409253
>побочный эффект
Почему побочный? Это именно то, что мне нужно.

Ну и каждый раз, когда какая-то переменная (будь то размер окна или размер кнопки, под которой должно появляться меню) — передавай всё это 100-символьное говно в аргументы инб4: записать в переменную и передавать её? Я при создании объекта говорю ему, относительно чего ему нужно строится. Никаких побочных эффектов быть не может, потому что при изменении размера окна ему нужно подвинуться, при изменении отступа от края окна, меню нужно подвинуться. При толщины фигурки человека — меню нужно подвинуться, чтобы не перекрывать этого человечка. Что не так-то, я не пойму?
Аноним 23/11/14 Вск 15:31:47 #292 №409256 
>>409253
В общем, если весь твой ответ заключается исключительно в "так не делают" — хорошо, учту, буду стараться так не делать. Просто тут ну сам аллах велит сделать автоматизм же.
Аноним 23/11/14 Вск 15:38:55 #293 №409258 
>>409255
>Почему побочный?
Потому что побочный. Ты сам на код посмотри.
Что там происходит? Ты где-то перемещаешь меню? Нет, ты меняешь значение какой-то переменной.
Такой код нечитабеленый и труднно поддерживаемый.
Почитай какую-нибудь книжку по ООП или просто СИКП, где поясняют, как стоить абстракции, и не городить грабли там, где они не нужны.
Аноним 23/11/14 Вск 15:40:52 #294 №409259 
>>409258
>Ты где-то перемещаешь меню?
Да. Изменяя эту переменную, я хочу, чтобы меню подвинулось. menu1.output() это, грубо говоря, menu1.move(), просто назвал не так (без вызова функции координаты самих кнопок не обновятся же, там лупа никакого нет).
Аноним 23/11/14 Вск 15:46:13 #295 №409260 
>>409259
>Да.
В коде - нет: перемещение меню там является неочевидным побочным эффектом.
Ладно, тебе бестолку объяснять. Набьешь шишки - сам поймешь.
Аноним 23/11/14 Вск 17:07:34 #296 №409300 
>>409260
http://ideone.com/CExeXL
Во общем, решил я написать то, как я подобную функционально хотел бы использовать. С комментами, нормальным названием функций, обозначающим именно то, что делают.

Можешь развёрнуто ответить, почему и чем такая реализация плоха? И какие шишки я должен набить? Лично я, наоборот, только простоту и удобность в таком коде вижу.

Важные комменты:
> 4 орбы — 1 класс. 2 созвездния — 1 класс, но разные положения как каждой из орб, так и самих созвездий. Там не написано.
> Каждое созвездие внути себя содержит вбитую в себя функцию определния положения своего центра
> Обновляем созвездия и рисуем их
> Мне не нужно думать, какое, куда и на сколько двигать каждый раз когда это нужно сделать.
Аноним 23/11/14 Вск 17:17:33 #297 №409302 
>>409300
В общем.
Аноним 23/11/14 Вск 17:29:24 #298 №409307 
>>409300
>Можешь развёрнуто ответить
Я уже заебался тебе разъяснять, и не собираюсь пересказывать то, что ты и сам можешь прочитать.
Открой уже статью о вреде побочных эффектов, почитай об основах ООП и проектирования в целом. Ну, или говнокодь дальше.
Аноним 23/11/14 Вск 17:33:42 #299 №409310 
>>409300
А если вкратце, то поведение объекта не должно зависеть от направления волос на среднем пальце левой ноги, оно должно зависеть только от своего внутреннего состояния. Слышал про инкапсуляцию?
Аноним 23/11/14 Вск 17:35:43 #300 №409312 
>>409307
Да почему, блядь, побочных?! self.y() — функция, вызываемая при переисовке. Просто я этой "self.y" придал функцию через аргумент, при созаднии объекта. Изменяет она своё значение только тогда, когда я прошу.

Всё, что я делаю, это заменяю:
cave.draw((cave.stalactite1-cave.stalagmite1)/2) при каждой необходимой перерисовке
На:
1 х Constellation.y = (cave.stalactite1-cave.stalagmite2)/2
и cave.draw() при каждой перерисовке.

Что там, чёрт побери, неочевидного, неявного, и побочного!? В общем, ладно.
Аноним 23/11/14 Вск 17:39:04 #301 №409314 
>>409310
> то поведение объекта не должно зависеть от направления волос на среднем пальце левой ноги
Но мне нужно, чтобы оно от этого зависело. И поведение этого объекта зависит от своего внутреннего состояния, просто это состояние меняется согласно некоторым условиям изменения состояния другого объекта.
Аноним 23/11/14 Вск 17:39:45 #302 №409315 
>>409312
Своё не пахнет.
Вот тебе простой критерий определения говнокода: если ты пишешь одно, а подразумеваешь другое, то поздравляю, ты только что выдавил дымящуюся кучку.
Аноним 23/11/14 Вск 17:41:29 #303 №409317 
>>409315
>если ты пишешь одно, а подразумеваешь другое
Но ведь этого не происходит.
Аноним 23/11/14 Вск 17:44:03 #304 №409318 
>>409317
>>409314
Всё. Заебал. Хоть в одну функцию всё засунь.
Аноним 24/11/14 Пнд 18:54:51 #305 №409712 
Можно как-нибудь в одну строчку и с одной переменной сделать так, чтобы она при каждом обращении к ней меняла своё значение, в некотором диапазоне с некоторым шагом, сначала возрастая, потом угасая?

То есть, что-то вроде:
x = 0
x = (x+33)%99
,
Но в этом случае x принимает значения 0->33->66->0, а мне нужно 0->33->66->33->0.

С косинусом получается только имея вторую переменную. Полдня просидел — не смог придумать.
Аноним 24/11/14 Пнд 18:56:59 #306 №409713 
>>409712
В смысле, не обращении, а пересчитывани (x = x +... в вызываемой функции стоит).
Аноним 24/11/14 Пнд 20:55:41 #307 №409747 
>>409712
Святые угодники! Но зачем?
Аноним 24/11/14 Пнд 21:17:49 #308 №409757 
Такое ощущение, что тред бомбят какие-то траллы секстанты. Какие-то нелепые задачи и вопросы предлагают.
Аноним 24/11/14 Пнд 21:26:06 #309 №409761 
>>409712
Нет, нельзя. Давай формализуем по частям, тобою написанное. Ты хочешь найти некую функцию в математическом смысле слова, а не в программистском f(x), такую что f(0) = 33, f(33) = 66, f(66) = 33 и f(33) = 0 чтобы ты мог написать в коде x = f(x). Посмотри внимательно на второе и четвертое равенство. Функция от одного и того же аргумента дает два разных значения. Это противоречит понятию функции, т.е. такой функции не существует.
Не выебывайся, сделай флажок is_growing = true / false, через if распиши два случая, оформи это в функцию и забудь про это. Косинус, блядь. Ты б еще через параметризацию ленты Мебиуса сделал, хули мелочиться.
Аноним 24/11/14 Пнд 21:33:25 #310 №409764 
>>409747
В смысле зачем? Нужна мне вот пульсирующая переменная.
>>409761
>сделай флажок is_growing = true / false, через if распиши два случая, оформи это в функцию
>Косинус, блядь.
Лол, а что такого-то? Нахуй нужны флаги, если математика дала нам периодические фукнции?
y = bias + Axcos(x)
x = (x+step)(остаток_от_деления)2pi

И готово.
Аноним 24/11/14 Пнд 21:45:55 #311 №409773 
>>409764
>Нахуй нужны флаги, если математика дала нам периодические фукнции?
Люди придумывают аппроксимационные формулы, считают величину невязки, рассчитывают требуемую точность представления числа и достаточное количество итераций для сходимости, оптимизируют все это дерьмо, и все это для того, чтобы какой-то индус мог вычислить 0 1 2 1 0 без флагов. С другой переменной, набитой каким-то флоатовым дерьмом, но зато без флагов. Пиздец.
Аноним 24/11/14 Пнд 21:47:26 #312 №409774 
>>409773
Ты серьёзно считаешь, что мне нужно между тремя числами крутиться? Я бы тогда словарь просто сделал.
Аноним 24/11/14 Пнд 21:48:34 #313 №409775 
>>409774
А если тебе надо будет пульсировать по 10^12 шагов туда-обратно, тоже словарь заведешь?
Аноним 24/11/14 Пнд 21:51:34 #314 №409776 
>>409775
Штоу? Я именно потому и не делал словарь, что мне много шагов нужно делать.
Аноним 24/11/14 Пнд 22:02:10 #315 №409779 
>>409776
А мог бы сделать, чтобы у тебя в проге гигабайт памяти ушел на какую-то хуйню.
Чем тебя решение с флагом не устраивает? Быстро? Быстро. Читабельно? Читабельно. Мало кода? Мало кода. Если уж ты так не переносишь дополнительные переменные, запихай этот флаг в старший бит числа. Будет менее читабельно, но тоже быстро. А если тебя так выбешивает дополнительная строчка кода, запиши if в тернарном виде, как настоящий BATYA. Но зачем выдумывать поебень, которая жрет в разы больше ресурсов, чем требует самое тупое наивное решение, и которую сам через неделю не поймешь, я решительно не понимаю. Да, прикольно, конечно, когда можно в одну формулу все запихать, сам так делаю постоянно. Но надо и меру знать.
Аноним 24/11/14 Пнд 22:15:49 #316 №409780 
>>409773
Вообще, замерил время: с флагами некрасиво, но-таки в 5 раз быстрее. Пожалуй, так и сделаю.
Аноним 24/11/14 Пнд 23:19:45 #317 №409815 
>>409780
Точнее, какие 5, все 30-40. Спасибо.
sageАноним 25/11/14 Втр 09:46:32 #318 №409919 
>>409764
> В смысле зачем?
> в одну строчку и с одной переменной
this
Но, собственно, тебя уже оходили господским кнутом
Аноним 25/11/14 Втр 15:29:01 #319 №409994 
>>408830
Спасибо, интересно. Правда, всё равно вопрос остался: если программа может показывать количество кадров в секунду, значит у неё есть представление о настоящем времено. Почему оно не может использовать те же самые часы для вызова функция независимо от фпс без всяких пердолений с пропуском кадров?


И ещё вот по ООП вопрос. http://ideone.com/6tKYQ0
Есть, значит, сама игра и как бы сетевой клиент к ней, отдельным классом, в который передаётся объект класса игры. Как только клиент получает сообщение, он создаёт событие, а игра, ловя это событие, делает что там ей надо.
В есть матрица, по значениям которой либо рисуются соответствующие спрайты, либо ничего не рисуется.
Соответственно, в функции отрисовки стоит луп по элементам матрицы и if x < 5: risouvat'. Также там есть собственно словарь, из которого и берётся текстурка. Матрица может принимать значение 5, но ключа такого в словаре нет, потому что для этого значений матрицы рисовать ничего не надо (то есть, if x < 5 такой элемент не пройдёт и как бы норм должно быть).

Проблема заключается в следующем: если событие смены значений матрицы вызывается клиентом, то иногда (довольно-таки часто, я бы сказал) выпадает ошибка
KeyError 5.0 на одной из строк:
sprite = pyglet.sprite.Sprite(SPRITES[self.matrix[i,j],...)
sprite.opacity = OPACITY[self.matrix[i.j],...)
стоящих внутри if self.matrix[i,j] < 5 !!!

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

Как я понял, каким-то образом получается так, что элемент матрицы меняет своё значение уже после того, как выполнилось условие < 5. Но почему? Чем отличаются вызовы событий из Game и из NwClient? Ведь вызывает его, в итоге, один тот же объект, разве нет?
Решил это тем, что в самом начале присваиваю значение матрицы локальной переменной, по которой уже и идёт сравнение, то есть изменение матрицы более не влияет эту итераци лупа. Но нормально ли это?
Аноним 25/11/14 Втр 17:06:51 #320 №410008 
Я вот проходил курсы на юдасити и там пользователя определяли по кукам. То бишь у него имя и хэш пароля вроде. И таким образом все записывалось. Давно это было, может и путаю чего.
Это нормально так делать? Как в джанге делают аутенфикацию пользователь? Я имею в виду common practice конечно. А не конкретный код.
Аноним 25/11/14 Втр 17:07:47 #321 №410010 
>>409994
Мне даже лень это читать. Интересно, кто нибудь найдет в себе силы помочь тебе?
Аноним 25/11/14 Втр 17:32:48 #322 №410022 
>>410010
Окей, попробую одним предложением описать:
Создание объектом А события внутри функции объекта Б позволяет вызываемой функции выполняться посреди выполнения другого процесса этого же объекта А. Почему?
Аноним 25/11/14 Втр 17:33:55 #323 №410023 
>>410022
При условии, что никакие мультитрединги не использутся, разумеется.
Аноним 25/11/14 Втр 23:14:42 #324 №410168 
Интересно, делать сайт-визитку на джанге - это по воробьям из пушки? В смысле, все что потребуется от джанги - это выдавать гребанную страницу, а остальную работу сделает html, css и js. С другой стороны не осваивать же мне все эти убогие вордпрессы.
Аноним 25/11/14 Втр 23:22:01 #325 №410172 
>>410168
посмотри фласк
http://flask.pocoo.org/
30 минут и бекенд с монгой-хуенгой, ковыряйся дале в js.
Аноним 25/11/14 Втр 23:25:12 #326 №410175 
>>410172
Как же я не хочу нырять в этот гребанный веб. Но, похоже, чтобы использовать пайтон, придется. Эти убогие джс, сиэсэс млин.
Аноним 25/11/14 Втр 23:34:10 #327 №410179 
Анон, подскажи ньюфагу как быть в непростой ситуации.
Операционка Windows 7, есть установленная ide Enthought Canopy и есть виртуальное окружение virtualenv. Я хочу установить django в виртуальном окружении. Активирую окружение, устанавливаю pip install django, устанавилось без проблем, но при попытке
запустить скрипт создания нового проекта
[code]> (env) django-admin.py startproject blabla[/code] в виртуальном окружении, открывается редактор canopy и открывает django_admin.py. Чому так получается? Где-то прописано приложение по умолчанию, которое используется для открытия файлов .py?
Аноним 25/11/14 Втр 23:43:00 #328 №410186 
>>410179
Может надо писать
python django-admin.py startproject?
Аноним 26/11/14 Срд 00:37:28 #329 №410205 
>>409712
def YobaГенератор:
… while True:
… … yield 0
… … невъебенные расчеты...
… … yield 33

x = YobaГенератор()
next(x)
next(x)
Аноним 26/11/14 Срд 10:44:50 #330 №410311 
>>410186
да, дело было в этом. Но все-таки почему открываются скрипты из консоли в редакторе ide?
Аноним 27/11/14 Чтв 11:59:08 #331 №410693 
Вопрос от ньюфага. Вот такой код:
import urllib.request
url=input('Введите URL: ')
code1=urllib.request.urlopen(url)
print('Ответ сервера: ',code1.getcode(),' - ',code1.geturl())
print('Заголовки:\n',code1.info())
input("Press Enter to continue...")

При открытии файл сразу закрывается. В чем дело?
Аноним 27/11/14 Чтв 16:27:43 #332 №410802 
>>410693
Ты из консоли запускаешь? Если нет, то может быть ошибка и поэтому закрывается.
Аноним 27/11/14 Чтв 17:02:03 #333 №410818 
>>410802
Запустил из командной, разобрался. Спасибо
Аноним 27/11/14 Чтв 17:46:41 #334 №410847 
Аноны, поясните, что должен знать крепкий сферический джуник в вакууме?


Небольшое кулстори:
Студентота с колледжа.
Сам уже пол года пытаюсь устроиться в конторки (ДС хохлостана) - только ОДНА набирает джуников. Ок. Мне больше одного места работы не нужно.

Прохожу тех. собеседование: годно рассказал про замыкания, декораторы, старые\новые классы (версия 2.7), дескрипторы.
Налажал с set'ами (посколько их не использовал, знаю по сути только о их существовании), нес несвязную пургу про базы данных (немного рассказал о MySQL, Mongo, Redis). Честно сказал о том, что плохо разбираюсь в реализацию многопоточности (про GIL в курсе), но работал с Celery.
Аноним 27/11/14 Чтв 18:27:52 #335 №410858 
>>410847
google://django+junior
Аноним 27/11/14 Чтв 18:34:43 #336 №410862 
>>410858
А, да, кстати, ребята пишут совсем не на джанге, а какой-то адовый кастомный фреймворк, что-то похожее на Pylons или Flask
Аноним 28/11/14 Птн 15:24:58 #337 №411156 
14171774989690.jpg
Помогите скриптик написать, который бы запускал команду в CMD каждые 15 минут.

Можно просто батник сделать. Но охуевший начальник, требует имеено на питоне скрипт.
Аноним 28/11/14 Птн 15:50:32 #338 №411164 
>>411156
time.sleep(900)
Аноним 28/11/14 Птн 16:12:18 #339 №411171 
>>411164
А можно со всем остальным синтаксисом?
sageАноним 28/11/14 Птн 16:31:58 #340 №411175 
>>411171
вайл тру:
____ос.екцес("")
____тайм.слип(900)
мимокрокодил
Аноним 28/11/14 Птн 16:37:31 #341 №411178 
14171818512920.jpg
Посоны, я двухнедельный ньюфак.

У меня есть длинный zip-лист из двух листов чисел, одинаковой длины.

Пары чисел перебиваются время от времени так:

0.009 724
0.426 725
0.028 726
# #
# #
0.013 0
0.258 1
0.15 2

Как мне разрезать этот зип лист на отдельные зип-листы по этим меткам, и каждому новому листу дать индивидуальное имя? Всего таких разделений в списке около десяти-двадцати.
Аноним 28/11/14 Птн 16:51:44 #342 №411186 
>>411178

на ум приходит сделать (с избытком) .txt файлов с последовательными номерами, и раздуть код повторами для каждого файла. Т.е. писать сегмент в файл до метки, закрывать, открывать следующий и т.д. Имхо это изврат, не хотеть так.
Аноним 28/11/14 Птн 17:59:50 #343 №411206 
>>411178

а лучше всего было бы сделать лист десятка листов.
Аноним 28/11/14 Птн 18:48:23 #344 №411220 
>>411178
http://ideone.com/H89mhA
некрасиво, но работает
нид хелп Аноним 28/11/14 Птн 22:28:11 #345 №411309 
14172028916180.jpg
Гайс, посоветуйте клауд хостинг на джанго. Я щас новичок в Пистоне, и выбрал джанго для осваивания. Нужен клауд хост, чтобы я мог пушить гитом, это был годный хостинг, можно было подключать CDN.

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

Вобщем нужен адекватный джанго клауд. Спасибо.
Аноним 28/11/14 Птн 23:14:04 #346 №411339 
>>411309
Я пользуюсь fullspace.ru хоть у них как-то все не оче выглядит, но зато за платеж от 800 рублей дают бесплатный домен в ru.
А в оппосте тебе чем не угодил pythonanywhere?
Аноним 28/11/14 Птн 23:20:40 #347 №411341 
>>411339
Желательно не ru и не ua хостинги. А оппост не прочитал ибо мимопроходил, щас перечитаю. Спс за ответ.
Аноним 29/11/14 Суб 00:06:23 #348 №411356 
>>411220

попробовал, по-моему всё-таки не работает.

Вобщем посидел-подумал, и решил что чем резать лист на листики, лучше я его проиндексирую, а потом сделаю дикшонари, где кей будет отдельный лист, а велью - список стрингов. Как-то так. Но всё равно спасибо
Аноним 29/11/14 Суб 00:21:23 #349 №411365 
14172096830720.jpg
>>411339
Анончик, спасибо что обратил моё внимание на оппост! почитал про питонвезде, и, кажется, это то, что мне нужно.
Аноним 29/11/14 Суб 01:01:30 #350 №411383 
>>411365
Рад, что кому-то помог.
Аноним 29/11/14 Суб 21:42:17 #351 №411693 
>>411356
http://ideone.com/ReXxOd
Аноним 30/11/14 Вск 13:51:58 #352 №411872 
Написал простой чатик и обернул его в ткинтер. Хочу, чтобы он выглядел получше. Дальше ебаться с ткинтером или освоить wxPython? Или вообще смотреть в сторону PyQt?
В общем прошу пояснить нубу за графические пакеты, заебало уже в консольке пердолиться.
Аноним 30/11/14 Вск 13:57:17 #353 №411873 
>>411872
Забыл добавить. Я раньше писал все на С++ и смотрел в сторону Qt. Так может как раз и освоить PyQt дабы мог легко связываться с сишкой, когда надо? Просто PyQt мне показался слишком тяжелым для моих простеньких целей, а wxPython вроде довольно прост и сразу же встроен в пайтоняшку.
Аноним 30/11/14 Вск 16:42:13 #354 №411916 
>>411872
> Хочу, чтобы он выглядел получше.
ttk в помощь
Аноним 30/11/14 Вск 16:56:42 #355 №411929 
>>411365
СоУС!
Аноним 30/11/14 Вск 17:07:40 #356 №411936 
>>410847
А я в Днепре ищу место работы джуном.
Python requests vs. robots.txt Аноним 30/11/14 Вск 17:09:35 #357 №411937 
14173565755910.jpg
П-поцаны, нужно заскрапить инфу из myanimelist.net, но там ебучий robots.txt и тэг <META NAME="robots" CONTENT="noindex,nofollow">, и поэтому заскрапить нихуя не получается.

Собственно, вот этот скрипт выдает хуиту вместо реального html-контента:
import requests
response = requests.get('http://myanimelist.net/anime/2986/Bamboo_Blade')
print(response.text)


Что делать? Можно ли как-то обхитрить сайт? User-agent там послать или http-referer... Хуй знает, короче. Я в программировании ньюфаг. Помогите.
Аноним 30/11/14 Вск 17:41:23 #358 №411952 
>>411937
В общем, пока тут всем похуй, я нашел вот эту темку: http://myanimelist.net/forum/?topicid=806095&show=0
Оказалось, что надо заполнить форму тут (https://atomiconline.wufoo.com/forms/mal-api-usage-notification/) и ЖДАТЬ, пока господин соизволит добавить твой айпи в whitelist. А вот раньше такого не было. Вот же ссуки.
Аноним 30/11/14 Вск 17:43:00 #359 №411954 
>>411937
И зачем теье эти кетайские порномультики?3
Аноним 30/11/14 Вск 17:48:26 #360 №411955 
>>411954
Китайские мультики тут не при чем.
Хотел с мала собирать инфу о недавно комплитнутых тайтлах, чтобы палить малы анончиков в реакшон-треде. Собственно, это можно делать и вручную, но скриптом все это быстрее должно было осуществляться. Да и практика хорошая для ньюфага в python.
Ладно, подожду чуток, может добавят в белый список.
Аноним 30/11/14 Вск 17:56:15 #361 №411959 
>>411955
А не проще ли тебе будет скрипт в браузере пускать? Greasemonkey или imacros какой-нибудь в помощь.
Аноним 30/11/14 Вск 18:04:34 #362 №411962 
>>411959
Может и проще, но хочу именно в python все это реализовать, ибо начал учить его. Практика написания py-скриптов в приоритете над конечным результатом.
Аноним 30/11/14 Вск 18:06:34 #363 №411963 
>>411962
Тогда проходи инкапсулате @ бери куки из браузера.
Аноним 30/11/14 Вск 18:18:11 #364 №411966 
14173606910590.jpg
>>411963
Спасибо за подсказку, бро, заработало:
import requests
header = {'User-Agent': 'Mozilla/5.0 (X11; Linux i686; rv:20.0) Gecko/20100101 Firefox/20.0',
'Referer': 'http://myanimelist.net/'}
cookie = {'visid_incap_81958': 'vzemEK4QRCeEvQxtBVvwC5cuKFQAAAAAQUIPAAAAAAABxYXsUo4pDcMnBDoUqnUR'}
response = requests.post('http://myanimelist.net/anime/2986/Bamboo_Blade', headers=header, cookies=cookie)
print(response.text)


Аноним 30/11/14 Вск 21:39:38 #365 №412062 
Хочу пересесть с ПХП на Путхон. Какие подводные камни, кроме отсутствия вакансий?
Аноним 30/11/14 Вск 21:40:20 #366 №412066 
>>411937
А ты же можешь подделать хэдеры, как будто ты с мозилы например.
http://stackoverflow.com/questions/6260457/using-headers-with-the-python-requests-librarys-get-method

Не знаю правда, поможет или нет. Я не особо в этом разбираюсь.
Аноним 30/11/14 Вск 21:41:00 #367 №412067 
>>411966
Блджад. Надо читать до конца в следующий раз.
>>412066-кун.
Аноним 01/12/14 Пнд 04:14:06 #368 №412144 
>>412066
Не, там дело даже не в http-заголовках, а в куках, без которых инкапсула не принимает реквест.
Аноним 01/12/14 Пнд 04:58:46 #369 №412147 
Питоны, а что нынче с Boo - знает кто ? Вроде как годный компилятор, но в интернетах глухо. Разве что в районе Булина пара человек на нем игори штампует, попутно пропагандируя.
Аноним 01/12/14 Пнд 17:13:04 #370 №412268 
Поясните пожалуйста ньюфагу, почему рекомендуют изучать именно Питон? Реально ли зарабатывать твёрдо зная этот язык програмирования паралельно изучая смежные?
Аноним 01/12/14 Пнд 17:13:51 #371 №412269 
14174432316530.jpg
>>412268
Поясните пожалуйста ньюфагу, почему рекомендуют изучать именно Питон? Реально ли зарабатывать твёрдо зная этот язык програмирования паралельно изучая смежные?
Аноним 01/12/14 Пнд 17:24:54 #372 №412271 
>>412269
Задаваясь только вопросом заработка ты ничего не заработаешь. Python не только веб, а ещё игры, математические вычисления и много чего ещё.
Аноним 01/12/14 Пнд 17:44:34 #373 №412276 
14174450743670.jpg
>>412271
Ну а как можно приступать к чему то не зная перспектив?
Хорошо, задам вопрос по другому - за что стоит браться, что бы иметь реальные перспективы зарабатывать деньги? В какой сфере есть спрос на специалистов, как не соснуть, и поможет ли мне в этом Питон?
Аноним 01/12/14 Пнд 17:46:59 #374 №412277 
>>412276
Django и odesk.com
Аноним 01/12/14 Пнд 21:25:28 #375 №412332 
14174583284700.jpg
Посоны, нуб снова выходит на связь.

У меня есть два списка одинаковой длины ~40000, в одном - 1111111111111111112333333333345555555555555 и т.д., во втором просто рандомные числа.

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

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

Как это лучше сделать? Если я сделаю словарь, в котором ключ это число из первого списка, а значение - это список чисел которые соответствуют первому числу, то как я буду потом сортировать значения? Если я поменяю ключ со значением местами, то у меня будут повторяющиеся значения во втором списке, которые став ключом изменят количество позиций в первом списке?
Аноним 01/12/14 Пнд 21:33:57 #376 №412337 
>>412332

я правильно понимаю, что мне нужна матрица?
Аноним 01/12/14 Пнд 22:30:59 #377 №412367 
Поясните плиз за SciPy и NumPy. Вот я подумал, что мне нужна матрица. Просто питон 2.7 с python.org в матрицы не может, так? Т.е. мне нужно что-то типа аддона? Вот есть numpy и scipy, они оба имеют этот функционал, или только numpy? Если я хочу накатить NumPy, как это лучше сделать? На оффсайте какой-то хорткор, компиляция каких-то билдов, скачать компилятор без смс, что за ад вообще? Там же даны ссылки на какие-то сборки, я так понимаю что это некий Вован и он уже всё скомпилировал, воткнул в питон, назвал сборочку каким-то именем и это можно качнуть? А оно ляжет на уже установленный питон или будет муть с шеллом и путями и "немогу импортировать numpy потому что всё криво встало и я ебал вообще"?
sageАноним 01/12/14 Пнд 22:41:25 #378 №412370 
>>412332
Попробуй 3 раза прочитать свой псто со стороны.
Аноним 01/12/14 Пнд 22:43:03 #379 №412371 
>>412367
NumPy — твоя либа для матриц.
Ставится одной командой: [CODE]pip install numpy[/CODE] (ну или [CODE]pip3 install numpy[/CODE]). Не знаю, о каких проблемах ты говоришь.
Аноним 01/12/14 Пнд 23:19:20 #380 №412391 
>>412332
zip(список1, список2)
Аноним 01/12/14 Пнд 23:34:39 #381 №412401 
>>412391

а разве они будут держаться друг за друга в зипе? я думал это просто сорт оф контейнер
Аноним 01/12/14 Пнд 23:38:11 #382 №412403 
>>412401
>>> zip([1,2,3], ['a', 'b', 'c'])
[(1, 'a'), (2, 'b'), (3, 'c')]
>>> dict(_)
{1: 'a', 2: 'b', 3: 'c'}
Аноним 01/12/14 Пнд 23:43:49 #383 №412405 
>>412403

у меня скорее [1,1,1,1],[0.009,0.3,0024,0.008]

дикт по-моему даст не то что мне нужно, что-то типа 1 : "0.009, 0.3, 0024, 0.008", как я это буду между ключами сортировать я не понимаю.

А можно зип отсортировать только по одному из двух списков?
Аноним 01/12/14 Пнд 23:47:34 #384 №412407 
>>412405
Ну и зипуй наоборот. Пары сравниваются лексикографически, так что можешь сортировать, как вздумается.

>>> zip([0.009,0.3,0024,0.008], [1,1,1,1])
[(0.009, 1), (0.3, 1), (20, 1), (0.008, 1)]
>>> sorted(zip([0.009,0.3,0024,0.008], [1,1,1,1]))
[(0.008, 1), (0.009, 1), (0.3, 1), (20, 1)]
Аноним 01/12/14 Пнд 23:53:36 #385 №412410 
14174672169730.jpg
>>412407

я на стаке сейчас нашёл такую строчку

zipped.sort(key = lambda t: t[1])

я не оче понимаю как она работает, но она делает то что мне нужно. Видимо она сортирует список [1] в зипе? А список [0] выстраивается следом.

Я до этого только что пытался sorted(zip(список1, список2)), он просто сортировал по целым числам и всё.

(хотя я сейчас подумал что я наверное пропиздоглазил переменную в write)

всё равно спасибо. Держи няшку
Аноним 02/12/14 Втр 00:01:01 #386 №412413 
>>412410

хотя не, не пропиздоглазил.

sorted_zip = sorted(zip(indexlist,MHC))

reversed_sorted_zip = list(reversed(sorted_zip))

sorted1000 = reversed_sorted_zip[0:1000]

for m,i in sorted1000:
my_file_out.write('%-15s %s\n' % (str(m),str(i)))

даёт сортировку по списку из целых чисел (которые индекс) и всё. а мне нужно по дробным, которые второй список.
Аноним 02/12/14 Втр 00:25:51 #387 №412418 
>>412413
Поменяй порядок в зипе.

sorted_zip = sorted(zip(MHC, indexlist))

Заебался повторять.

Ну или `lambda t: t[1]` или `operator.itemgetter`, если тебе кажется, что так проще.
Аноним 02/12/14 Втр 01:02:31 #388 №412425 
>>412418

пробовал, почему-то не работало.

я взял функцию с лямбдой. надо бы научиться ей пользоваться нормально.
Аноним 02/12/14 Втр 01:22:05 #389 №412429 
14174725253530.jpg
Господа, прошел курс по Python на codecademy, сейчас решаю задачки на www.checkio.org. А куда дальше двигаться, что читать? Посоветуйте, что можно написать, что бы и не сложно для начинающего и интересно.
Я из украшки, периодически просматриваю вакансии, но нигде не нужны джуны. Хотел бы переехать в Киев, но там тоже нет вакансий на джунов. Как начинать-то, уважаемые? Главное, что готов работать за еду, только бы обучали и опыт работы появился.
Аноним 02/12/14 Втр 16:08:05 #390 №412605 
>>412367
Если ты под виндой, то для установки некоторых пакетов нужен C компилятор из определенной студии, поэтому есть сайт http://www.lfd.uci.edu/~gohlke/pythonlibs/ куда Вован выкладывает установщики со скомпиленными пакетами.
Матрицы в numPy, scipy – это куча функций для инженерных и научных расчетов в духе преобразований Фурье и всяких интерполяционных многочленов Лагранжа.
Аноним 02/12/14 Втр 16:17:12 #391 №412607 
>>412425
Чему тут учиться? Это просто способ объявления функции, ты мог также написать
def t(x):
return x[1]
sort(key = t)
Ну, а про key - http://habrahabr.ru/post/138535/
Аноним 03/12/14 Срд 09:55:35 #392 №412654 
>>412429
Это
https://www.udacity.com/course/cs101
или вот это попробуй. Хотя бы интересно будет.
https://www.udacity.com/course/cs253
Аноним 03/12/14 Срд 17:29:25 #393 №412779 
>>412605

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

>>412607

у меня сейчас другой затык. Есть список формата 111111111133333333555555555 и мне нужно подсчитать количество одинаковых нечетных чисел в каждом блоке. Я написал луп для этого, но он кривой и пропускает по единице из каждого блока, также пропускает нечетные числа которые встречаются только один раз, например 75 из ..73,73,73,75,77,77,77.. и я понять не могу, почему.

http://pastebin.com/utvPE6Cg
Аноним 03/12/14 Срд 18:16:33 #394 №412797 
>>412779
http://ideone.com/g7nGAK

Какая у тебя запутанная система.

>if is_number(str_pep_number) == True
Можно просто "if is_number():". Так как написанное под if выполняет в том случае, если следующее за ним вырежние является True. Соответственного, истинными являются как само True (возвращённое is_number'ом), так и True==True. Но лишняя операция сравнения же.

>if pept_iter_counter == 1000:
>.... break
Но у тебя и так луп <=1000, лол, зачем брейк с тем же условием добавлять?
Аноним 03/12/14 Срд 18:25:40 #395 №412799 
>>412797

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

Кстати код улучшился - я поменял порядок условий в if str_pep_number_int == pept_counter и if str_pep_number_int != pept_counter, теперь он не теряет единицы с каждого блока, но всё еще пропускает единичные числа.
Аноним 03/12/14 Срд 18:41:13 #396 №412812 
>>412799
Ну я даже не столько из целей производительности, а просто чтобы ты знал, как оно работает, вдруг ты не просто не знаешь, что можно так.

Так а зачем там столько всяких проверок-то непонятных? Особенно == и != pep_counter меня волнуют. Со счётчиком-то какой смысл что-то сравнивать? Числа всегда только увеличиваются?
Чем мой код тебе не подходит (переделаю/поправлю)?

А пропускает он вот почему:
>начало лупа
>str_pep_number = pep_current_line[0:3]
Прочитали строку.
>str_pep_number_int = int(str_pep_number)
Перевели в инт.
>if str_pep_number_int != pept_counter:
Число не равно счётчику какому-то
>... pept_counter += 1
>... a = 1
Инкрементровали счётчик, а =1 и... Новая итерация цикла! Соответственно, у тебя не только единичные числа пропадали, но и количество всех остальных чисел на 1 меньше, чем должно быть.
Аноним 03/12/14 Срд 18:46:35 #397 №412818 
>>412812

не, если чисел два или больше, то теперь всё работает. единичные пропускает всё равно.
Аноним 03/12/14 Срд 18:50:31 #398 №412820 
>>412818
Так ты покажи тогда свой код-то новый. Вангую, там теперь на 1 больше, чем нужно.

Ну и можешь скинуть кусочек файла своего.
Аноним 03/12/14 Срд 19:00:17 #399 №412823 
>>412820

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

я просто поменял порядок сравнений, равно или не равно pep_counter. Было: сначала ==, потом != - терял все единицы и единичные значения. Стало: сначала !=, потом == - единицы перестал терять, но также теряет единичные значения.

Общая мысль такая - у меня упорядоченная последовательность чисел. есть счётчик. Если число совпадает со счётчиком - например 1, и счётчик 1, в дикшонари записывается +=1. итератор +1, по любому. следующая строка, снова проверка. Если в списке пошло следующее число, то счётчик получает +1, дальше должно всё повторяться.

файл http://rghost.net/private/59404353/28f35b237f379c14e4ed31da1212e9d7
Аноним 03/12/14 Срд 19:12:34 #400 №412829 
добавил к условию "не равно" строчку о вписывании величины.

if str_pep_number_int != pept_counter:
pept_counter += 1
a = 1
if pept_counter % 2 != 0:
prot_pepts[pept_counter] = a

теперь единицы не пропускает.
Всё равно в списке из 1000 где-то проёбаны еще четыре величины, потому что сумма 996. Нужно искать.
Аноним 03/12/14 Срд 19:15:24 #401 №412832 
>>412823
>Если число совпадает со счётчиком
Но зачем? У тебя есть словарь, в котором уже есть эти ключи. Зачем ещё какие-то счётчики дополнительные изобретать?

Ну и плюс, числа нечётные, а инкрементируешь ты его на 1 каждый раз.
Аноним 03/12/14 Срд 19:16:21 #402 №412833 
бляяяяя, я понял. У меня в списке не все нечетные величины имеют напротив себя числа. нет например 149.
Аноним 03/12/14 Срд 19:18:26 #403 №412834 
>>412832

>У тебя есть словарь, в котором уже есть эти ключи.

нету же. у меня текстовой файл на входе.
Аноним 03/12/14 Срд 19:22:12 #404 №412836 
>>412834
Я про prot_pepts = {}, в который ты записываешь количество повторений.
Аноним 03/12/14 Срд 19:23:58 #405 №412837 
>>412832

если на два со стартом от 1 то он откуда-то накидывает лишних чисел в нормальные блоки.
Аноним 03/12/14 Срд 19:28:41 #406 №412839 
14176241216090.png
>>412837
Не понимаю твоей проблемы, в общем. Всё работает как надо. 1000 строк — сумма величин в словаре 1000. 149 в твоём файле вообще нет.
Аноним 03/12/14 Срд 19:37:27 #407 №412841 
>>412839

моя основная проблема в том, что я нуп

других вобщем и правда нет.

всё-таки попробую отладить своё говно, чисто ради интереса. Твой вариант выглядит отлично :3
Аноним 04/12/14 Чтв 00:36:30 #408 №412985 
Посоны,я только начал что-то высерать на пистоне(да и вообще погромировать) читаю щас Лутца,а там нужно воспроизвести скрипт,ну создал я файл с расширением .py,написал туда нужный код,а как открыть его через интерпритатор?Сколько не пытался-еррор.Хелп ми,плиз
sageАноним 04/12/14 Чтв 00:37:59 #409 №412987 
>>412985
gvido_plz_zapusti skript.py
Аноним 04/12/14 Чтв 00:38:41 #410 №412990 
>>412985
Мы не Ванги. Какая именно ошибка и как открываешь?
Аноним 04/12/14 Чтв 00:38:42 #411 №412991 
>>412985
python файл.py
Аноним 04/12/14 Чтв 00:45:13 #412 №412996 
>>412991
Ежели я просто напишу имя.py то будет примерно так NameError: name "имя" is not definded.
Аноним 04/12/14 Чтв 00:46:52 #413 №412999 
Думайте над оп-картинкой и фреймворком/библиотекой для следующего треда. Не хотет скучную шапку.
Аноним 04/12/14 Чтв 00:48:53 #414 №413000 
>>412996
Код покажи
Аноним 04/12/14 Чтв 00:51:23 #415 №413002 
14176434838450.png
>>413000
Вот,держи,триппл
Аноним 04/12/14 Чтв 00:58:19 #416 №413006 
>>413002
Хуита какая. Покажи конкретно, что за ошибку выдает.
Аноним 04/12/14 Чтв 01:00:05 #417 №413007 
14176440059680.png
>>413006
Аноним 04/12/14 Чтв 01:02:06 #418 №413008 
>>413007
Запускай из командной строки, дурень.
Аноним 04/12/14 Чтв 01:04:16 #419 №413010 
14176442566560.png
>>413008
я знал,что ты это скажешь и приготовил скрин заранее)Чому тут по умолчанию перед моим текстом стоит путь к моему юзеру?
Аноним 04/12/14 Чтв 01:06:50 #420 №413012 
>>413010
ты ведь понимаешь, почему на самом деле надо писать "python script.py", или объяснить?
Аноним 04/12/14 Чтв 01:07:07 #421 №413013 
>>413010
Прочитай внимательнее что ты там написал.
Аноним 04/12/14 Чтв 01:07:21 #422 №413014 
>>413010
Перейди в нужную папку с помощью cd и пиши python script.py
Аноним 04/12/14 Чтв 01:08:05 #423 №413016 
>>413012
Дело-то и в том,что как бы я не писал,ничего не выходит.И "python script.py" и много чего другого.Результата ноль
Аноним 04/12/14 Чтв 01:08:32 #424 №413017 
>>413010
А вообще по-хорошему, просто пиши в IDLE или еще где и запускай оттуда. Ну после того как разберешься с терминалом, а то неприлично даже.
Аноним 04/12/14 Чтв 01:09:04 #425 №413018 
>>413016
Сделай что тебе умный человек сказал >>413016 а потом скажи что не так.
Аноним 04/12/14 Чтв 01:13:51 #426 №413023 
14176448311330.jpg
>>413010
Аноним 04/12/14 Чтв 01:32:34 #427 №413036 
Пиздец я даун,сколько раз уже перепробовал,все по разному,а результат тот же.Печально.
Аноним 04/12/14 Чтв 01:37:14 #428 №413038 
>>413036
Бля, пиши тогда не python, а py
Аноним 04/12/14 Чтв 01:48:42 #429 №413039 
14176469222830.png
>>413038
Теперь я кое что изменил(видимо,из-за того,что у меня и автора были немного разные версии) и теперь в IDLE все работает,только вот открыть его я по прежнему не могу.
sageАноним 04/12/14 Чтв 01:53:58 #430 №413042 
___gvido_pozhalusjta_umoljaju_otkroj___ skript.py ___spasibo_gvido___
Аноним 04/12/14 Чтв 02:00:43 #431 №413043 
Блджад,у меня получилось,всем спасибо за внимание,я пошел спатеньки.
Аноним 04/12/14 Чтв 14:54:56 #432 №413201 
Котаны, а есть где-нибудь набор задач на питоне, после решения которых я буду неплохо знать питон?
Аноним 04/12/14 Чтв 15:39:18 #433 №413212 
Эй, заклинатели змей, как эту http://ideone.com/mW7xpx дрисню переписать нормально?
После хаскеля оче некомфортно в этих ваших питонах.
Аноним 04/12/14 Чтв 20:28:30 #434 №413377 
>>413212
https://docs.python.org/3/library/pathlib.html?highlight=glob#pathlib.Path.glob
Аноним 05/12/14 Птн 17:21:08 #435 №413664 
14177892681270.png
Посоны, вопрос по мультипроцессингу для мультикоре программирования.
Вот что-то уровня http://stackoverflow.com/questions/1182315/python-multicore-processing

Правильно ли я понимаю, что каждый Process() будет выделен на отдельное ядро, и, соответственно, если я хочу разделить на 4 ядра, то нужно делить задачу на 4 части и вызывать 4 Process()'а?

Если предполагается запускать программу на разных компьютерах, лучше сделать систему гибкой и вызывать столько процессов, сколько ядер (-1), или вызов 8 процессов на 4-хядерном компьютере ничего особенно плохого не сделает? (По тестам получается, что норм, но мало ли.)

Алсо, как быть с Queue.get()? Если задача требует времени на выполнение, то .get() всё останавливает, есил дело происходит в графическим интерфейсе, например. Только выносить в отедльный тред, где оно будет себе фоном сидеть и ждать?
Аноним 05/12/14 Птн 17:21:34 #436 №413665 
>>413664
Бле, кукла приклеила. Картинка не к месту.
Аноним 05/12/14 Птн 23:43:25 #437 №413786 
>>413664
>Process() будет выделен на отдельное ядро

неа, у тебя будет отдельный,ВНЕЗАПНО, процесс и все, открой список процессов ОСи и сам увидишь

вангую тубу надо почитать + и - треадинга, мультипроцессинга и ассинхронности и уже определить, что тебе надо
Аноним 06/12/14 Суб 00:36:31 #438 №413804 
>>413664
Просто будет процесс, куда его распределить — это уже вопрос ОС. Очередь декюй в отдельном тхреаде.
Не блогодори!
Аноним 06/12/14 Суб 02:26:02 #439 №413819 
>>413786>>413804
>куда его распределить — это уже вопрос ОС.
Наверное, логично, что ОС его распределит на свободное ядро. Но да, если нет свободных ядер, нужно же будет всё равно запускать.
>открой список процессов ОСи и сам увидишь
У меня при старте двух процессов в диспетчере два python'оа по ~95% времени цпу отжирают, то есть в сумме как раз почти 200%, что свидетельсвуют о загруженности двух ядер. На маке, по крайней мере, оно всё показывает.
С мультитредингом же всё равно только одно ядро на максимум забивается и всё.

Получается, можно не скупиться на раздельные процессы?

>вангую тубу надо почитать + и - треадинга, мультипроцессинга и ассинхронности
Необходимого мне плюса мульипроцессинга у трединга нет, так что тут очевидно. А пот асинхронностью ты что имеешь в виду? Эвентлуп? Это есть уже и не совсем по теме, по-моему.
Аноним 06/12/14 Суб 13:06:35 #440 №413863 
Проиграл с ребёнка, думающего что щедулинг по ядрам работает сам по себе и ничего делать не нужно, ОС разрулит, хули.
Аноним 06/12/14 Суб 13:17:17 #441 №413867 
>>413863
Ну так это, вместо смеха, быть может, расскажешь тогда, не? Я ведь именно это и спрашивал: как заставить питон работать на всех ядрах. На СО посоветовали мультипроцессинг, при мультипроцессинге мой компьютер задействует все ядра. Где тут чего ещё сделать-то нужно, чтобы уж точно оно все ядра использовало? [Мне не обязательно выполнение конкретных задач на конкретных отдельных ядрах, а лишь доступ питона ко всем ресурсам компьютера.]
Аноним 06/12/14 Суб 13:27:02 #442 №413870 
>>413867
Хотя нет, скобки последние можно игнорировать, полезно было бы и это знать, если хоть что-то расскажешь, конечно..
Аноним 06/12/14 Суб 13:32:05 #443 №413872 
>>413863
Хотя на маленьком кол-ве процессов может таки разрулит. Но не удивляйся если все твои процессы окажутся на одном ядре.

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

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

А так, чтобы программы выполнялись параллельно - их нужно писать параллельно или использовать платформы, которые это делают за тебя, но и на них программы должны быть написаны в определённом стиле.
Аноним 06/12/14 Суб 13:36:32 #444 №413877 
>>413867
Короче, мой совет - используй тхреады.
Аноним 06/12/14 Суб 13:37:45 #445 №413878 
>>413877
Треды на платформе с GIL? Посмеялся.
мимо
Аноним 06/12/14 Суб 13:57:42 #446 №413883 
>>413872
>Оно наоборот, в целях экономии может постараться полностью освободить максимум ядер, пока их время не нужно.
Ну если их время не нужно, пусть вытесняет куда хочет. Или ты хочешь сказать, что имея 10 процессов с вычислением триллиона косинусов, может получиться так, что ОС даст им каждому по 5% времени, решив не перетруждать процессор (= дохрена времени он в простое)?

>>413877
Я же написал, вроде, что треды всё равно только одно ядро используют.
Аноним 06/12/14 Суб 18:26:32 #447 №413977 
>>413664
Не слушай >>413872-петуха, с процессами всё будет заебись.

>>413878
В пифоне io треды отлично переключаются, почитай документацию. Для числодробилок-то конечно бестолку.
Аноним 06/12/14 Суб 18:40:21 #448 №413981 
>>413877
Сразу видно иксперта. Чем по-твоему потоки от процессов отличаются? (Хинт: пространством в памяти. Все остальное, включая шедулинг, работает одинаково.)
Аноним 06/12/14 Суб 19:25:15 #449 №414002 
>>413664
Юзай мультипроцессинг. Только не еби себе мозги очередями и процессами, когда есть божественный pool, для числодробения самое то.

from multiprocessing import Pool
po = Pool(8)
po.map(func,iterable)
po.close()
po.join()

>Правильно ли я понимаю, что каждый Process() будет выделен на отдельное ядро
Нет, схуяли? Но в видне можно например назначить в диспетчере каждому процессу определенные ядра.
Аноним 06/12/14 Суб 19:57:31 #450 №414022 
>>413981
Лол, с кем я на одной доске сижу, пиздец.
Даже не буду на тебя тратить время, скажу только что ты ошибаешься, если интересно почему - гугли.
sageАноним 06/12/14 Суб 20:28:55 #451 №414045 
>>414022
Ясн))
Аноним 06/12/14 Суб 21:04:56 #452 №414083 
>>414022
Да это трулль, видно же.
Аноним 07/12/14 Вск 11:28:23 #453 №414249 
14179409034060.png
>>412332
>>412367
Тяжело смотреть на страдания заблудшей души. Ковыряние в библиотеках, установка скомпилированных сборок, возня с циклами, велосипеды из велосипедов. И все почему? Потому что тебе сказали, что питон легок в изучении и хорош для математических вычислений? Отринь лукавого! Открой свою душу для Wolfram Mathematica! С ней ты забудешь, что такое библиотеки, ведь про любое мирское деяние можно прочитать в Священном Мануале F1. Изучай его, и ты достигнешь просветления, от понимания того, что любое типичное действие реализуется парой-тройкой типовых функций, и твоя душа вознесется над кодом, программы твои станут писаться в одну строчку, и ты забудешь про компиляцию, ООП, статическую типизацию, пространства имен и прочие бренные суеты.
свидетель математики
sageАноним 07/12/14 Вск 11:35:25 #454 №414251 
>>414022
>Лол, пок-пок-пок КУКАРЕК!
http://www.linuxquestions.org/linux/articles/Technical/Linux_Kernel_Thread
>Linux implements threads as a process that shares resources among themselves.
В шиндовсе наоборот, scheduler работает с потоками, а процесс - всего лишь масив-мандада потоков. http://msdn.microsoft.com/en-us/library/windows/desktop/ms685100(v=vs.85).aspx
Аноним 07/12/14 Вск 12:01:43 #455 №414255 
>>414251
Есть же не только ОС потоки, но и потоки ВМ.
Аноним 07/12/14 Вск 12:19:22 #456 №414258 
>>414251
У процесса контекст процесса, своя отдельная среда, личный хип и вообще это самый жирный примитив ОС. У треда - контекст треда, есть только личный стек, это более тонкий примитив. Процессы живут в ОС, треды живут в процессах.

Так вот, внезапно, ротация тредов по ядрам оптимальней, чем ротация процессов. Догадаешься почему?
Аноним 07/12/14 Вск 12:19:54 #457 №414259 
>>414255
У CPython нет юзерспейс-потоков. Эрланг-тред не здесь.
Аноним 07/12/14 Вск 12:23:07 #458 №414260 
>>414258
Наверное, потому что ты всю эту хуйню только что выдумал. Ты серьезно считаешь, что ОС при переключении процессов всю память одного процесса выгружает на диск, а потом память другого оттуда вываливает в ram? У меня для тебя плохие новости.
Аноним 07/12/14 Вск 12:24:29 #459 №414261 
>>414255
Ну это уже гринтреды, они ещё тоньше и их масштабированием занимается не ОС, а VM-ка.
Аноним 07/12/14 Вск 12:33:39 #460 №414263 
>>414259
Выдумываешь хуйню здесь ты, а я пишу как есть на самом деле, если нет, оспорь по пунктам из предыдущего поста.

Переключение между контекстами процессов сильно дороже, чем переключение между контекстами тредов.

>>414259
Был же Stackless, он ещё жив?
Аноним 07/12/14 Вск 12:36:50 #461 №414265 
>>414263
По каким пунктам, ущербный? Я же тебе четко написал, и даже ссылки привел, что в прыщеблядиксе потоки реализованы через процессы, а в шиндовсе процесс - всего лишь набор потоков с общими параметрами типа приоритета, а шедулеру похуй и он работает с потоками в любом случае.
Аноним 07/12/14 Вск 12:39:30 #462 №414266 
>У CPython нет юзерспейс-потоков.
Ааа, так вот откуда эта боль и попытки объяснить что тред это типа почти как процесс. Ладно, не буду сыпать соль на рану, всем пис))
Аноним 07/12/14 Вск 12:44:01 #463 №414268 
>>414265
>По каким пунктам
1. У процесса контекст процесса, своя отдельная среда, личный хип и вообще это самый жирный примитив ОС.
2. У треда - контекст треда, есть только личный стек, это более тонкий примитив.
3. Процессы живут в ОС, треды живут в процессах.
4. Ротация тредов по ядрам оптимальней, чем ротация процессов.

Давай ебашь, а я посмеюсь.
Желательно ещё приведи бенчи где треды по скорости и распределению работают как процессы, обратного то в сети полно, так как все это знают, если не школьники конечно, как ты.
Аноним 07/12/14 Вск 12:57:31 #464 №414271 
>>414268
>1. У процесса контекст процесса, своя отдельная среда, личный хип и вообще это самый жирный примитив ОС.
Какая нахуй "отдельная среда"? Ты там какой-то особой ОС пользуешься, которая каждый процесс виртуализует? У процесса есть 1. командная строка; 2. набор квот; 3. свои области в памяти. Все.
>У треда - контекст треда
Третий раз уже тебе пишу, что в линуксе поток = процесс. Может ты жабоблядь и в системном программировании не разбираешься? Давай я в твоих терминах: public class Thread extends Process.
>Процессы живут в ОС, треды живут в процессах.
Что за матрешку ты выдумал, наркоман?
>Ротация тредов по ядрам оптимальней, чем ротация процессов.
Это тебе твоя мамка нашептала?
>обратного то в сети полно
То-то ты ни одного не показал.
>все это знают
"Все" много чего знают. Все знают, что на небе живет старикашка который тебя отправит в огромную печку, если ты будешь ебаться до свадьбы. Все знают, что прививки от гриппа вызывают аутизм. Все знают, что ты пидор, а твоя мамка больше чем вспышки на солнце.
Рейт Аноним 07/12/14 Вск 17:34:15 #465 №414333 
http://pastebin.com/n7jTSQiy
Аноним 07/12/14 Вск 18:40:19 #466 №414359 
Each process provides the resources needed to execute a program. A process has a virtual address space, executable code, open handles to system objects, a security context, a unique process identifier, environment variables, a priority class, minimum and maximum working set sizes, and at least one thread of execution. Each process is started with a single thread, often called the primary thread, but can create additional threads from any of its threads.
A thread is the entity within a process that can be scheduled for execution. All threads of a process share its virtual address space and system resources. In addition, each thread maintains exception handlers, a scheduling priority, thread local storage, a unique thread identifier, and a set of structures the system will use to save the thread context until it is scheduled. The thread context includes the thread's set of machine registers, the kernel stack, a thread environment block, and a user stack in the address space of the thread's process. Threads can also have their own security context, which can be used for impersonating clients.
Аноним 07/12/14 Вск 20:14:43 #467 №414398 
>>414258
>внезапно, ротация тредов по ядрам оптимальней
Ну так это, каким образом это сделать-то? Thread из threading'а использует только одно ядро, сколько бы этих тредов не наплодилось. Поэтому если у меня, скажем, рисуется игрулька в опенгл, то просчёт чего-либо через Thread, разумеется, снижает фпс, тогда как с Process всё ок, даже если я их запущу заведомо больше, чем ядер, он сам равномерно снижает скорость выполнения каждого, отдавая предпочтение главному процессу/треду с рендерингом. Вот ты (насколько я понял, это >>413877 ты) советовал треды использовать. Как мне добиться такого же удобного поведения программы с тредами? И насколько она оптимальней-то? 1-2% прирост производительности не так сильно нужен, если это будет достигаться какими-то охуительными костылями и ручным написанием своих распределительных очередей или что там ещё есть. Запуск процесса да, примерно в 100 раз (~10мс, вместо 0.1мс) медленнее, чем тред. Но их как-то и не планируется постоянно запускать/завершать, только передавать между ними малые объёмы информации.

Изначальный вопрошающий
Аноним 07/12/14 Вск 22:21:20 #468 №414448 
>>414398
> Thread из threading'а использует только одно ядро
Nope.
Реализация интерпретатора — "CPython", использует один thread для выполнения байт-кода.
Всё остальное выполняется как обычно.
Аноним 07/12/14 Вск 23:17:05 #469 №414470 
>>414448
Nope.
Реализация CPython удерживает глобальный лок (GIL) во время интерпретации байткода.
Все остальное выполняется как обычно.
(Можно попробовать PyPy, там вроде STM уже готов к использованию.)
Аноним 08/12/14 Пнд 07:11:45 #470 №414528 
14180119059880.png
>>414448
>Nope.
Лол, ну что значит nope? Я запускал, у меня больше 100% питон не жрал. Я ж не поспорить или доказать что-то хочу, а программу написать. Хотел сделать тебе скриншот, но треды магически начали-таки использовать чуть больше, чем одно (в нампи дело, вероятно, до этого просто с math.cos пробовал), но теперь более интересный вопросы по скриншоту.
1. Multithreading. 20% процессора бабушке моей зачем-то оставляет. С задачей справляется за минуту. Непонятные 30% загрузки "Системой" появляются, которые, я так думаю, тоже совсем не на косинусы уходят. Нет, не совпадение, а именно от питона.
2. Multiprocessing. Кушает столько, сколько дают. С задачей справляется за 20 секунд.
Если np.cos заменить на math.cos, времена меняются на 17 и 11 при уже серьёзно загружающем систему фаерфоксе.

Так вот, где там треды лучше-то, я никак не пойму?

Алсо, проблема падения фпс при использовании тредов всё равно же есть, и одни твои рассуждения этого не меняют.
Аноним 08/12/14 Пнд 12:10:07 #471 №414574 
>>414528
А без мультипроцессинга сколько? Я на 3.4 получал очень интересные результаты.
Аноним 08/12/14 Пнд 13:32:45 #472 №414594 
>>414528
А теперь попробуй вот так:
http://pastebin.com/scNPJtKu
.wav length Аноним 08/12/14 Пнд 20:07:14 #473 №414687 
анон, выручи, а?
мне нужно написать скрипт, который будет из .wav файлов собирать информацию о длительности записи. как это сделать? хоть модуль подскажите, с каким работать?
Аноним 08/12/14 Пнд 20:08:08 #474 №414688 
>>414687
забыл сказать, ubuntu
Аноним 08/12/14 Пнд 20:18:56 #475 №414692 
>>414687
В божественном construct есть парсер wav вроде бы. А если нет, то напиши его сам, базарю, ещё захочешь!
Аноним 08/12/14 Пнд 20:46:28 #476 №414710 
>>414692
не могу въехать как это сделать
Аноним 08/12/14 Пнд 20:52:59 #477 №414711 
>>414687
google -> get wav length python
Аноним 08/12/14 Пнд 22:25:58 #478 №414724 
>>414574>>414594
http://pastebin.com/crBAFmuk
Multithreading took 15.442 seconds to complete
Sequential took 14.138 seconds to complete
Multiprocessing took 8.159 seconds to complete
Pool map took 7.942 seconds to complete
Pool apply_async took 7.931 seconds to complete
Pool imap_unordered took 7.562 seconds to complete


>>414594
С Pool'ом я не очень разобрался что-то, как оно работает (пример из 3.4 документации с "with pool() as p" у меня вообще не работает: иногда запустит 1-3 поцесса, но, в основном, ничего не делает, а просто стоит, ждёт чего-то). Но вот как-то так сделал, не знаю, верно ли, но разницы от обычного запуска процессов почти нет.
Если же я вместо запуска 10 функций в пуле сделаю одну, но в десять раз большую — pool.apply_async и pool.imap_unordered замедляются до времени трединга/последовательного вычисления.
Аноним 08/12/14 Пнд 22:46:31 #479 №414730 
кароч хочу делать дела большие. игру вот сделать для дройда. питон справится с этой задачей7
Аноним 08/12/14 Пнд 23:40:45 #480 №414738 
>>414730
Смотри в сторону kivy. Есть полно приложений на нем в гуглосторе.
Аноним 09/12/14 Втр 02:07:35 #481 №414769 
>>414730
Если что получится с kivy и третьим пифоном, то пили тутор, сука!
Аноним 09/12/14 Втр 16:31:17 #482 №414919 
14181318773590.png
Всемоидрузья, а подскажите гугл-запрос или сразу библиотеку которая по имеющейся таблице слово/размер шрифта выведет что-нибудь подобное

data visualization libraries for python не взлетел
Аноним 09/12/14 Втр 21:46:11 #483 №415058 
14181507711760.jpg
Реквестируются мнения питонистов по поводу
>>415053
Аноним 09/12/14 Втр 22:35:07 #484 №415077 
>>414919
>по имеющейся таблице слово/размер шрифта выведет что-нибудь подобное
Пиздец пистонщики совсем обленились
мимо крестоеб
Аноним 09/12/14 Втр 22:36:14 #485 №415079 
>>415058
На форилансе либо задачи типовые, либо заказчику похуй на твои милисекунды, а вот если быстрее сделаешь, то заебись. Чистого питона более чем достаточно.
Аноним 10/12/14 Срд 02:04:07 #486 №415155 
Аноны, каких знаний по Питону достаточно набраться, чтобы начать зарабатывать этим?
Сейчас присматриваюсь в codeacademy, достаточно ли там знаний дают? Или лучше даже не начинать?
Аноним 10/12/14 Срд 04:40:43 #487 №415177 
>>415155
Чтобы начать зарабатывать codecademy явно не будет достаточно. Там, грубо говоря, просто рассказывают базовые-базовые команды, объясняя синтаксис языка и какие-то основы программирования. В общем, после того курса ты мало чего сможешь сходу написать, а что сможешь — за то и 100 рублей не дадут, наверное, так как любой опытный человек за 10 минут напишет.
>Или лучше даже не начинать?
Вопрос про питон или codecademy? Если второе — хуже от прохождения не будет. Если первое — . . . . . . . . . . .
Аноним 10/12/14 Срд 04:48:26 #488 №415178 
>>415177
>Вопрос про питон или codecademy?
Про академию был.
Спасибо, анон. А чем тогда продолжить академию в таком случае? В каком направлении двигать дальше?
Сейчас начал потихоньку проходить ее, уже четверть позади. За пару дней точно осилю.
Аноним 10/12/14 Срд 14:13:49 #489 №415242 
Господа, проработал в телекоме. Писал простые скрипты на пайтоне + портал на джанго + базы.
Но хочу в разработку. Тут уже ничему не учусь и сижу на месте(К тому же, тут не у кого учиться).
Что делать? Искать работу,связанную с пистоном или засесть дома и изучить андроид-дев?
Аноним 10/12/14 Срд 20:28:50 #490 №415443 
А можно ли как-то связать python и android девелопмент?
Аноним 10/12/14 Срд 20:33:22 #491 №415446 
>>415443
Kivy
Аноним 11/12/14 Чтв 00:31:57 #492 №415528 
ПитонЫ, расскажите как правильно деплоить проект на джанге на сервер с апачем?
Аноним 11/12/14 Чтв 05:36:51 #493 №415576 
Земляне, есть такая штука как blender game engine. Может кто знает, возможно ли в скриптах подключить библиотеку Tkinter, и если да то как? Просто ковырять движок неохота время спать уже заипался глаза красные.
Аноним 11/12/14 Чтв 11:09:31 #494 №415640 
>>415576
Надеюсь, что нельзя, нужно чтобы это говно уже сдохло.

Кстати, вопрос. Во многих местах пифона есть два варианта сделать одно действие (хотя фактически это одно и то же). Какой вариант предпочесть:
[code]str.lower(s)
s.lower()[/code]

Цепочки вызовов "от" объекта это как-то стрёмно и… "грязно" что ли, с другой стороны, вложенное говно быстро становится нечитабельным. Дискасс.
Аноним 11/12/14 Чтв 12:17:31 #495 №415662 
Вопрос про джангу от нубаса.

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

Как это все правильно разнести по apps? И куда запихнуть модели?
Аноним 11/12/14 Чтв 22:15:33 #496 №415813 
>>415640
Во первых, не вижу ничего стрёмного в цепочках. Как ты сам написал, вложенные вызовы типа `a.this(b, c).that().andThat(d)` читаются лучше именно в таком виде. А читабельность — самое главное.

С другой стороны, многие стандартные функции (например, `map`) существуют именно в виде отдельных функций, поэтому иногда приходится смешивать типа `sum(sorted(map(int, s.upper().split('\n'))))`. В Python, к сожалению, без этого никак.

По большей части это вопрос синтаксиса, но одно существенное преимущество цепочечной нотации — это утиная типизация. Если у объекта есть метод `items`, то это значит, что у него можно получить список пар ключ—значение. И совсем не важно, что это не `dict`, а `Counter` или `OrderedDict`.

Поэтому я всё-таки предпочитаю цепочки.
Аноним 13/12/14 Суб 02:24:45 #497 №416190 
14184266852500.png
Аноним 13/12/14 Суб 12:35:53 #498 №416245 
>>415813
Да, насчёт утки верно, хоть это и не частая ситуация. Раньше ненавидел цепочки, теперь, похоже, буду их использовать.
>>415640
Аноним 13/12/14 Суб 13:50:59 #499 №416262 
Многие кстати используют Ipython notebook?
Аноним 13/12/14 Суб 18:55:25 #500 №416342 
>>416262
define "многие"
Аноним 13/12/14 Суб 18:58:55 #501 №416344 
Господари, что нужно, чтобы питоноскрипт висел в процессах и по нажатию горячей клавиши выводил в центр экрана текст? Целевая платформа - виндовс.
Аноним 13/12/14 Суб 20:30:12 #502 №416397 
>>416344
С выводом на экран разобрался, как хоткей слушать?
Аноним 13/12/14 Суб 23:43:20 #503 №416522 
>>411936
>А я в Днепре ищу место работы джуном.

А где в Днепре нужны питонщики? Я за полгода ни одной вакансии не видел.
Аноним 13/12/14 Суб 23:46:18 #504 №416523 
>>412429
>Я из украшки

Город какой?
sageАноним 14/12/14 Вск 00:27:08 #505 №416540 
Проебался, репост хере.

Посоны, а какими средствами лучше всего запиливается серверное ПО на питоне?

Хочу напилить простой сервис сошиала, который будет быстро отвечать на HTTP запросы и не будет проседать.

Нормально ли будет тупо поставить apache2, накатить на него mod_wsgi и напедалить десяток скритов на wsgi? Если так, есть ли рекомендации по оптимизации? Чтобы, например, не создавать по инстансу на запрос и тд.

Так-то apache нахуй не нужен, если так то как поднять веб-сервер на питоне, чтобы тупо через wsgi делал работу? Ну или не через него, а через простой API, чтобы я не ебался с байтами, а обрабатывал конкретно запросы.

Тошнит от mysql, имел опыт с MongoDB (pymongo), понравилось. Нормально ли будет в продакшене такое?

Делитесь опытом, посоны. Поможете мне — отвечу тем же.
Аноним 14/12/14 Вск 00:27:35 #506 №416541 
14185060554230.jpg
>>416540
Сажа приклеилась. А пикча — отклеилась.
Аноним 14/12/14 Вск 07:06:39 #507 №416584 
>>416540
ебал я отвечать на твой отдельный тред, но тут отвечу, 2014 - синхронность назуй не нужна

почитай про asyncio, как отдельную либу для асинхронности, огребёшь сраную тонну примеров серверов на нём. Если надо в веб, то ещё про торнадо можешь, та же хуйня, только веб-фреймворк с вытекающими
Аноним 14/12/14 Вск 19:09:30 #508 №416735 
Есть два массива:
A ([2,1,2,3,2,3,4,3,4,5,4,5])
B ([1,0,1])

Нужно получить третий:
C ([1,1,1,2,2,2,3,3,3,4,4,4])

Очевидно, что это поэлементное (A - B), только как это нормально без лупа сделать? np.subtract ругается на размерности, A.reshape(12,1) - B или A - B.reshape(3,1) выдают лишние значения (умножая количество либо столбцов, либо строк на 3)

Где-то я по мелочи туплю, но где? В R всё легко само делается, должно же быть и тут так же.
Аноним 14/12/14 Вск 19:14:24 #509 №416737 
>>416735
Ну, собственно, можно сделать с помощью np.tile(B,4), получив одинаковые размеры и там всё вычитается как мне надо. Нормально ли такое решение, или можно поэлегантнее что-нибудь придумать?
Аноним 15/12/14 Пнд 10:28:21 #510 №416954 
>>412332
>Если я сделаю словарь, в котором ключ это число из первого списка, а значение - это список чисел которые соответствуют первому числу, то как я буду потом сортировать значения?
SortedDict не?
slow
16/12/14 Втр 06:18:53 #511 №417253 
Нужно разделить число a на число b и округлить в большую сторону. Оба числа типа int.
Какой метод быстрее в плане производительности?
1) c = int(math.ceil(float(a)/b))
2) if a % b > 0: c = a // b + 1
else: c = a // b
Python и работа Аноним 16/12/14 Втр 11:01:38 #512 №417274 
Стоит сейчас пытаться питоном заниматься , но не для себя , а с перспективой найти работу?
просто год назад помню ещё было довольно много вакансий в интернете по питону. А сейчас куда меньше.
Аноним 16/12/14 Втр 19:31:59 #513 №417364 
>>417274
Хочешь быть востребованным - дрочи жаву и шарп. Работа на питоне (как и на руби) это в основном джанго, пик его популярности пройден.
Аноним 16/12/14 Втр 22:47:22 #514 №417414 
Столкнулся со следующей проблемкой: скрипт не стартует если указан абсолютный путь (python3 /path/to/script.py). pythonw тоже не запускается.
Аноним 16/12/14 Втр 23:26:17 #515 №417425 
>>417253
f, r = divmod(a, b)
return f + bool(r)

Но ceil конечно лучше.
Аноним 17/12/14 Срд 10:19:37 #516 №417521 
14188007776910.jpg
>>400291
Аноны, как через subprocess получить PID уже запущенного процесса? Экземпляров одной программы может быть несколько, кстати, но параметры разные.
Мне subprocess дали, не хотет говнокодить так:
> proc_info = string.split(commands.getoutput("ps -aux | grep -v \'grep\' | grep my_process"))
При запуске через
> my_pid_proc = subprocess.Popen("arg",shell=True, stdout=subprocess.PIPE)
PID то можно получить. Но процесс висит демоном.
Аноним 17/12/14 Срд 17:13:07 #517 №417591 
Вы перекат будете пилить, пидоры?
17/12/14 Срд 22:06:10 #518 №417683 
Есть один класс. У него сильно разросся __init__. Норм будет если я в целях читаемости разобью __init__ на логические блоки и вынесу код в другие методы этого же класса, а в самом __init__ буду вызывать эти методы или так лучше не делать? Какие подводные камни?
Аноним 18/12/14 Чтв 07:03:44 #519 №417766 
Помогите ньюфагу советом.
В общем, я не всегда понимаю, когда нужно применить цикл [code]for[/code] с [code]in range(len(list))[/code], а когда с просто [code]in list[/code]. Можете объяснить, в чем разница? Не могу понять.
Например, вот этот код (получает список и возвращает только четные числа):
[code]def purify(numbers):
even = []
for number in numbers:
if number % 2 == 0:
even.append(number)
return even
print (purify([1,2,3]))[/code]

работает без проблем, и вот этот:
[code]def purify(numbers):
even = []
for number in range(len(numbers)):
if numbers[number] % 2 == 0:
even.append(numbers[number])
return even
print (purify([1,2,3]))[/code]
Работает аналогично. Так разница есть, иль нет?
Аноним 18/12/14 Чтв 07:09:16 #520 №417767 
>>417766
Чего-то я с разметкой немного лажанул.
Вот лучше ссылочка на код:
http://ideone.com/cZjfri
Аноним 18/12/14 Чтв 18:40:51 #521 №417938 
>>417766
range(len(foo)) - создает список от нуля до длины объекта foo - 1.
for i in foo, если foo - итерируемый объект - список, например, то значение i будет пробегать значения от первого элемента до последнего элемента списка, а не от нуля.
напр. такой пример как for i in b: print b
выдаст ошибку если b = [1,2,3] и нет, если
b = [0,1,2]
в общем тут можно поиграть и поэкспериментировать.
надеюсь более-менее понятно объяснил
Аноним 18/12/14 Чтв 18:51:20 #522 №417940 
Нужен совет профессионалов.
В общем, есть кусок кода, который считает некие данные.
после этого есть две опции:
1. Импортировать это всё в csv файл.
2. Передать в другую программу, минуя стадию импорта в файл.
Посоветовавшись с одним весьма компетентным в Jave человеком, он предложил всё сделать через интерфейсы.
Интерфейс будет кидать данные либо в программу, либо в файл. Идея красивая.
Т.к. я в Джаве 0, а Python знаю немного, начал искать что-то похожее на интерфейсы в пайтоне. Как я понял, аналога нет. И вроде как они не нужны. Тут есть свои примочки.
В общем нужен совет от анона, как сделать это красиво? Примитивно я и сам могу.
Создать класс, суперкласс (вроде такие есть).
Я так понимаю, что стоит разделить обработку данных (импорт/экспорт) от самого расчета. Только как это сделать с архитектурной стороны кода?
Аноним 18/12/14 Чтв 20:18:00 #523 №417986 
>>417940
> Импортировать это всё в csv файл
Вот с этого момента нихуя не понятно… Какая то другая программа, Java, интерфейсы..
> что-то похожее на интерфейсы в пайтоне
В питоне есть множественное наследование, поэтому всякие интерфейсы/ mixin'ы и пр. костыли не нужны.
> как сделать это красиво
Для рассуждений о прекрасном, нужно больше конкретики.
> стоит разделить обработку данных (импорт/экспорт) от самого расчета
Если в перспективе собираешься расширять свою программу, тогда стоит.
Аноним 18/12/14 Чтв 20:31:26 #524 №417992 
>>417766
range даёт циферки, list даёт содержимое, enumerate даёт оба.

Надо циферки? — for i in range
Надо содержимое? — for v in list
И то и другое? — for i, v in enumerate(list)
Нужен новый, немного изменённый список или последовательность — list/generator comprehension

Аноним 19/12/14 Птн 23:55:48 #525 №418291 
Читаю Лутца, решаю задачки на Checkio. Что еще можно делать для обучения?
Аноним 20/12/14 Суб 12:17:01 #526 №418336 
>>417766
Используя
>for element in list:
ты, например, не сможешь изменять значения этих элементов.
http://ideone.com/gfyOji
Аноним 20/12/14 Суб 15:27:49 #527 №418360 
>>418336
Только если они immutable.
21/12/14 Вск 08:57:57 #528 №418542 
Как получить доступ из одного модуля к переменной которая была объявлена в другом модуле?
"from имярёк import имярёк" взлетит? Или в таком случае просто будет создана другая переменная с тем же именем, но не связанная с той что в другом модуле?
Аноним 21/12/14 Вск 12:47:13 #529 №418564 
>>400486
Ты это я. Не могу никакой проект придумать. Вернее, у меня есть самый главный проект, но для него знаний надо много. А какие-то переходные проекты выдумать не могу.

По какому учебнику занимаешься? А то я просто выбрать для себя не могу.
Аноним 21/12/14 Вск 14:58:45 #530 №418601 
>>418542
import модуль
модуль.переменная
22/12/14 Пнд 04:50:16 #531 №418857 
>>418601
Не взлетает:
1) В main.py доходит до строки с импортом модуля.
2) Перескакивает в modul.py
3) Там доходит до строки с импортом main
4) Перескакивает в main.py и продолжает его парсить.
5) Доходит в main.py до момента когда переменной присваивается класс объявленный в modul.py
6) Тк modul.py был спарсен пока только до импорта main, пишет, что такого класса в данном модуле оно не видит.
7) Выдаёт соответствующее исключение.
Аноним 22/12/14 Пнд 11:25:22 #532 №418888 
>>418857
> main импортирует module
> module импортирует main
> Не взлетает
А ты чего ожидал, лол?
Что интерпретатор разрулит бесконечную рекурсию, сгенерирует нормальную иерархию модулей и задним числом подставит все значения?
22/12/14 Пнд 14:11:20 #533 №418922 
>>418888
Так я и спрашиваю как получить доступ из модуля к переменной объявленной в main.
Алсо, бесконечной рекурсии нет и не получится, тк каждая строка исполняется интерпретатором только 1 раз. Все остальные импорты уже прочитанного модуля похоже только пространство имён подгружают.
22/12/14 Пнд 14:34:29 #534 №418930 
Чем можно заменить конструкцию ниже?
>if actor.state = 'move':
>>набор действий
>elif actor.state = 'attack':
>>набор других действий
>elif и тд
Аноним 22/12/14 Пнд 23:14:31 #535 №419034 
14192792716610.png
Анон, поясни пожалуйста.
Изучаю питон по книге майка доусона. Так вот пикрелейтед, для чего нужны обведенные бэкслеши? По книге это символы продолжения строки, но никакого эффекта от удаления их из кода нету.
23/12/14 Втр 06:26:19 #536 №419076 
>>419034
Моя версия:
Это специальный символ, чтобы питон знал что строка кода не закончилась и воспринимал перенос строки как продолжение предыдущей строки.
В данном случае они не нужны тк всё переносимое находится в круглых скобках, а пока питон не получил закрывающую скобку он и так по умолчанию считает, что строка продолжается.
РЕР8 так же рекомендует использовать вместо бекслешев неявное продолжение строки, оборачивая всё оборачиваемое в скобки.
23/12/14 Втр 09:23:30 #537 №419091 
Сделал модуль с именем time и питон 2.7.8 ни в какую не хотел его читать. Просто игнорил его так будто я import time и не писал вовсе. Переименовал его и всё заработало.
Это баг или фича?
Аноним 24/12/14 Срд 12:39:01 #538 №419501 
>>419091
лень читать референсы, но считаю, что time зарезервирован, и у него был приоритет выше.
Короче, не ебу.
Аноним 25/12/14 Чтв 00:37:57 #539 №419683 
>>418930
http://ideone.com/YQom9K

>>419034
Нинужны, как и плюсы. А ещё лучше dedent + """ или '''

>>419091
Юзай: https://www.python.org/dev/peps/pep-0366/
25/12/14 Чтв 17:44:13 #540 №419807 
>>419683
>http://ideone.com/YQom9K
Спасибо.
А можно с комментами и пояснениями, что для чего сделано?
А то как-то замудрёно для моих скромных познаний.
Меня самого только на примерно такое решение хватило:
http://ideone.com/oS2LF4
Аноним 26/12/14 Птн 00:49:29 #541 №419901 
>>419807
А что именно непонятно?
Заморочка с partial и исключение, на самом деле не нужны, можно и без них или вообще без on_defaulf. К тому же, он написан не правильно и не будет работать с другим prefix.
_prefix нужен чтобы при обработке ввода не вызвать __del__, __kill_all_humans, __call__ и п.д.
Более полные и функциональные диспетчеры, есть в разных библиотеках для обработки событий, интерактивных интерфейсов, игр и пр.

>> http://ideone.com/oS2LF4
Немного доработать (убрать [x].func = [x].action бойлерплэйт) и получится что-то вроде того, что я написал.
Аноним 26/12/14 Птн 12:13:51 #542 №419963 
>>401557
запили борду
Аноним 26/12/14 Птн 12:51:14 #543 №419973 
Посоны подскажите по фласку. В общем разделил я приложение по разным файлам - модели отдельно, контроллеры отдельно.

В папке приложения есть файл __init__.py, в котором есть строки

app = Flask(__name__)

# Загрузка конфига
app.config.from_object('config')

# База данных
db = SQLAlchemy(app)

В каждой модели ( использую SQLAlchemy ) я импортирую объект базы данных - from app import db

А беда в том, что когда в контроллере я делаю импорт любой модели ( from app.models.record import Record, например ) - ругается на ImportError: cannot import name 'db'

Я нагуглил что эта хуита называется "цикличный импорт", но нихуя не могу понять как исправить. Выходит что мне в любом случае нужно делать объект базы данных ( db ) и импортировать его в модели для описания колонок
Аноним 26/12/14 Птн 15:42:25 #544 №420006 
Питон еще актуален? Как качать скилл? Где можно задания получить какие-нибудь?
Аноним 26/12/14 Птн 16:14:39 #545 №420014 
>>419973
Вынеси db в отдельный модуль.
Аноним 28/12/14 Вск 11:41:12 #546 №420390 
Антоны, как правильно запустить Flask через gunicorn?

[code]gunicorn app:app -b localhost:8000[/code]
Что за app:app?
Аноним 04/01/15 Вск 12:46:17 #547 №422082 
Анон, посоветуй что-нибудь по asyncio. Какой-нибудь гайд, ну или книгу.
comments powered by Disqus

Отзывы и предложения