>>525488 > прокомментировать экосистему разработки программ для браузера на Питоне/Джанго Эм, это MVC фрейморк, в php тоже есть подобные, то есть ты пишешь шаблоны, модели вьюшки и т.п. Потом запускаешь uwsgi или fastcgi сервер и наводишь на него nginx. По типу php-fpm или как его. Есть и девсервер для тестирования который одной командой запускается >Кроме Джанго есть что-то популярное, насколько оно хорошее? Есть. Хорошее. Но работы больше всего с django >но удобные инструменты для электронной коммерции и платёжных шлюзов Есть полно. > И менеджер пакетов? Есть смотри https://www.djangopackages.com/ https://pypi.python.org/pypi?%3Aaction=search&term=django&submit=search Можешь там поискать сразу модули для твоих плалежных шлюзов > На Виндовс желательно с Питоном через виртуализацию работать, правильно? Да, но не обязательно. Некоторые на винде сидят.
Не кидайте хуями. Я нюфаг, вникаю в питон по курсу на codecademy. Почему-то, когда использую raw_input, к элементам списка дописывается u'. В чем дело?
>>525601 Это означает что строка в unicode(типа unicode) Если ты сделаешь print hobbies[0] То напечатает без кавычек и u. Просто ты печатаешь весь список и тогда выводится его repr
>>525613 Смотри. Когда ты делаешь print list он вызывает метод __str__ у list. У list этот метод возвращает квадратные скобочки и repr() от каждого элемента через запятую. Для юникод строк этот repr выглядит как u'строка'
>Ребята, писал на PHP/Laravel, появилась возможность перелезть на Python/Django (в том числе и потому, что работы нет, везде на серверной стороне Битрикс через Битрикс Битриксом погоняет), но я немного испугался того, о чём совсем не знаю. Можете просто как-то прокомментировать экосистему разработки программ для браузера на Питоне/Джанго и осмысленность такого перехода? Кроме Джанго есть что-то популярное, насколько оно хорошее? Вопрос, наверное, риторический, но удобные инструменты для электронной коммерции и платёжных шлюзов, разумеется, тоже в наличии? И менеджер пакетов? На Виндовс желательно с Питоном через виртуализацию работать, правильно? Vagrant-бокс с Питоном и Hyper-V существует популярный?
>Извиняюсь за вопросы, которые мог нагуглить, просто попробуйте ответить сходу на что-то, пожалуйста, а чего не увижу, потом просто загуглю. Спасибо!
>>525848 на счёт троечки там вообще уныние полное было. гвидо в ходе выступления такой типа, а поднимите руки кто троечку в проде использует, и я там чуть ли не один вообще во всём зале был
Загрузил пакет в PyPI. Страница пакета появилась, но через pip install он не ищется. И через поиск по сайту тоже. Это нормально и он позже появится или я накосячил где-то?
Поцаны у меня твиттер бутстрап (Flask-bootstrap) перестал работать во всех браузерах. Например сайт http://blog.miguelgrinberg.com/index выглядит так. В чем проблема?
>>526043 Все плагины отключены. У тебя какой браузер? Есть подозрение что виновата во всем yota, так как вчера вечером у меня перестал работать их днс сервер и заработал только сегодня днем.
>>526066 Уже пробовал, но он все равно йотовским. И такая проблема на всех устройствах подключенных к йоте. При этом через анонимайзер все работает как надо.
>>526128 1. У тебя акселераторы повторяются. Например для Правка и Помощь один - П 2. Нету popup-подсказок при наведении на значки. Я хуй знает что пустой квадрат должен делать, и он не говорит. 3. Как включить нумерацию строк? Вид-нумерация - не активно.
Написал небольшой пакет для отложенного выполнения функций после сигнала с клавиатуры (т.е. после нажатия Ctrl-C). Скачать можно через pip install pycloser. Есть три функции: defer, listen и close. С помощью первой функции кладутся на стек. Пример с открытием и закрытием файла:
@defer # Откладываем печать в консоль def goodbuy(): print('Good buy!')
>>526150 1. Ну, соррь, тупанул чёт. 2. В tkinter их изначально нет, надо костыли городить. 3. Нумерация работает только в режиме "Перенос по ..." --> "Без переноса". >>526153 4. Сначала запуск питон скрипта, потом табы.
>>526248 Можно, но так красивей, мне кажется. >>526267 >Вот ето свежисть, вот ето новезна! Ну, да, велосипед. Но это норма, лол. >>526270 >Ну будьте людьми, не уподобляйтесь js-макакам! Ну, это, наверное, зря. Хотел попробовать что-нибудь на pypi закинуть. Но никакой полезной идеи в голову не пришло. >>526306 Про with я знаю, но это не совсем то. И гошный defer, кстати, довольно удобный.
господа, дико извиняюсь за платину, но поясните плез, что надо для девелопа джуна питона? сейчас осиливаю байт оф питона очень нравится, но этого ведь недостаточно жеж
>>526561 1) Разработчики на питоне не нужны 2) Разработчики на питоне никому не нужны 3) Вроде как нет единого стандарта квалификации, потому что уровень знаний в шарпе стандартизирует MS, например, уровень знаний в жабе -- оракл, а по питону экзамены никто не проводит, как-то так получилось 4) Если ты-таки сумеешь отыскать вакансию, там будет знание Django, инфа сотка / к гадалке не ходи / отнесите мои слова в банк
>>526571 вакансия отыскана, но там нихера не пишут про джангу, а просто мол "знай петон" и все. но по остальному понятно что веб-шмеб настоящая мистика
>>526581 Всё что делает Stack, это предоставляет несколько методов list под другими именами. push → append, pop → pop с сюрпризом, is_empty → __bool__ на велосипеде. И при этом не является каким либо внешним интерфейсом. Зачем?
Ну и конечно же классика: > while not self.handlers.is_empty(): вместо for in.
> func = self.handlers.pop() > func() None object is not callable ;)
И в конце: > def defer(): Все методы Closer оборачиваются в процедуры, а сам он как бы подразумевается синглтоном. Зачем тогда он был нужен?
Почему нельзя выкинуть гил и сделать как в каком-нибудь Го? Все вокруг да около танцуем, асинхронность, мультипроцессинг, хуйта всякая. Четко и ясно давайте.
>>526608 >None object is not callable ;) Да, идея со своей реализацией стека была говнокодием. И ноны эти бессмысленны. В свое оправдание могу сказать, что подсмотрел ее в книге по алгоритмам и в пакете реализовал не подумав. >Зачем тогда он был нужен? Ради возможного расширения в будущем. Но в большей мере потому что я плохо ООП чувствую, где нужен класс, где нет. До этого на гошечке писал (да и продолжаю), а там классов нет, только стракты и методы к ним. Вот я и пытаюсь классы как простые стракты использовать. Зра, наверное. В общем, переделаю все. Спасибо за критику.
({a,b}, {e,d}, {a,e}, и так далее и тому подобное ) нужно объеденить пересекающиеся сеты получить нужно вида {a,b,e,d,c} проблема для меня в том, что первый и второй непосредственно не пересекаются, поэтому последовательным объединением решить не могу
или вот еще вопрос: если я в таком виде прохожу, скажем, по листу, то на самом деле я ведь прохожу не по самому листу а по копиям незаметно сделанным специально для итерации и таким образом не выходит сделать изменения собственно в оригинальном листе. Все ли я верно понимаю и что делать?
for i in list_1: ....for j in list_1: ........if i==j: ............i+='abumudak' # у меня не работает print(list_1) #выводит оригинальный лист без изменений
>>526635 Тоже говнокод. >>526920 Ну давай разберем по частям тобою написанное. 1. Стек уже есть в стандартной библиотеке - collections.deque. Настоящий стек, со всеми вставками-удалениями за O(1), как положено. 2. Вот ты импортируешь signal и дальше какие-то обработчики ставишь. Ты ведь понимаешь что ты полез в низкоуровневое байтоебство? В то самое, где например close может вернуть EINTR (а питон это выдаст как исключение InterruptedError) что означает "системный вызов был прерван сигналом, надо повторить", но при этом конкретно в случае close файловый дескриптор уже был закрыт поэтому несмотря на EINTR повторять его нельзя. Не надо пытаться хуярить системное программирование тебе пока. 3. Если код уже установил обработчик сигнала через signal, то ты его успешно проебал. signal.signal при вызове возвращает либо старый обработчик, либо SIG_IGN, т.е. что сигнал надо проигнорировать вообще, либо SIG_DFL, то есть стандартное поведение ОС, либо самый хуевый случай - None, что значит "старый обработчик был установлен сишным кодом и теперь хуй ты его вызовешь". 4. SIGHUP нет на Windows, поэтому ты получишь AttributeError во время инициализации. 5. Выходить с кодом ОК по SIGINT/SIGTERM так-то неправильно. Явно же не ок нихуя.
>>526916 Потому что гил значительно упрощает интерпретатор. Честная мультитредность штука вычислительно дорогая, а питон итак медленный. Ну и есть PyPy в котором пилят STM, там уже всё без гила. Субъективно работает действительно живее, раза в 2-3, за счёт jit, но заметны сборки мусора, в итоге что-то вроде жабы получится. Если не смущает привкус жабы, то жди @ помогай напиливать. Запиливали ещё stackless, вроде бы тоже избавление от гила, только на существующей кодобазе cpython, но что-то интерес потеряли. Наверное нахуй никому оно на самом деле не нужно. Всем срать на гил.
>>526979 >1 В этом случае у обычный лист можно использовать. У его методов pop и append тоже временная сложность константная. А в начало мне записывать/удалять не нужно. >3 Это так, но тут предполагается, что в коде нет других обработчиков сигналов. Можно это прописать в README. >4 На виндоус я и не рассчитываю, не вижу смысла - это как писать версию мобильного предложения под виндофон. >5 Выход из программы по Ctrl-C - это вполне обычно дело, разве нет? Много где используется именно с тем смыслом, что все ок. >2 А вот это правда, и тут нечего сказать. Наверное, действительно зря полез в байтоебство, да еще и с питоном, который не для этого. Даже не знаю, что делать. Хочется написать что-нибудь более практическое, чем учебные реализации структур данных и алгоритмов, но ничего в голову не приходит. не борду же очередную пилить.
>>526964 Тебе set([a,b]+[e,d]+[a,e]) нужно или что? Откуда там "с" вылезло в примере? Кака разница, последовательно они идут или нет? Или тебе не все вместе, а по группам их как-то объединить нужно?
>>526968 Никаких копий не создаётся. Дело в том, что string в питоне — immutable. И вот это i+="..." не изменяет элемент массива, а, фактически, присваивает локальной переменной "i" новое значение. i — это всего лишь ссылка на объект, а не сам объект. Поэтому когда ты пишешь "i = ...", ты не объект меняешь, а ссылку. Будь у тебя в списке mutable элементы и соответстувющие функции в лупе, всё было бы норм: l1 = [[1,2],[3,4]] l2 = [[3,4],[4,5]] for e1 in l1: for e2 in l2: if e1 == e2: e1.append(5) print(l1) # -> [[1,2],[3,4,5]]
Так, посоны. Вроде на asyncio как бы даже сервер делают. Значит ли это что он подходит для задачи "качать файлы из интернета и записывать их на диск"? Если да, то хоть какую подсказку дайте как записывать файлы. Как качать более менее понятно.
Нужно складвать пересекающиеся сеты до тех пор пока не останется пересекающихся ({a,b},{e,d}, {a,e}, {z,x}) в этом примере [0] и [2] пересеаются, если мы их сложим(допустим при этом удалив исходные сеты, хотя это не важно) ({a,b,e},{e,d},{z,x}) теперь пересекаются 0 и 1, после сложения: ({a,b,e,d}, {z,x})
Чтото мне подсказывает что это можно сделать в одну строчку, без ебли с итерациями.
Суть его проста - выбираются из папки все видосы заданного формата (mp4) с высотой кадра больше 540 или шириной больше 700 пикселей, после чего к ним применяется фильтр пропорционального уменьшения в размер не превышаюсь обозначенных значений, а результат сохраняется в x264/mkv.
Быдлокод максимальный, т.к. в питоне я не понимал ничего ни тогда, ни сейчас. Помогите, пожалуйста реализовать следующее - вместо одного формата mp4, нужно чтобы скрипт обрабатывал за один запуск файлы из папки сразу 3х форматов - avi, mp4, wmv. Благо поддержка CLI теперь просто заебательская и никаких вылетов на середине вроде бы больше нету.
>>527075 Без понятия, как именно там работает get_folder_content(), на самый просто способ, наверное: exts = ['avi','mp4','wmv'] filelist = [] for ext in exts: filelist += get_folder_content(folder, ext)
И сразу возник вопрос и у меня. Если есть некая функция func, возвращающая список, то генератор список вернёт список списков: my_list = [func(x) for x in some_list] my_list = [[...],[...],...] Можно ли как-нибудь в ту же одну строчку (т.е. не так, как я выше указал) сделать так, чтобы my_list был именно списком элементов всех списков, которые возвращались функцией func? Проще говоря, как реализовать то, что я посоветовал выше через генератор списков?
Нахуй classmethod? Доп запрос жи. А даже если через classmethod, то можно через filter и update, шобы один запрос был: ...filter(pk=pk).update(F('popularity')+value)
Как в джанге добавить файл в модель с полем FileField из памяти? Например, я помощью urllib скачал что нибудь прямо на сервере и хочу добавить в бд. Но если я сохраню файл на диске, то джанга еще его перетащит в свою MEDIA_ROOT директорию. А копировать сразу в джанговский путь не очень надежно как я считаю - можно же ошибиться и записать не туда и опять будет копирование. Нужна помощь.
>>527143 Но вообще сама джанга большие файлы при загрузке пишет в /tmp и оттуда уже перемещает в MEDIA_ROOT потом. Если она делает mv, и это одна файловая система это моментальная операция. Вот ещё ссылка по теме http://www.revsys.com/blog/2014/dec/03/loading-django-files-from-code/ Просто делай так как там, не парься.
>>527088 Ну так это и спрашивай тогда. Вот я тебе накалякал тут примерчик, может поможет: http://ideone.com/jWM9r9 (лучше скопируй и локально запускай, чтобы риалтайм — наглядней) Time-consuming task, очевидно, будет скачивание файлов. Правда, почему бы не записывать в файлы сразу же в корутинах? Тогда и результат корутин не нужно получать. Там ещё asyncio.Future() для этого, в принципе, есть (включая проверку на завершение корутин, я так понимаю).
>>527139 Ёбушки-воробушки. Никто в здравом уме сам отступы не расставляет. Будешь каждый раз таб херачить или 4 пробела считать что ли? Не нужно быть таким упоротым. Возьми нормальный редактор кода, например Sublime Text. Он сам будет отступы расставлять и не нужно будет париться вообще на счёт их.
>>527057 >Чтото мне подсказывает что это можно сделать в одну строчку, без ебли с итерациями. Обоснуй @ докажи. Рассмотри частный случай, когда изначально все множества состоят из 2 элементов. По сути тогда они задают последовательность объединений для системы непересекающихся множеств, которая нихуя в одну строчку не реализуется.
В джанге пишу db_index=True, но смотрю базу в другой программе и она пишет, что только один индекс на айди. Почему так? На sqlite у меня все пока. Алсо, unique=True подразумевает создание индекса?
>>527579 >Note that when unique is True, you don’t need to specify db_index, because unique implies the creation of an index.
>Почему так? Ты db_index добавил уже после того как syncdb делал и таблица в базе была создана? Может тебе миграцию сделать?
>sqlite не советую ей пользоваться там многое эмулируется в коде потому что таких фич нет в базе данных. например целостность всяких foreignkey эмулируется в коде.
Можете, пожалуйста, подсказать по правилам хорошего кода? Вот у меня есть класс, часть полей инициализируется в __init__, часть в каких-то других функциях.
Pycharm грит, что плохо брать и не упоминать поля в __init__, а создавать их в другом месте. В принципе, замечание логичное, хочется, чтобы все поля были в одном месте.
Инициализировал их None. Но теперь проблема в том, что каким-то полям я присваиваю callable-объект, а потом Pycharm начинает ругаться на "fieldName is not callable", что меня не устраивает.
Так, все же, как принято инициализировать поля объекта класса, а?
>>527654 Ну а вот так он говорит, я откуда знаю? Ну обосновать такие замечания я могу, >В принципе, замечание логичное, хочется, чтобы все поля были в одном месте. Но вопрос как раз в том, как это обычно делают
>>527660 Ну, грубо говоря, есть библиотека (называется theano), которая берет какие-то символьные выражения, оптимизирует их и компилирует в машинный код. Возвращает callable-объект. Именно этот объект у меня хранится внутри экземпляра моего класса. Причем так получается, что нельзя эту функцию построить на этапе инициализации объекта ну можно, конечно, но выглядеть это будет дико
Я понимаю, что полностью подчиняться требованиям IDE не очень правильно, но ведь наверняка все такие предупреждения не просто так же
Потому что все методы твоего объекта можно вызвать снаружи. Где гарантии, что при вызове какого-то из методов был вызван другой, в котором была инициализация поля?
В скрытые методы инициализацию подкапотную вынеси и пучарм перестанет пиздеть, да и сам красавчиком станешь баразарю
>>527746 Что ты имеешь в виду под подкапотной инициализацией? Ну, грубо говоря, у меня вот есть нейронная сеть, есть слои нейронной сети, для того, чтобы слой полностью проинициализировать, мне его надо подключить к предыдущему.
Я могу сделать что-то типа Layer3(Layer2(Layer1))), но это выглядит как-то убого. Проще и красивей выглядит такая штука: network.add(Layer1) network.add(Layer2) network.add(Layer3) network.build(), внутри этой вот фунции я беру, итерируюсь по слоям, вызываю у каждого слоя метод connect, передавая ему предыдущий.
Понадобилось тут формочек нарожать (пока вижуал студию качается), решил попробовать этот ваш куте. И вот вопрос - а чем, собственно, всякие PySide и PyQt отличаются-то, что друг на друга люди срут? Из того, что у видел за 10 минут - разница в импорте библотек, а дальше всё одно и тоже: заменил from PyQt5.QtWidget import звёздочка на from PySide.QtGui import звёздочка и пример спокойно запустился. Так вот, если не видно разницы, то зачем платить больше думать над выбором?
Подскажите годной литературы уровня ммммаксимум эксперт по самой современной версии питона (3+) Если конкретнее, хочу уметь следующие темы: √ то, что должен знать каждый питонист √ все "особо продвинутые" хаки и метапрограммирование √ как максимально удобно писать в функциональном стиле √ маст-хев библиотеки, в том числе встроенные
желательно по-минимуму воды и совсем нубской инфы для тех, кто изучает питон как первый язык — это не мой случай. заранее спасибо :з
Ребят, я написал штуку которая берёт две веб страницы, в них ищет определённые теги и если они есть выводит сообщение. Все бы хорошо, но оно очень медленное, если к этим двум линкам добавить ещё пять то результата я дождусь примерно через 19 секунд. Как оптимизировать? Код: http://pastebin.com/neyqEnRZ
>>528118 Зачем работать на хохла тем более удаленно? Хохлы ражные будут мало платить, а напрягать дофига. Перепродают твою работу на аутсорс наверняка всё равно, потому что своих айти проектов у хохлов нет. Так почему бы напрямую на пиндосов не работать? Тем более знание ангельского и у хохла требуется.
>>528118 >куда ты хочешь пойти работать, лол. если я тебе молочко с супом сфоткаю, твоя попка выдержит? Или ты просто воспримешь критику и начнешь адекватно подписывать ссылки, если они токсичны?
>>528141 Я тебя нихуя не понел. Какое молочко, какой суп, ты ебанутый? Можешь что угодно фоткать, я разрешаю. Токсичные ссылки у него. Реддитодебил, это ты?
>>528239 >>528334 У школьников батхерт что они выучили троечку потому что ЦЫФЕРКАЛЬ БiЛЬШЕ а её никто в продакшене не использует и не собирается. Её только в уроках для студентоты освоили.
>>528684 Вообще-то только их сейчас и делают: >Python 2.7.10 is a bug fix release of the Python 2.7.x series. >Python 2.7.9 is a bugfix version for the Python 2.7 release series. >Python 2.7.8 This release includes regression and security fixes over 2.7.7 >Python 2.7.7 This is a regularly scheduled 2.7 series bugfix and includes numerous bugfixes over 2.7.6. >Python 2.7.6 was released on November 10, 2013. This is a 2.7 series bugfix release. >Python 2.7.5 was released on May 15, 2013. This is a 2.7 series bugfix release. >Python 2.7.4 was released on April 6, 2013. This is a 2.7 series bugfix release. >Python 2.7.3 was released on April 9, 2012. 2.7.3 includes fixes for several reported security issues in 2.7.2
а закончат в 2020: >Being the last of the 2.x series, 2.7 will have an extended period of maintenance. The current plan is to support it for at least 10 years from the initial 2.7 release. This means there will be bugfix releases until 2020. >This means there will be bugfix releases until 2020.
>>528694 Как видишь они считают это bugfix-release. Которые прекратятся после 2020. Но ты с темы не утекай. После 2020 делать то что со своим легаси будешь?
>>528692 Да никаких, просто некоторые лелки вдолбили себе в голову бред уровня "говно мамонта = багов нет" и ставят на сервера всякие дебиан-стейблы с центосями. Как будто баги выветрились за 10 лет.
>>528698 > Да никаких Многие библиотеки до сих пор только под двойку. Где мой twister? Даже из всяких мелких примочек для джанги только треть работает под тройкой, хотя их-то легко было бы портировать. Про pypi я вообще молчу.
Может быть новый проект я бы и начал на тройке, может быть. Но старые никто на тройку переводить не будет просто ради тройки. >сервера всякие дебиан-стейблы с центосями Ты нихуя не шаришь, там стабильная версия софта, так что при обновлении у тебя нихуя не сломается из-за несовместимых api и прочей поеботы. Но секьюрити фиксы все туда портируются, у редхата этим занимается специальные люди.
>>528702 >Но старые никто на тройку переводить не будет просто ради тройки. Как и никто не будет портировать новые фичи из тройки в двойку. А потом и на багфиксы забьют. Вот и думай кто больше соснул, твое легаси без языка, или язык без легаси.
>>528707 Я просто подожду пока появиться что-то пиздатое на python3 что будет оправдывать переход. И пока больше либ поддянеться. Пока что это только asyncio, если делать проект с ним, то конечно есть смысл тройку использовать.
>>528702 Откуда такая уверенность что множество Py3 пакаджей полностью включено в Py2? Немало нового и интересного запилено уже начиная с тех же asyncio и aiohttp.
Хорошая у вас шапка треда, вот только там не сказано, как мне совсем нюфагу стартануть, я не про книги и прочее, я про то что мне нужно скачать сам питон с оффсайта, установить его? как в нем работать дальше, что, где. Вот это все.
>>528742 В линуксе он установлен по умолчанию. В венде да скачать с python.org запускаешь idle и можешь вводить команды и сразу видеть результат. Можешь поставить какую-нить IDE типа pycharm потом вбивать там код и запускать прям оттуда.
>>528742 Потом там есть ссылки на всякие онлайн курсы, в них и объяснено что делать ньюфагу. И вроде там вообще ничего ставить не надо, можно вбивать код по мере обучения в окне браузера прям.
Спасибо ребят. Еще такой вопрос, все эти курсы наверняка с разным уровнем вхождения(или нет) есть совет, какой подойдет для человека который никак вообще не связан с программированием?
Я прсто инженером работаю, и на теперешнем месте у меня довольно много свободного времени, вот я и подумал - почему бы и нет.
Стартанул, по урокам, делаю хелловорлды естественно...
Обратите внимание на скрин. Стандартный шелл, писать черным на белом у меня вытекут глаза, поменял фон на серый, но у текста все равно белый фон - выглядит пиздецово, читать неудобно. В нотпаде все ок, тут и говорить нечего, но из нотпада я не могуили могу? запускать свой код сразу, как я это делаю в шеле. Задача: Или напердолить шелл до удобоваримого состояния, или я даже незнаю что. Нужно чтоб глаза не уставали, и выглядило все приятно для глаз. Если это будет что то стороннее, чтоб синтаксис подсвечивался.. ну вы думаю поняли о чем я. Скорее всего конечно, делать что то с шелом, потому что нужна возможность запускать код сразу же.
>>528782 Вот ещё вариант поставь http://sourceforge.net/projects/console/ И запусти python.exe из c:\python или где он у тебя там. Можешь конечно в обычном cmd.exe запустить ,но эта console вроде лучше.
>>528702 >Где мой twister? Твистер? >Даже из всяких мелких примочек для джанги только треть работает под тройкой, хотя их-то легко было бы портировать Это все аргументы того же уровня, что и когда с шиндовс 7 с хп переходить не хотели. Мол, "пок-пок мой кейлоггер от васяна на 7 не заработает". Не знаю как там на джанго пакаджес, но на pypi любой хуй может свою лабу1 загрузить, в результате 90% пакетов абсолютно бесполезны. Я уж не говорю о том что если либу даже не пытаются портировать на питон 3 то она скорее всего не поддерживается совсем, а использовать неподдерживающиеся либы это идея невероятно хуевая.
>>528809 Да мне вроде тоже хватает. Я вообще с джангой в основном работаю, вот там пишут что какая-то улучшенная поддержка джанги, но в чем? Надо попробовать будет триал всё-таки.
>>528897 > Select «File» → «Import Setting» from the main menu and follow the instructions. After the IDE restarted go to the Preferences, expand «Editor» → «Colors and fonts» tab and choose the installed theme. В глаза долбишься?
>>529012 Мне хватило прочитать туториал по питон и джанге чтобы что-то начать лепить на них. Потом уже книгу почитал по питон чтобы детальней вникнуть. Правда я знал php.
Пытаюсь к словарику создать второй словарик, в котором бы values из первого словарика стали key, а key - соответственно values.
Столкнулся с такой хуитой, что в первом словарике 38 слов, а второй словарик на последнем прогоне содержит 37 слов. Явно, что какая-то шляпа связана с тем, что индексация идет с нуля.
Но все равно не пойму причину: В последнем прогоне len 37, это значит порядковый номер икса 36. Последний возможный порядковый номер икса 37, какого хуя оно не идет на еще один круг x += 1?
Рандомно генерит key из словарика, загадывает загадку. Но проверку равенства инпутного пользователем m и d[key] код фейлит. Пробовал вариант if m in d[key], if m == d[key], if d[key] == m. Нихуя.
>>530167 Корутины не занимают потоки, поэтому делать пул не из чего. По сути ты просто ограничил количество одновременно работающих задач, что можно было и семафором сделать. http://ideone.com/DjYcMD
>>530181 >>530172 Ну мне надо ещё распределять задачи по определённым слотам с данными, а не только ограничить количество. Грубо говоря, если только три лошадки, а нам нужно по очереди на них наездников сажать когда те сделают по кругу.
Хм. Может и правда на семафоре переделать. А то я как-то глянул, но почему-то отбросил такой вариант. И если честно долго врубался чем корутины от фьючеров и тасков отличаются.
>>530258 >Ну мне надо ещё распределять задачи по определённым слотам с данными Создай очередь из этих слотов и вместо print('+ task') и print('- task') доставай элемент/клади обратно.
Есть один сервис хранения текстов и фотографий. Просто выдрать ссылки на фотографии на нужной странице мало и это я уже сделал. Дело в том, что помимо тех фотографий ссылки на которые указаны, хостинг хранит и те фотографии ссылки на которые не публикует. Т.е., опубликованные ссылки могут быть вида: 1.jpg 2.jpg 5.jpg 9.jpg и т.д. При этом файлы с именами 4, 6, 7, 8 существуют и их надо выдрать. Проблема осложняется тем, что файлы могут содержать буквы, подчеркивания и тире. Т.е., быть формата (буквы)_(цифры)-(буквы)(еще цифры). При этом заранее неизвестно какая часть изменяется - изменяться могут буквы от a до z или цифры по порядку. Так вот как сделать проверку какая части изменяется и высчитать те имена, которые не опубликованы? Я пока все это вижу адским количеством циклов, проверяющих каждый элемент имени файла на то является он инт или стринг, потом объединяющий элементы по типу если они идут друг за другом, сравнивающий с предыдущим именем, высчитыванием разницы и т.д. Короче, это должно решаться как-то сильно проще. Вопрос в том как?
Вопрос второй: у нас есть цифры 1, 2, 3 и т.д. Мы их можем отсортировать и посчитать разницу между первой и второй, второй и третьей и т.д. Как сделать тоже самое для букв? Т.е., не для 1, 2, 3, а для a, b, c и т.д.?
Вопрос третий: как указать куда скачивать файл? Скачиваю так: image = urllib.URLopener() image.retrieve(img, filename) Как указать путь куда скачивать и создать папку при необходимости не нашел. Скачивать в папку с питоном желания нет совсем.
>>530310 1. Ты хочешь узнать неизвестное рандомно сгенерированное имя файла? Дай хотя бы примеры имён, что ли. Но если там исключительно символы на определённых местах (последовательно) меняются, то зная имена отображаемых, можешь индексы различающихся найти: nms = ['ab_cy_4-eg','ab_cz_4-eg','ab_da_4-eg','ab_db_4-eg'] diff_indices = [i for i in range(len(nms[0])) if not all(name == nms[0] for name in nms)] # [3,4] Ну а дальше только перебор, чего ещё тут сказать-то. 2. ord('c') - ord('a') ну или : import string letters = string.ascii_letters difference = letters.index('c') - letters.index('a') Если тебе в обоих регистрах нужно и не хочется связываться с тем, что между строчными и заглавными буквами в ascii идут ещё символы некоторые (ord('A') - ord('z') != 1). 3. Ну, ээ, а параметр filename для чего, по-твоему?
>>530365 >Ты хочешь узнать неизвестное рандомно сгенерированное имя файла? Нет, имя дает пользователь, а потом грузит на хостинг. Так вот часть файлов просто не публикует. >Дай хотя бы примеры имён, что ли. Обычно это просто цифровая последовательность от 0 до n. Но бывают и такие: img_6563-001 img_6568-001 img_6573-001 Бывает последовательность от a до z, где символы меняются. Сейчас уже не найду - бывает редко, а массив большой. >nms = ['ab_cy_4-eg','ab_cz_4-eg','ab_da_4-eg','ab_db_4-eg'] >diff_indices = [i for i in range(len(nms[0])) if not all(name == nms[0] for name in nms)] # [3,4] Не совсем понял, но попробую разобраться. >ord('c') - ord('a') Я этого даже не знал. Сейчас почитал и правда, обратно переведу char(). Удобно. Про второй вариант тоже не догадывался. >3. Ну, ээ, а параметр filename для чего, по-твоему? Я думал он для того, чтобы сохранить файл под нужным именем. Благодарю. Заодно про os.mkdir() узнал.
>>527962 >checkio Охуеть, в первой же задаче цикл for element in data выводит 6, сука, значений, когда список передан из ПЯТИ значений, ПЯТИ, КАРЛ! Нахуй и в пизду.
>>530372 Там с первым ответом кое-что не так пошло, так как макаба индексы за курсив приняла, лол. (Надо было не i использовать.) Вот — http://ideone.com/xPOVMm Это при условии, что изменемая часть целиком число и все цифры стоят рядом друг с другом.
Реквестирую список современных средств разработки для питона. Например: 1) Что используется для тестирования. 2) Что для отслеживания покрытия кода тестами. 3) Автоматическая сборка. 4) Как обновляют питоновскую десктоп программу. Может еще что интересное.
У меня всегда была проблема с лаконичным названием переменных. Вот как называть класс, который содержит список однотипных объектов? И еще и создает сам эти объекты? ObjectFactory? А как нибудь человечнее? Тем более что он не совсем сам создает эти объекты, а делегирует процесс создания другому классу.
>>530585 1. Это формат принта второго питона, в самом питоне к переменным не по % обращаются. 2. Я спрашивал про баш. Дважды. Раз ты линуксоид, ты мог написать mv script.py script.pyt, но ты выдумал какой-то адский велосипед с процентиками в стиле cmd.exe и cловом "переименовать". В баше кстати по $ 3. Ну и да, >2015 >python2
>>530765 Инденты в питоне определяют область видимости и логические блоки кода.
for bla bla .. чота делаем .. break #будет внутри цикла
for bla bla .. чота делаем break #будет снаружи цикла, выполнится после завершения, но т.к. цикл уже закончился - выходить не от куда - пошлет нахуй.
В остальных языках на это можно забить, но в питоне это обязательная часть синтаксиса, чтобы такие как ты учились и не писали все подряд на первом уровне индента как на пикрелейтед. Потому что иначе хуй поймешь.
Знаешь, питонач, с одной стороны это круто, запилить нужный опенсорный проект. Но с другой это очень выматывает. Морально, а не умственно или физически. У меня внезапно оказалось чуть больше сотни звездочек на жидхабе, и люди уже во всю делают пулл-реквесты, пишут багрепорты, бегают туда-сюда, делают что-то, пишут мне. И все они накладываются друг на друга, и каждому блять надо ответить, пояснить или самому узнать/уточнить у него что-то. Для маминого хекки это пиздос как утомительно. Я уже жалею. Не надо было ничего делать.
>>530881 Что за проект? Давно программируешь? Можешь без ссылок если дианон-лигивон, на словах. Реально полезных опенсорс проектов за историю сосача и кодача было 2.5 пожалуй, а то и меньше.
>>530882 Деанон по гитхабу моментальный, лол, тоже об этом жалею. Проект - ничего интересного. Украл взял старую заброшенную линуксовую поделку, переписал, обновил с учетом всех модных изменений в линуксах, добавил мелких фич и красивенькую морду, вбросил на реддит. Таких возможностей по обновлению еще навалом если копнуть. Просто клад какой-то.
Так, скачал и установил ПиЧарм, сразу вопрос. Вот тут http://www.ideacolorthemes.org/home/ нашел темы для него, они в вот таком странном формате(пик1) способ установки с сайта(пик2) дает нам пик3. Вопрос, как что я сделал не так, тема же лежит там, значит с не все в порядке, как поставить то?
В сублиме выглядит конечно гораздо лучше, можно конечно руками все поменять PyCharm - но все же очень жаль, что я так и не понял как кастомные темs применять, там как раз есть тема SublimeText3
>>525512 (OP) Насколько уместно делать сайт на питоне? Это вообще реально? Если реально - какие плюсы и минусы по сравнению с другими вариантами, типа пыха?
Сайт без йоба нагрузки, обычный сайт для компании.
>>531109 Да, питон используют в многих крупных проектах как бэкенд. Изучаешь питон, осваиваешь джангу и делаешь сайты. Можно ещё фласк, но вакансий мало, зато для небольших сайтов ничего лучше нет, на своем опыте скажу. Курсы кодеакадеми за 1.5 дня + книга-гайд по фласку на 150 страниц + хтмлакадеми и можно делать.
>>531134 С кодом у меня все ок, спасибо. Я вижу ответа на вопрост у тебя нет, только пиздеть в состоянии - типичный сосачер. А чтоб код писать, нужно сперва сделать так, чтоб его было писать удобно и приятно.
>>531165 Ты задавал его не мне, поэтому я и не отвечал. Вопрос, если честно, дебильный. Анона выше утомляет пердолинг в фронтендом, вот и всё, поэтому он намекнул что если тебя это утомляет как и его, то не хочешь ли ты делать что-то другое, а не сайты. Как-то так пожалуй.
А по делу - пиздуй учить питон, вопросы он тут задает. Можешь и пхп, разница ровно нихуя, но питон не превратит тебя в такого говнокодера как пхп. Строже, проще, можно писать под все платформы, простые кодестайлы, тонны литературы для нюфаков
>>531155 Да никак не связано, тащемта. Просто он говорит что типа все так легко, просто взял за 1.5 дня и запилил. А на самом деле не легко, ведь надо преодолеть рвотные позывы при работе с фронтендом. Там та еще свалка копротехнологий, бэкэнд сказкой покажется.
>>531171 >если тебя это утомляет как и его, то не хочешь ли ты делать что-то другое, а не сайты.
Блин, я уже хуй знает сколько лет на C++ пишу, от драйверов до машинного зрения. Мне нужен сайт для собственного наебизнеса и все, а питон просто удобен для прототипирования матана, поэтому хочу, делая сайт, еще и в нем прошариться заодно.
>>531177 За полтора дня освоил. А делать он будет дольше, Лутца то можно и за вечер прочитать, но без практики это нихуя не стоит, поэтому и говорю - учишь базу и вперед, только практика, только хардкор, только стаковерфлоу и тупые вопросы. Добра.
>>531178 Ааа, епта. Я то думал ты нюфак очередной извиняй, кек. Ну смотри, если тебе по книгам удобнее там, вечерок почитать. Я бы взял Dive into Python на твоем месте, потом глянул мануал по джанге и всё сделал.
Да, с фронтендом будет геморрой, потому что там обычно начинается дрочево и всё криво. В JS треде есть Фленегана книга, она в целом отличный справочник, скачай и по ней смотри что и как.
Ну, с таким набором думаю всё без проблем сделаешь. Можешь конечно чисто через документацию, но мне например обычно проще прочитать книгу какую-то за вечер, а потом сразу за дело понимая в целом язык и его возможности. Можешь и на PHP, но там веб онли всё таки, но будет наверное даже быстрее на каком-нибудь Yii.
>>531178 Короче мне нужно что-то, чтобы быстро въехать в веб-разработку с моей базой, а не сидеть эти нудные лекции слушать или хз чего там на курсерах.
HTML, CSS я представляю что такое, делал плагин для браузера.
>>531183 > с фронтендом будет геморрой, потому что там обычно начинается дрочево и всё криво Там - это где? Во фронтенде в принципе или это как-то с питоном связано? Я так понимаю, что фронтенд от выбора бекенда никак не зависит - везде тот же самый HTML и JS. Или на питоне это все скрыто за какими-нибудь фреймворками и т.д.?
>В JS треде есть Фленегана книга, она в целом отличный справочник, скачай и по ней смотри что и как. C JS я уже сталкивался ранее, разберусь наверное на ходу.
Какие плюсы и минусы у питона в бекенда по сравнению с тем же пыхом?
По HTML/CSS тебе нужен CSS: The Missing Manual, там всё есть. Если сайт интерактивный, нужный перделки на JS тупой вопрос, конечно нужны, то Фленеган ОК. Не хочешь тратить на всё это говно время, а сразу за работу - тебе нужен htmlbook и MDN. Там просто охуительнейшая документация с примерами по всем вопросам. Чтобы не изобретать велосипеды и тратить на это время, бери Bootstrap и JQuery, чтобы без лишней траты времени всё сделать сразу. По Python смотри dive into python, если что-то поменьше и чтобы за часик, то byte of python. Если совсем мелкое - то документация. По Django - официальный мануал. Он в целом ОК и даст всё что надо. Тут ещё писали про его альтернативу, Flask. Так вот, Flask это микрофреймворк очень клевый. На нём ты сможешь быстро реализовать сайт, не тратя время на всякую магию джанги и поиски нужных решений. Годнота, глянь документацию, он простой как пробка. Там буквально на ходу чтения документации питона и фласка сможешь набросать простенький сайт, а дальше уже навешать перделок. Ну и потом сделать весь бэкенд нужной тебе сложности.
Про плюсы и минусы? Я бы не сказал что пых чем-то хуже для веба или лучше. Он просто популярнее, поэтому больше всяких CMS, фреймворков и других радостей. Синтаксисы всюду съедобны, особенно после С++ то лол, так что выбирай что больше нравки и пригодится. Всё таки питон скриптовый язык который можно всюду применить, а пхп весьма ограничен в этом выборе. Я бы лучше потратил время на змею, полезнее будет. Ну и да, если тебе интересны всякие машин лернинги и бигдаты, то тут уж точно питон идеально подходит.
>>531188 >то тут уж точно питон идеально подходит Вот поэтому его и выбрал, лол. Вопросы про пых просто для общего развития были.
Еще такой вопрос. У меня был когда-то скачанный сайт на пыхе, там был веб-сервер апач. Для .net есть IIS. А что выполняет роль веб-сервера для питона?
И еще поясни за хостинг. У меня тот сайт стоял прямо на компе с апачем у провайдера и там все было просто, а про внешний хостинг я вообще не знаю ничего. Зависит ли выбор хостинг-провайдера от языка реализации бекенда? Какой дается доступ к машине?
>>531190 Обычно берется впс с линуксом и ssh для доступа. Дальше у тебя полнейшая свобода действий, любой веб-сервер, любой язык бекенда, любой фреймворк.
>>531185 >>531188 Да, тебе хорошие вещи посоветовали. В общем смотри как можно быстро нашлепать сайтец. На бекенде python + flask. Создаешь rest api. Далее делаешь обвязку к rest api с помощью angular/backbone.
Мне такая модель построения приложений очень понравилась.
Поставил нормальные шрифты - пиШарм их не видит, все другте системные шрифты видит, рукалицо блять. Что то я уже заебался с ним, на первый взгляд нормальный инстркмент, а на дели все гвоздями приколочено и костыль на костыле.
Почему синглетон не рекомендуют использовать? Разве не лучше ли его взять для другого паттерна - медиатор? По-моему, он туда неплохо подойдет, если программе как раз нужно связующее звено в виде одного объекта.
Посоны, а как в логгерах обычно организуется запись в файл? При каждом новом логе открывается файл, аппендится, закрывается, или при запуске программы открывается и там уже будь что будет, если крешнется?
>>531362 Открывается при open, пишется в буфер энного размера (io.DEFAULT_BUFFER_SIZE), по переполнении которого идет flush на диск. Повторить до бесконечности. При закрытии тоже flush.
>>531364 Да, забыл. Закрывается только явно с file.close() и неявно с with open. Все остальное время файл держится открытым, посмотреть кто держит файло открытым можно например с /usr/bin/lsof ./logfile
Ньюфак, изучаю PyQt4. Сделал мейн виндоу, в нем график вью, в график вью положил сцену с парой линий и картинками. Как при изменении размера окна адекватно масштабировать нарисованное? Есть какое-то свойство, которое я не вижу или нужно руками делать ресайз ивент в котором пересоздать каждый элемент под нужный масштаб?
Запускаю notest локально из корня своего проекта - все работает отлично. Запускаю unittest через консоль - тоже. Отправляю на гитхаб и travis - пишет ошибку, что не может импортировать мои модули, которые я написал и которые друг друга там импортируют. Хз че делать.
Питоняши, выручайте. Раньше баловался с поиском яндекса, но он стал часто выдавать капчу, у гугла как-то всё криво, решил пересесть на альтернативные сайты. Выдает ошибку в ссылке, ибо вроде как urllib непонятным образом обрезает её.
Суп, пайтонач. Помоги, пожалуйста. Есть один сайтик на джанге, который является интерфейсом к python-демону, работающему на сервере. Хочу чтобы приложение брало настройки из бд, которые туда записываются из веб-интерфейса. Весь гугл перерыл, но не смог найти ответ на интересующий меня вопрос: можно ли использовать одну бд для их связи друг с другом? Может есть более простые общепринятые решения? С меня как обычно.
>>531947 И вообще когда ты юзаешь django с sqlite это может привести к проблемам всяким. Дохуя функционала не поддерживается на уровне бд и эмулируется в питон коде - связи, контроль целостности и т.п. Даже типа данных в sqlite есть только text и int, остальное эмулируется. Например у меня есть сайт с sqlite его на другую бд уже так просто не переведешь - дохуя ошибок всяких вылазит. Юзай постгрес.
>>531969 У постгрес намного больше фич и производительность сейчас лучше. Я код качественней судя по автоматическим тестам всяким. Мускуль имеет смысл брать если ты очень хорошо знаешь его особенности и поведения и умеет оптимизировать под мускуль всё имхо. > И да: смогу ли я использовать разные орм для одной бд? Да, почему нет. Ты можешь и django orm/модели использовать со своим демоном тоже. Можешь sqlalchemy какой-нить прикрутить.
Как в tkinter в виджете Text табы отключить или на пробелы заменить. С помощью .bind() перехватываю нажатие <Tab>, но печатает сначала 4 пробела, а потом таб.
>>532119 Не надо изменить список ходу итерирования по нему. Если ты напишешь for x in list(new): То всё будет окей. А вообще return ''.join(x for x in text if x not in 'aeiouAEIOU') Или import re re.sub('[aeiouAEIOU]','','testeeOO')
Идя сначала мы удаляем элемент, изменяем len, упускаем из итерации n элеменов, которые удалили. Пилим сук на котором сидим. Идя с конца мы уже идем со стартового, максимального len до нуля, и удаление нам ничего в итерации не ломает. Пилим сук перед собой.
А с копией листа можно соснуть если он оче большой.
>>532148 Твой пример кода хуев. Во-первых ты итерируешься по range то есть по копии l во втором случае Во-вторых, range создает список с нуля по len(l) а l у тебя с еденицы.
>>532151 >ты итерируешься по range то есть по копии l во втором случае >по range то есть по копии Чего несешь, ебанутый? Во втором случае копия листа НЕ делается. Делается список с индексами, с циферками от нуля до len(l)-1, потом на него кидаем реверс и идем от len(l)-1 до нуля, удаляем из листа по индексу. Такой список в дохуя раз легче чем копия листа из которого удаляем. Там хуй знает что может быть, сотни сотен данных.
>l у тебя с еденицы. Какая нахуй разница с чего начинается l? Я на рандом вбил, ну вбей туда буковки, нихуя не изменится.
>>532160 > Во втором случае копия листа НЕ делается. Делается список с индексами Тогда и итерируйся в первом случае не по l а по списку с индексами. И будет однохуйственно
>>532166 Эмм ну да в данном случае да. Но вообще это хуевая идея удалять элементы из списка по которому как-то итерируешься. Лучше уж тогда что-то типа while l: dosomething(l.pop())
>>532170 Ну по сути мы итерируемся не по листу который меняем, а по его индексам, которые в отдельном листе даже не в листе, а "в" range, он не отдает листов. И если идти с конца то Все безопасно, размер листа меняется вместе с итерацией по листу индексов или не меняется вовсе и не может быть <i.
А обходить лист через while как-то странно, а если еще не до пустого листа то бряки всякие ставить надо, иначе бесконечный цикл. Геморрой. Я обычно через такую обратную итерацию делаю.
>>532171 С remove не покатит, он по value, а мы по индексу удаляем. Но суть близка жи.
>>532178 Вообще while True и break где-нить довольно часто попадается в коде. Иногда это удобней. grepнул /usr/lib/python - 654 раза while True попалось.
>>532184 Ну так то для других целей норм, а не для обхода листа. Мы то обходим. Длина листа известна, количество итераций чтобы его пройти равна его длине, каждый элемент смотрим один раз. Зачем там while true? Путает читающего только.
>>532186 Ну while lst: lst.pop() для обхода листа вполне норм если лист у нас что-то вроде очереди - надо доставать оттуда элементы убирая и обрабатывая.
>>532151 >range создает список 2015 на дворе, а они всё списки создают для итераций. Да и вообще, 50% что на скрине третий, а значит никаких списков range не создаёт.
>>525512 (OP) help. Pycharm наебнулся. любая прога кончает с надписью в консоли Process finished with exit code -1073741511 (0xC0000139). гуглъ не помог. новыйпроект вклвыкл комп и т д не помогли. щито
>>532263 Print debug в помощь. Узнай сколько раз и с каким commit вызывается твой save. Узнай что такое этот user, не факт что это модель. Ну и в конце концов лучше не выёбываться и сделать по туториалу.
form = PartialAuthorForm(request.POST) author = form.save(commit=False) author.title = 'Mr' author.save()
>>532263 Во-первых, у тебя нет ни одного инстанс атрибута нет, всё классовое. Так и задумано? Во-вторых, как ты вызываешь супер с RegistrationForm в качестве аргумента если Meta не является подклассом этой самой формы? Как это вообще не крешится? В-третьих, судя по формату супера, ты используешь второй — а это значит, что от object наследуй классы, а не просто "class Meta:". Вангую, что сейв ни разу не вызывается. Да и где он, собственно, вызываться-то должен?
>>532325 Ты ожидал от российского ойти-образования чего-то другого? Хорошо что питон вообще есть. Обычно это бейсик, делфи и насилу пропихнутый маркетолухами сисярп. По выпуску человек умеет только формочки мышкой составлять и хелловорлды из трех строк писать. А потом такие приходят в зк и шутят про >мы вам перезвоним
Хеллоу. Начинаю учить пихтон по вот етому сайту: http://pythonworld.ru/samouchitel-python Однако, я нихуя не понимаю. Про какие-то там циклы, какие-то переменные, вообще охуеть. Есть более удобный самоучитель? Чтобы прям вообще для ламера. А то там, я как понимаю, для тех, кто хоть что-то знает хотя бы по другим языкам. Или может есть анон, который поможет мне в скайпике с этим? Будет моим наставником так сказать, пока я не начну разбираться в этом.
>>532407 Антоша, если ты тут, поясню это справочник для тех кто уже гуру в проге и просто хочет освежить в памяти или понять вещи относящиеся конкретно к пистону, или дрочи Лутца или курсы, как тебе уже советовали.
>>532420 >>532450 Лутца уже читаю, да, просто подумалось, што с сайтами быстрее будет, и што его, Лутца, будет мало. Но таки спасибо, буду тогда дальше его читать. А то мой лвл совсем мал. Ухожу-ухожу с этого треда
Прошлый:
Слоупокам напоминаю, что в 2020 заканчивается поддержка второго питона и пора бы переходить на третий
http://legacy.python.org/dev/peps/pep-0373/