Я решил замутить свой класс. В конструктор этого класса передаю токен, в конструкторе создаётся экземпляр бота, копирую в тело классо метод из примера выше и питон начинает ругаться на декоратор @bot.message_handler(bla-bla), дословно "name 'bot' is not defined'. Как заставить эту хуйню работать?
Кто нибудь работал с socket через ssl? Меня ssl.wrap_socket нахуй шлет когда я пытаюсь его как прокси использовать. Возможно вообще человеческий прокси с поддержкой https на сокетах в питоне захуярить? Без basehttpserver только, он ебанутый какой то
>>1141266 Это у тебя в программе так выглядит, как декоратор. Но на самом деле, когда ты получаешгь данные с сокета, это TCP-пакеты. Тебе нужно их расшифровать своим SSL, разложить на сообщения протокола HTTP или иного. Кстати, прокси с поддержкой TLS отличается от обычных поддержкой METHOD CONNECT в придачу к GET. Может из-за его отсутсвия не работает базовый прокси.
>>1141247 https://pastebin.com/ZrBCCN4i Паста протухнет через день Пробовал и @self.bot и поле класса bot = None и bot = telebot.Telebot, что довольно тупо, даже я это понимаю, но что ещё сделать, я хз.
>>1141205 (OP) Аноны, подскажите годный материал по selenim w python, хочу вкатиться, но пока, кроме документации и сомнительного качества видеоуроков, ничего не нашел.
>>1141342 Потому что для этих целей нужен простой язык, на котором можно написать тесты быстро. Скорость их выполнения тестовых скриптов не критична, т.к. они все равно не продукт для рынка. Помимо питона еще используют javascript.
Написал скрипт, задача которого состоит в том, что он имитирует нажатие клавиши W. По итогу все работает отлично, проверил работоспособность в блокноте. Задался вопросом, можно ли как нибудь ограничить круг работы скрипта? В данный момент, если переключиться с блокнота на адресную строку браузера он пишет букву W уже в адресной строке. Хотелось бы, чтобы скрипт продолжал спамить букву в блокноте, в то время, как я смотрю смешные картиночки в интернетике.
1) Как в Spyder включить автоподстановку переменных без нажатия tab/crtl+space (например, в Sublime список вылезает автоматически)
2) Есть удобный, желательно, англоязычный сайт с референсами? inb4 доки питона https://www.w3schools.com/cssref/default.asp Вот такого плана сайт, чтобы я мог просто и без задней мысли пробежаться по синтаксису питона.
>>1141496 В динамической типизации, например. Ты можешь складывать целые и дробные числа без ошибок. Память под переменные выделяется на лету, их не нужно декларировать как в языках более низкого уровня.
Поясните за request.body vs request.POST? Пришел на существующий проект, а тут инфу достают из request.body вот таким вот методом json.loads(request.body.decode('utf-8')) Данные получают от мобильного приложения, там в данных лежит токен от фейсбука и айди, тут же нахуй не нужно использовать request.body, правда? При этом, если айосеры шлют реквесты, то всё работает, а вот я через постман, курл ловлю ошибку (через request.POST всё норм.) json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Кароч, есть PostgreSQL и Python Делаем запрос Select и получаем ответ cursor.fetchall(), то он возвращается в говнолисте , где вся выборка в нулевом индексе списка Как можно по человечье это всё выводить?
Через регулярные выражения делал, но как то кончено у меня получилось, и то, что я сделал я обратно в лист загнал, но уже так, что бы смог по индексах доставать. Почему кончено? а потому что, пробел в моем новом списке, присутствуют пробелы.
Есть какое-то нормально решения этой проблемы? или же кто-то поможет с рег,выражением..
>>1141540 >вся выборка в нулевом индексе списка Потому что у тебя только одна строка в базе совпала. Вот когда совпадет много, ты будешь рад что каждая лежит в отдельном индексе.
Привет, ребята. Какие альтернативы принту есть в питоне? -"~rc()+=01exh% вот набор символов, кто-нибудь сможет из них составить из них эту альтернативу?
На связь выходит инженегр. Периодически по работе возникают локальные задачи, требующие автоматизации каких-либо вычислений. Для решения я пишу несложные проги и потом на них забиваю обычно навсегда. Всю сознательную жизнь быдлокодил на Матлабе (причём базовом) и он мне очень нравится, но есть 2 проблемы: 1) Он платный - на работе не поставить. Удалось втихомолку протащить его на незареганный ПК, но там 2 гига оперативы и встроенная видеокарта - в результате в комбинации с моим быдлокодом всё это люто тормозит. 2) Он не компилит в .exe - и всё, что я накодил, могу использовать только я сам на упомянутом слабом ПК. Кроме того, если я еду куда-нибудь в командировку нужно иметь с собой либо ноут с Матлабом или пиратский комп у тех, к кому едешь. Это очень неудобно и это главная причина, почему я хочу с Матлаба слезть.
Пробовал переползти на Фортран, но там всё пишется как-то значительно медленнее, пробовал C++ - но ничего не понял в этом вашем ООП и опять таки пишется значительно медленнее Матлаба, а начальство не ждёт.
И тут мне посоветовали Питон. Правильно я понимаю, что он идеально для меня подходит? У него похожий на Матлаб синтаксис и набор библиотек, которые практически теми же командами позволит мне строить 3d графики. Он имеет неявную типизацию, отсутствие которой меня очень раздражало в C++ и Фортране. Я ведь правильно использую терминологию - неявная типизация, это когда не нужно предварительно переменные объявлять, так? Компилятор сам типа решит. И он довольно популярен, в отличие от той же Julia, которая вроде бы мне должна больше подходить, но которая никому нахуй не нужна и русских гайдов потому на неё нет.
Но вот вопрос - а из Питона можно нормально (без изъёбств и костылей) делать .exe? Он же вроде интерпретируемый? Мне очень нравилось, как в Дельфи можно скомпилить прогу в .exe и запускать без проблем где угодно. Нужно ведь иногда показывать результаты труда начальству, а ставить что-либо даже бесплатное на ПК небожителя мне как-то не хочется.
И ещё один момент - мне также поставили задачу в свободное от работы время кек сделать довольно большую расчётную прогу с пре/пост-процессором. Это должна быть действительно большая и сложная прога (ну во всяком случае для меня, лол), но зато очень интересная. Возникают следующие вопросы - смогу я без изъебств написать нормальный графический интерфейс на Питоне? И не окажется ли неявная типизация при создании расчётного ядра запутывающим фактором? Но я так понял, для этого есть Cython - тот же Питон, но с явной типизацией? И из него можно будет загружать все те же библиотеки, что доступны для обычного Питона? Ничего не залагает?
>>1141665 1. В питоне нет компилятора, питон это интерпретатор, как бейсик. 2. Строить графики, вычислять и всё такое — всё есть: numpy, matplotlib, sympy, scipy. Насчёт 3d графиков не уверен, перепроверь. 3. Делать exe при особенном желании можно, но там изъёбства и костыли. Альтернативно ты можешь просто брать с собой портабельную сборку питона и запускать из cmd.exe/батниками python myscript.py. Алсо, учти, все библиотеки должны присутствовать, питон не зашивает в скрипт половину ОС. 4. Графические интерфейсы это отдельная боль, в целом всё то же самое что и в других языках, берётся биндинг и пишется как обычно для этой библиотеки гуй. 5. Насчёт типизации: она в питоне динамическая (переменные не имеют фиксированного типа), но строгая (сложить бульдога с носорогом нельзя). Обычно вопросы корректности программ решаются написанием автотестов. 6. Cython это изъёбство, его суть в том, что ты как бы пишешь обычный питон (который собирается в абсолютно идентичную бинарь как в оригинале, то есть выигрыша в скорости нет), но при этом можешь кое-где указать жёсткие типы (что собственно служит для ускорения и упрощения связывания с сишным кодом). Тебе это всё 99% не нужно.
>>1141674 >Делать exe при особенном желании можно, но там изъёбства и костыли. Давно у нас команда "pyinstaller --onefile app.py" стала изъёбствами и костылями?
>>1141678 Лол, столько же сколько и твоя экзешка. Ты думаешь там что-то другое внутри? Тот же интерпретатор, те же модули, и так же свалится если либ не будет.
>>1141680 Есть такой пакет анаконда. Весит порядка полугектара. Вот там кучи бинарных либ. Зелёные часто приходят ноют почему через pip у меня какая-нибудь хуйня не ставится. Потому что через pip ставится только мост, биндинг к большой бинарной йобе, которую надо ставить отдельно.
Представь что ты пишешь скрипт для 3д макса к примеру. Как белчеловек делаешь pip install py3dmax и ждёшь что оно тебе само скачает и купит ещё сам 3д макс, а при запуске закономерно обсираешься, потому что 3дмакса в системе нет. Вот и твой упаковщик не вставит в экзешку всё вместе с 3дмаксом и половиной ОС включая .net фреймворки, сервиспаки, C++ redist, directx. А ведь на другой системе этого может и не быть. Вы слишком много хотите короче. А эти экзешки это бесполезная хуетень и лишний груз, каждый раз её надо пересобирать.
>>1141674 >1. В питоне нет компилятора, питон это интерпретатор, как бейсик. А в википедии пишут, что: «Большое количество языков, включая BASIC, C, Lisp, Pascal и Python, имеют обе реализации». >3. Делать exe при особенном желании можно, но там изъёбства и костыли. Альтернативно ты можешь просто брать с собой портабельную сборку питона и запускать из cmd.exe/батниками python myscript.py. Алсо, учти, все библиотеки должны присутствовать, питон не зашивает в скрипт половину ОС. Блин, ну это очень плохо. Для моих локальных задач такой подход со скрипом пойдёт, но расчётную прогу я делаю для общего пользования и она должна работать везде одинаково и не требовать ставить какие-то непонятные сторонние проги. Я всё-таки не понимаю - ну ладно Матлаб, там всё понятно, там хотят денег и не хотят предоставлять нормальную возможность переноса программ на ПК без Матлаба. Но тут-то почему? Здесь же всё бесплатно. Почему нельзя сделать, как в Дельфи или Фортране? Раз и скомпилил. >4. Графические интерфейсы это отдельная боль, в целом всё то же самое что и в других языках, берётся биндинг и пишется как обычно для этой библиотеки гуй. Честно говоря ничего не понял, главный вопрос - на Питоне пишут такие интерфейсы? Я не окажусь в гордом одиночестве уникального долбоёба? Я найду русские гайды? Я ведь гордый русский инженер, я не знаю английского. Кстати, глядите, что я нашёл: https://geektimes.ru/post/284292/ У нас в отделе хорошо себя показывает связка C++ с высокоуровневым языком типа Python. Мы занимаемся как раз физическим моделированием. Идея такая: на C/C++ пишем вычислительное ядро программы. Всё остальное пишется на Python: I/O, пользовательский интерфейс, скрипты для запуска C++ ядра, всякие предварительные расчеты, пост-обработка данных и т.д. Этож как раз как я хочу. Только я и ядро напишу на Питоне. Значит так делают и это удобно? >но при этом можешь кое-где указать жёсткие типы (что собственно служит для ускорения и упрощения связывания с сишным кодом). Тебе это всё 99% не нужно. Я не уверен, но мне кажется, что если я жестко задаю какой-то переменной тип - то потом будет проще код анализировать и меньше ошибок будет, хоть это и дольше по времени из-за написания лишней писанины. Поправьте меня, если я ошибаюсь.
>>1141684 лол блядь Вообще не понял к чему ты сюда всякие директы и нет фреймворки приплёл, но дефолтный минимум библиотек и все зависимости для твоего проекта спокойно пакуются в экзешник, который в конечном итоге будет весить пару десятков мб в среднем. Мое говно с pyqt на 1к строк и десятком сторонних либ вышло в 15мб, спокойно работает и на дрыснятках и на семёрках и на виртуалках
>>1141687 1. В русской википедии по теме айти только в мозг насрут, её пишут неучи. Конечно, питон собирает из исходника байткод, как бы компилирует, но сам воркфлоу у него как у интерпретатора: написал и запустил, никаких компиляций которые тебе не нужно отдельно запускать.
2. Да что плохого? Я ж говорю, батник в одну строку делаешь и всё работает.
3. Пишут. Насчёт русских гайдов не знаю. На питоне действительно писать намного проще и удобнее чем на C++, они таким образом усилия банально экономят.
4. > будет проще код анализировать и меньше ошибок будет Компилируемые языки нужны в основном для скорости, так как там типы данных близки к машинным. Интерпретируемые ближе к человеку, например в питоне int может быть нереально огромным числом, для записи которого понадобятся мегабайты, тебе не нужно думать о битовом переполнении, можно сконцентрироваться на задаче. Насчёт анализа и меньше ошибок тема крайне холиварная, формально компилятор действительно выполняет за программиста много работы, но ведь он столько же ещё и неудобств причиняет отказываясь что-нибудь собирать и заставляя прогибаться под компилятор, неестественно выражая свои задачи в коде. Более того, до сих пор миллионы программ падают с segmentation fault несмотря на зоркие глаза компиляторов. В общем компилятор это для ультимативной скорости, например для геймдева.
Расскажите ньюфагу, есть ли в Питоне оператор ожидания? Ну, типа, мне нужно, что он автоматом запускал два батника подряд, но второй нельзя запустить сразу после первого, нужно дождаться его десятисекундного прогруза. Наверное, сделать так, чтобы полученная программа сама понимала, что первый батник успешно прогрузился и готов, чересчур трудно, так что мне проще установить время ожидания перед запуском второго, чтобы уж точно наверняка.
>>1141688 >засунул целый qt в бинарник >не понимаю о чём речь Кроме qt в мире есть ещё много всякого. Иногда больше чем на 15мб. Если уж тебе настолько отчаянно надо запихнуть всё в один файл, попробуй делать установочные пакеты. Далее, твой подход с единственным жирным бинарником не позволит доставлять несколько запускаемых утилит с общим кодом без дублирования. У тебя в каждой утилите будет зашит целый qt. Нормальные люди такие экзешки не делают.
>>1141750 Почему ты тогда решил, что питон не может в многопоточность? Что ты сделал для того, чтобы твой хеллоу ворлд был запущен в многопоточном режиме?
выросло блядь поколение «программистов» выучившихь синтаксис по ютубу и другим ресурсам. Как же с вами душно, пизда просто. В си треде дебил пишет как кодировку в файле поменять. Охуеть можно.
>>1141751 >Почему ты тогда решил Потому что это - высокоуровневый язык программирования, который в 2018 году не может распараллелить из коробки элементарный хеллоу ворлд. Ты чего так порвалась, мань?
Поясните как в апи передавать CSRF token, нихуя понять не могу. Залогинился, в куках лежит csrftoken, достаю его и отправляю в хедере "detail": "CSRF Failed: CSRF token missing or incorrect." ЧЯДНТ?
>>1141696 >2. Да что плохого? Я ж говорю, батник в одну строку делаешь и всё работает. То есть я беру портативную сборку питона с лабами (при этом ничего не устанавливаю, просто переношу эти файлы на ПК) и затем пишу бат-файл, в котором по сути скармливаю этому портативному интерпретатору питона свой скрипт? Я всё правильно описал? Но следует отметить, что у меня на работе на непиратских компах бат-файлы запрещены. Надо поговорить с безопасниками, но у меня псевдо-режимное предприятие, могут и не разрешить. Интересно, а через командную строку я смогу это сделать? Ни разу не пробовал делать что-либо подобное. Ладно, для простых скриптов для текучки это способ вполне удовлетворителен, я думаю. Для полноценной программы мне он не нравится - я бы хотел, чтобы прога установилась на ПК вместе со всеми своими либами и также сама прописала ассоциации с нужными расширениями файлов. Но я думаю, всё это можно будет тем или иным способом сделать. Тем более, что до счастливого момента выпуска этой полноценной программы у меня ещё вагон времени.
Создайте список с пятью разными ингредиентами для бутерброда, наподобие: >>> ingredients = ['слизни', 'пиявки', 'катышки из пупка гориллы', 'брови гусеницы', 'пальцы многоножки']
Теперь создайте цикл, который печатает список ингредиентов с нумерацией: 1 слизни 2 пиявки и тд.
---------------------- Блять не могу сделать это упражнение и в интернете найти. Хотя полностью обдрочил тему "списки" и тему "циклы". Прикол в том , что конкретно подобные примеры в учебнике небыло
>>1141665 >смогу я без изъебств написать нормальный графический интерфейс на Питоне? Да, PyQT. Питон компилится только костылями. По сути твое скомпиленное приложение будет представлять из себя самораспаковывающийся архив с интерпретатором, твоим скриптом и всеми использованными библиотеками. Если тащишь еще какие-то данные их гиморно запихивать в архив и лучше оставлять его распакованным. С точки зрения пользователя все прозрачно. Это обычное приложение, просто запускается дольше остальных.
>>1141687 >Я найду русские гайды? Даже английского не найдешь. У питона традиционна напряженка с доками. Для Qt можно использовать сишную документацию.
Аноны, пытаюсь подрубиться через requests к сайту, с использованием прокси. Но прокси шлют меня нахуй. Делаю всё как в доках. В чём может быть трабл? p.s. Прокси рабочие.
>>1141770 Exe не запрещены, bat запрещены. Л - Логика. Бат это то же самое что ты из командной строки введёшь же. А надо ввести всего лишь "python.exe myscript.py", уже писал.
Ассоциации с файлами и подготовка установщика - это надо читать гайды для винды, у меня не винда, ничего подсказать не могу. Сам по себе питон на это никаких ограничений не делает.
>>1141804 Да нет там никаких костылей. Там достаточно сложная и в то же время гибкая система импорта, позвляющая импортировать хоть из интернета, хоть из зип файлов, да откуда угодно. Тебе нужно придумать как вшить в exe/dll в виде ресурсов байткод модулей и сделать маппинг имя:адрес. Между прочим именно так вся стандартная библиотека вшита в саму основную dll питона.
Но вот эти васянские пиинсталлеры забивают на все хорошие практики и пакуют хоть как-нибудь тупо в один файл.
Посоны, чёт я не могу понять почему много где пишут что GTL+ можно использовать в коммерческих проектах, а Qt нет. Хотя у них обоих есть лицензия LGPL.
>>1141853 LGPL обязывает тебя публиковать изменения которые ты внёс непосредственно в Qt/Gtk+. То есть если ты скачал/собрал официальные исходники, и в неизменном виде приложил к программе как dll, то к тебе вопросов нет. Если что-то изменил в самой Qt/Gtk+ - публикуй исходники всех изменений. Само приложение может быть проприетарным, коммерческим, под любой лицензией. Разница в том, что Qt даёт возможность откупиться от копилефтного обязательства на саму Qt, а Gtk+ не даёт.
Хм, как я понял, >пишут что GTL+ можно использовать в коммерческих проектах, а Qt нет в контексте Питона было из-за того что у PyQt только GPL лицензия (которая точно не для проприетарщины), а PySide появился сравнительно недавно.
>>1141856 Ну окай, значит не вижу причин не дрочить Qt под виндой. Или PySide ещё сырой? Всё равно PyGObject я так и не смог собрать, хотя вроде это вполне возможно, но надо как-то указывать ему чтобы компилялся средствами MinGW, а это для меня сложна.
>>1141845 Я уже перевел за неделю и могу сказать, что худшей документации не видел. Хули у php всё так ясно блядь, что на входе что на выходе, в питоне ж полный пиздец, сиди и угадывай
Э бля, ежжи А куда делись конфы питонистов в Телеграмме? Можете их кинуть?
И раз я уже тут, задам вопрос, который хотел задать им. Когда я запускаю скрипт питона через cmd, то если я предварительно настроили PATH, то вместо охуенно_длинный_путь_к_python.exe я могу писать просто python, можно ли как то сделать так с самим скриптом? Мне лень писать охуенно_длинный_путь_к_скрипту и я хочу писать просто: python имя_скриптааргументики
>>1142165 Отсутствие примеров. Отсутствует указание типа возвращаемого значения, а часто и тип аргументов приходится вылавливать в текстовом мусоре. Формат записи также нечитаемый. Поиск выдает мусор. посмотри как выглядит качественная документация http://ba1.php.net/get/php_enhanced_en.chm/from/this/mirror Там даже комментарии пользователей включены под каждой функцией. Они часто приводят полезные замечения, которые авторы документации могли упустить и готовые примеры для практического использования. Скопировал-вставил.
>>1142171 У меня нет потребности разжёвывать функцию baseconvert на десяток листов А4. Разжёвывания есть на stackoverflow, сама документация чистая и плотно организованная, как и должна быть. Скопировал-вставил это отдельная патология, изредка конечно неизбежная, но крайне вредная.
>>1142211 Покажи 10 листов чуши в питоне. Твоя позиция мне не понятна. Захожу https://docs.python.org/3/, далее если зелёный - Tutorial, если стдлиба - Library Reference, если пишешь свою реализацию питона - Language Reference.
Захожу http://php.net/manual/en/ и вижу какое-то оглавление книги. Ни туториала, ничего. Сразу Language Reference который видимо и туториалом сразу служит. Function Reference, которое есть местная стдлиба, куда чаще всего ходить будешь, на самом дне спрятана.
>>1142228 Хех, мог бы сразу в батник написать python path/to/script.py. Виндомудилы полтреда уже себе какие-то виртуальные проблемы придумывают и героически их решают.
>>1142233 gzip.open в следующей строке ...returning a file object.
Остальные фукнции на странице возвращают хуйпойми когои хуйпойми где это. Несколько абзацев текста в свободной форме - это и есть чушь. Хорошо хоть пример есть, исправляются. Но нечасто мне примеры в документации там попадались. И опять же в разных форматах. Иногда зачем-то в примерах в каждой строке приглашение интерпритатора (пик 1). Такое неудобно копировать. В иных случаях вместо под видом примера какокое-то нечитаемое говно (пик 2)
Нажал на file object - https://docs.python.org/3/glossary.html#term-file-object - далее тебе все ссылки если неясно что такое file object и каким он бывает. В идеале ты не должен (или даже не можешь) знать конкретный тип этого file object, тебе нужно знать только общий интерфейс.
>возвращают хуйпойми когои хуйпойми где это >Decompress the data, returning a bytes object containing the uncompressed data. Мде.
>приглашение интерпритатора Приглашение интерпрЕтатора указывает на то что это можно попробовать набрать прямо в интерпретаторе. То есть не нужен какой-то особенный бутстрап/бойлерплейт чтобы поиграть с этим.
>какокое-то нечитаемое говно Это называется формы Бэкуса — Наура.
После долгого перерыва вкатываюсь обратно в пифон, и начинаю читать и делать задачи заново. Скажите, что не нравится pycharm'y. Я так понимаю, что он сообщает о том, что "к локальной переменной digits могут обратиться до ее объявления". Как это поправить, и как это возможно? Я бы понял, если бы у меня было что-то типа: if yoba: -digits=2 print(digits) Но у меня же эта переменная объявляется в первую очередь в try блоке. Как к ней в этом куске кода можно обратиться до объявления? Я не понимаю.
>>1142323 Например взятие атрибута в sys.args может завалиться с ошибкой, до того как digits присвоится значение. Затем у тебя каскадно завалится ещё и блок в except.
>>1142323 Pycharm видит, что она декларируется в try, а блок try при ошибке прерывает и оставшиеся в нем строке не выполняются. Pycharm не может оценить вероятность ошибки, поэтому перестраховывается. Выноси декларацию за пределы try, либо перед try допиши еще одну декларацию digits = '', или вообще забей. Работать будет.
>>1142335 Но если у меня завалиться взятие атрибута, то управление перейдет к except IndexError, а затем к части кода после try, а в except ValueError он не завалиться никаким образом. Ситуация, когда digits не объявлен, а к нему обращаются, невозможна. >>1142339 То есть никакой ошибки нет, и свалиться программа все равно никак не может, и мне лучше просто смириться с загонами Pycharm?
>>1142349 Воот, хорошо рассуждаешь. Разные блоки except оказывается относятся к изолированным частям кода. Оберни взятие digits в отдельный try и унести туда except IndexError.
>>1142448 >скобками внутри скобок >Где это можно изучить? В любом, блять, учебнике, по практически любому, сука, языку погромирования. А лучше сначала вернуться в школу и не пропускать математику и информатику (если если так хотя бы паскаль показывают).
Сап, хочу скачать видео с одного сайта, использующего adobe flash player. Из браузера легко найти нужную ссылку на странице, но когда пытаюсь сделать это из скрипта, сайт определяет, что afp нет и предлагает установить. Ссылки, соответственно, нет. Есть ли способ обойти это?
>>1142538 Я пока думаю стоит ли вообще публиковать где то или нет. Если буду публиковать - хочу сделать какой-нибудь аналог Dash, Zeal или даже веб http://devdocs.io/, куда буду сливать переводы документаций всех библиотек\языков\фреймворков с которыми я как либо сталкивался. Если не буду - идите нахуй, там переводить нечего
Сап. Абсолютный нуб, хочу вкатиться в Питон, т.к. прочитал что наиболее подходящий для вхождения в програмерскую среду. Следует вопрос - с чего начать? Сижу уже пару дней прохожу кодакадеми курсы, насколько они релевантны к реальному знанию или это так, побаловаться и начать по-серьезному где-то еще учить? Готов заплатить за курсы в онлайне, посоветуйте, люди добрые!
>>1141205 (OP) Ебал вас в рот, питономрази. На сколько же это дилетантский язык. Такое чувство, что создателям языка, фреймворков вообще похуй - они решают только текущие проблемы, они не заглядывают и на шаг вперёд, поэтому язык на 99% состоит из костылей. Вот сейчас пытаюсь написать ТЕСТЫ на питоне для джанго - это просто пиздец. На сколько же всё хуёво сделано, на сколько блядь бездарно...
>>1142822 Спасибо! А че кодакадемия? Хуйня? Так же я в основном треде спрашивал, люди говорят, что лучше начинать сразу на английском изучение, чтобы потом не заебываться с переводами ру-ен
>>1142825 Ну вот такой json-документ приходит, щито поделать "data": [["XXX", "11111"], ["YYY", "22222"], ["ZZZ", "3333333"], ...] последовательность элементов в списке верхнего уровня - произвольная.
>>1142827 Вот именно, потому что дилетанты только его и пишут (и все фреймворки тоже, кроме парочки машин лернинг фреймворков), этот язык и все либы, фреймворки - просто неюзабельные куски говна по сравнению с адекватными языками, а-ля решётка, жаба. Питон - это что-то на уровне пыхи или крестов по своей нечитаемости и неадекватности подхода.
>>1142785 Курсы-хуюрсы. Знаешь как я начинаю изучение нового языка? - Первым делом ставлю его компилятор-интерпритатор и начинаю писать реально нужную мне прогу. И только по ходу дела смотрю в инсрукции или отдельные главы книг, чтобы заполнить обнаруженные пробелы в знаниях. Вот под питона я включил цикл видео на ютюбе "пишем ебу вместе", где автор писал код и пояснял значение. Я писал смотрел и писал параллельно, приспосабливая продемонстрированное им для своего приложения.
Прога, может, получается хуевой, но потом еще могу неделями-месяцами её рефакторить, улучшать, чтобы реализовать подчерпнутые знания о языке. А может наоборот выясняю, что в языке недостатки, с которыми не могу мириться и тогда забиваю на него. Вот в Го пытался вкатится, но пришел к выводу, что язык очень низкоуровневной и не имеет никакой перспективы на вебе. А для невеба он слишком медленный. Забил.
>>1142844 Я не он, но могу сказать, что видео а-ля "пишём йобу вместе" - довольно специфичные, а зачастую - вообще устаревшие. Посмотрел пару таких по Django, и понял, что документация даёт больше информации, чем видео. И зачастую есть момент, когда автор видео говорит "короче, если не знаете, то просто делайте как я, а потом когда-нибудь научитесь, забейте". Правда, большинство доков написаны Васянами, и совсем нечитабельны.
>>1142844 Да, я тоже думал взять отдельный процесс и попытаться к нему написать простую программу, но видишь в чем дело - у меня знаний всего программирования 0, то есть я просто обычный хеловорлд тебе не напишу просто так с бухты барахты.
>>1142843 >Питон - это что-то на уровне пыхи или крестов по своей нечитаемости и неадекватности подхода. Я бы сказал он неоправданно сложнее пхп. Хотя на первый взгляд подкупает лаконичностью синтаксиса, но эти иллюзии быстро рассеиваются. Знаю, что его приняли в программу обучения в детей в школах, типо вместо бейсика, но эта легкость только для песочных задач. Как дело касается практики, так ебаный ад и содомия.
>>1142849 Большинство видео действительно херня, особенно когда чувак сидит такой и пишет "import multiprocessing" по одному символу в секунду а ты сидишь такой и смотришь на выпавшую таблицу автозавершения и представляешь какой же он даун в жизни
>>1142897 Тупой питоноблядок, взгляни на юнит тесты на жабе и на юнит тесты на питоне. Взгляни на архитектуру приложений, написанных на джанго, и на спринг мвс.
>>1142897 Например, массивы. в пхп только один тип массивов, который по умолчанию - индексированный, но можно укладывать значения со своим индексом, как ассоциативный массив. С таким смешанным массивом работают все функции для работы с массивами. В питоне массивов 4 штуки. У каждого свои методы и все работает по-разному. Например, dict при переборе в цикле возвращает не значения, а ключи.
В пхп array_map() - на входе массив и на выходе массив. В питоне map() - на входе массив list, а на выходе object type Map. И этот объект нихуя не итерируется как list. Его нужно еще дополнительно в list преобразовать.
>>1142916 Дополню упреком - документация к питону тоже отдает кустарщиной. Вчера это уже разобрали. Но, справедливости ради, нужно признать, что чем "удобнее" язык и тулзы к нему, тем ниже порог вхождения. Вкатывающиеся новички скидывают зарплаты и потому пхп и джава катятся в жопу. Поэтому хочешь большой зарплаты - вкатывайся в перспективный язык, который пока еще не стал "удобным". Когда станет - ищи новый.
>>1142916 Родные юниттесты в питоне прямиком из жабы стащены. Есть ещё аутентичный питест. Насчёт джанги всё спорно, там применён свой набор tradeoffs, если не нравится — не используй, бери фласк. Спринг? Ну хуй знает, я знал больше десятка разных фреймворков и даже писал свои, всё везде более-менее одинаково. Причём тут собственно питон?
>>1142918 А я считаю это достоинством. Такое же говнецо как в пхп ещё есть в луа, hashmap в качестве list конечно работает с натягом, но заставляет порой писать много бойлерплейта, не говоря уже об алгоритмической оптимальности. Алсо, что будет если ты добавляешь в ассоциативный массив как в обычный? Делаешь массив с дырками (какая будет длина результата)? Это смешение типов до добра ещё никогда не доводило.
Насчёт map, почитай что такое итераторы. Наводящая задачка: есть 200Гб файл, который нужно прочитать построково, применить к значениям функцию и записать в другой файл. Будешь в list все 200Гб преобразовывать?
>>1142922 Идеального ничего не бывает. Никто не запрещает тебе отправить pull request в официальную документацию. Новичкам действительно часто виднее где в доках проёбы.
Помогите разобраться пожалуйста. True and False = False True or False = True Как бы понятно, что and - это умножение, а or - это сложение. Так же понятно, что 5 and 4 = 4, a 5 or 4 = 5, так как and выводит всегда второе значение, если оба значения True, a or - первое значение. Столкнулся с примером: x = int (input('Введи число '))
if x == 4 and 5: print ('OK')
Почему, когда вводишь 4, пишет ОК, а когда 5 - не пишет? Так же, когда заменяешь and на or, то в любом случае пишет ОК. Так же, тоже непонятно, почему, когда так: x = int (input('Введи число '))
if x == 4 and х == 5: print ('OK') то код не работает, а если заменить на or, то работает правильно?
>>1142973 Не, всё правильно он написал. Тоже как-то на это внимание обращал, но в доках именно такое поведение описано. Вероятно это делается через специализированную операцию в цпу без перевода в int.
>>1142991 Ты когда делаешь сравнения x==4 они у тебя сразу булево значение отдают. Но когда ты просто в if ставишь число или применяешь логические операторы над числами, то всё усложняется: ноль превращается в False, всё остальное в True (даже отрицательные).
if x == 4 and 5: это то же самое что if x == 4 and True: то же самое что if x == 4:
if x == 4 and х == 5: тут ты одновременно требуешь чтобы x и на хуй село и рыбку съело. Всегда будет False, if не выполнится.
if x == 4 or х == 5: тут всё правильно, либо 4 либо 5. можешь иначе это писать: if x in (4, 5):
>>1142991 >5 and 4 = 4, a 5 or 4 = 5 В таких вот штуках всё тоже непросто. Есть такое понятие short-circuit evaluation. Это когда интерпретатор/компилятор досрочно прекращают вычисление логического значения, если его конечный результат уже точно известен. К примеру
True or False or False or True or False остановится на первом True. Так как операция or безвозвратно переключает всё в True. Вычислять остальные 4 части выражения (чем бы они ни были, хоть запуском шаттла в виде функции) нет смысла и интерпретатор их принципиально пропускает (шаттл не запускается, а так ждали).
False and True and False and True and True точно так же and. Только and всё переключает в False.
Собственно питон здесь хитрит: при вычислении логических выражений приводит втихаря их в булевы (для каждого типа там свои правила), вычисляет булево значение оператора, применяет short-circuit evaluation, а в качестве результата вместо True/False вставляет сами исходные объекты: для or это первый что привёлся в True, для and это первый что привёлся в False, иначе просто последний из них. Попробуй вот такое вычислить:
>>1143017 На самом деле логических операций над числами и другими объектами по-хорошему в языке не должно быть. Но очень часто нужно присвоить какое-то значение по умолчанию:
print(x or 4)
если вдруг x None/False/0, напечатает 4. Либо
if x: # вместо len(x) > 0 ..print('x is not empty!')
Вот по сути только для таких вещей. Больше лучше нигде такое не применять.
>>1143033 Почти запомнил и придумываю задачи для закрепления знаний. Хотя еще не осилил True ^ False. И очень большие проблемы с алгоритмами и циклами. Сколько не читал, не смотрел курсов - все книги/курсы, как будто бы для тех, кто перекатывается в язык, а не вообще с нуля. По математике была твердая двойка и вообще сейчас очень сложно что-то такое осилить. Вот в треде увидел книгу для детей, мб в ней что-то и пойму про гребанные циклы
>>1143038 >0 or '' or [] or {} >'' or [] or {} or 0 >[] or {} or 0 or '' >{} or 0 or '' or [] Вообще порвало шаблон. Почему, когда 4 or 5 or 6 or 11, то выведет 4, а с пустыми значениями - наоборот
>0 or 3 or '' or [] or {} or 5 or True - c этим примером понятно, в конце остается 3 or 5 or True и так, как все значения True, то выведет, то которое стоит впереди
Задачи с and тоже понятны, and - всегда выводит второе значение
>1 and 'x' and 0 and [1] and {5} and False and None - в этой задаче не понял, почему ноль. Думал будет False, хотя, пока писал догнал, в Конце остается 0 and False, потому что все заполненные значения множаться на ноль, а так, как False стоит перед None, то в конце и сотается 0 and False
>>1143035 Операция ^ (xor) для булевых значений эквивалентна банальному != Гугли таблицы истинности логических операций. Но прямое назначение ^ | & - это всё-таки битовые операции над целыми. То есть в if просто используют != вместо ^.
>>1143048 Час потратил на понимание этой фигни, а тут оказывается все сложнее. Ладно, спасибо за потраченное время. Надеюсь, после очередного провала не заброшу учебу
>>1143051 Ну я сам до конца не знал. Очень редко такое нужно. Обычно в and/or уходят именно булевы значения, а эта подстановка агрумента в результат не используется разве что для значений по умолчанию вроде x = x or 4
>>1143055 Я ОСИЛИЛЬ!!! Больше спасибо за строки: >Потому что все они False, ни одного из них в True не приводится. Слева направо каждый по очереди проверяется. И понял примеры с пустыми строка, если это and (*) он просто смотрит до первого нуля(false) и остальное просто потом множит на ноль и поэтому выводит первое, а если все true, то просто выводит последнее тру значение. Сам тока шо додумал посидел. Ну и с or наоборот соответствно, до первого 1(True) и все остальное просто добавляет, если видит вначале единицу, то все остальное просто приплюсовывает к ней. Большое спасибо еще раз!
Ананас, как стать в общем хорошим кодером? Вот попросят меня на собеседовании запилить сервер на сокетах, а я такого никогда не писал, что я там сидеть гуглить буду час потом час еще делать? А сколько еще таких вопросов? Ебануться. И еще: спрашивают ли на джанго вакансии алгоритмы?
>>1143122 > как стать в общем хорошим кодером? Слабовольным не читать, я предупреждал: Никак, программистами рождаются.Именно хорошим: забыть про личную жизнь. Работай на работе, работай после работы, веди личные проекты, принимай участие в чужих. Чтение книжек или просмотр ютуб-каналов имеет КПД 0 в сравнении с практикой и участием в команде.
> Вот попросят меня на собеседовании запилить сервер на сокетах, а я такого никогда не писал, что я там сидеть гуглить буду час потом час еще делать? Не попросят с большой вероятностью. Если вдруг и попросят (ну мало ли), а ты не знаешь, то лучше попроси список тем для изучения и когда можно вернуться. Никто за спрос не пиздит, а в глазах этих людей ты будешь пусть не молодец, но и очередной Вася, которого ещё доучивать надо, а обучение сейчас очень дорогое. Сам решил изучить, вернулся (возможно), прошёл собеседование - профит. > И еще: спрашивают ли на джанго вакансии алгоритмы? Бывают и такие конторы. Всё зависит от старшего (ведущего) разработчика. Если он мудак, то будет спрашивать алгоритмы. Если он адекватный, то будет спрашивать базовые знание, необходимые для поддержания внутренней инфраструктуры.
>>1143122 Ты когда собеседуешься, смотри чем занимается компания. Если она пилит сайты на джанге, и если ты умеешь пилить сайты на джанге — то всё, считай принят. Бывают мудаки, которые тебя с таким раскладом ещё и не возьмут, но им же хуже.
Пилю проект, в котором для доступа к базе не используется ORM. Нередко слышал, что с точки зрения производительности (но не простоты сопровождения кода) лучше переносить часть логики на БД, которая молотит числа быстрее, чем питон. ( + там есть классные фишки вроде индексации и сегментации)
Но вот вопрос, если мне нужно вытянуть данные из нескольких таблиц, одна из которых связана с остальными отношением один ко многим, число строк после джойна равно произведению числа строк в каждой таблице и получается очень большим.
Как обойти этот момент? Обязательно тянуть данные из каждой таблицы отдельным запросом? Можете подсказать, как эту проблему решают в ORM фреймворках (например в алхимии), не хочу ковыряться в исходниках.
И ещё, может кто-нибудь подсказать фреймворк/библиотеку для вычисления технических индикаторов для бэктестинга и торговли. Быстрым гуглом нашёл кучу всяких "TOP 10 libraries for" страниц, но там большинство библиотек написаны одним Васяном и не имеют даже сотни звёзд на гитхубе.
Про python scientific stack (numpy, scipy, pandas, etc) знаю, ищу что-то более специализированное для трейдинга/рассчёта финансовых показателей.
>>1143146 > Как обойти этот момент? aiopg, asyncpg >>1143150 > ищу что-то более специализированное для трейдинга/рассчёта финансовых показателей. Бери numpy и юзай, лучше и быстрее ты вряд ли найдёшь. Может как раз напишешь свою библиотеку для трейдинга. > не имеют даже сотни звёзд на гитхубе. Узкая специализация
Аноны, есть два стула, один с PyQt5, второй с Kivy. Какой выбрать для написания приложения для Android/Win10 desktop? P.s. Что-то про windows phone ничего не нашел, реализуемо это вообще, на питоне?
Если тебе нужны перловые "регэкспы" и реально глубокие познания этого дерьмя - иди нахуй, т.е. за книгой: Дж.Фридл - Регулярные выражения, 3-е изд.[2008] - она есть на русском.
И что это за хуйня? В учебнике написано, что decimal.Decimal используют, когда точность важнее скорости. Это не похоже на точность. Че его так пидорит, откуда эти цифры?
>>1143818 Ладно, справедливо. Но все равно, откуда эти цифры берутся? И почему если я сделаю не Decimal(2/3), а Decimal(2)/Decimal(3), то получу более точное 0.66666666666666667, а не вот эти непонятные цифры?
>>1143987 Не, я просто спрашиваю потому, что думаю тоже связать свою жизнь со всей этой хуйней. А чем занимаешься? Я просто могу представить грузчика. Он таскает штуки туда-сюда, сам или на машине специальной. Я могу представить продавца. Он хуярит продукты о считывающую хуйню. А что делают программисты?
>>1143246 Спасибо, анон, норм либа и звёзд на гитхабе много, всё как я люблю. Даже не верится что я мог упустить её при гуглении!
>>1143182 Про базу ответ хороший, но не по моему вопросу. Кстати боюсь даже предположить, как ты узнал, что я использую postgresql хотя я его и использую.
Попробую переформулировать:
Есть база с 3 таблицами (для простоты индексы опускаю):
Мальчики Машины Девочки Петя БМВ Катя ТАЗ Даша Лиза
Таблица Мальчики связана с остальными таблицами один-ко-многим, т.е у Пети есть 2 машины и 3 подруги.
Я хочу достать из базы все Петины машины и всех Петиных подруг. Очевидный вариант -- сделать двойной иннер джойн и получить 6 строк результата (123=6), тем не менее если сделать два разных запроса ( отдельно джойнить Петю с машинами и отдельно с Девочками) то получится только 5 строк результата. Понятно, что речь идёт не об одной лишней строке, легко видеть, что при первом подходе количество строк растёт как произведение размеров таблиц, во втором -- как сумма.
Но второй подход гоняет данные лишний раз между базой и питоном, а ещё если скрипт для селекта Пети тяжёлый (выбираем по куче условий), то дважды его запускать не хочется.
Есть ли какой-то общепринятый подход, сочетающий преимущества как первого, так и второго вариантов? Например складывать результаты во временную таблицу, селектить готовое из этой таблицы отдельными запросами. (создать вьюху?) Или запускать на питоне селекты вообще без джойнов, а джойнить потом, уже питоном (что, как мне кажется вообще плохое решение).
И отдельный вопрос, как решают эту задачу ОРМ либы?
Анонче, не бейте, лучше обрссыте. Надо сделать клиент-серверное приложение: клиент (браузер) вводит число и посылает на сервер, сервер на питоне принял и допустим ответил назад вдвое больше число (не важно). Сижу вдупляю nginx, uWSGI и джангу пихают в гугле, и нихуя понять не могу. Прямо затуп и осознание что нихуя не понимаю в вебразработке. Направьте меня на мысль мудрецы. не лаба
>>1144019 Прикрепил картинкой схему с ключами, хотя отношение один-ко-многим как бы намекает (хотя хз, может ты знаешь несколько способов сделать один-ко-многим?)
Запрос будет в первом случае: SELECT m.name, g.name, c.brand FROM мальчик m JOIN девочка g ON m g.мальчик_id = m.id JOIN машина c ON c.мальчик_id = m.id
= 1х2х3 = 6 строк
Во втором: SELECT m.name, g.name FROM мальчик m JOIN девочка g ON m g.мальчик_id = m.id
и
SELECT m.name, c.brand FROM мальчик m JOIN машина c ON c.мальчик_id = m.id
= 3 + 2 = 5 строк
>>1144026 попробуй flask, для одной формочки джанго жирновато будет
>>1144015 Догадаться легко, раз такие вопросы задаешь, то явно не СКЛайт юзаешь. Я тебе подсказал быстрые либы. Я конечно нуб в БД, но я б делал без джоинов(пояснишь, в чем их плюс?), обычным SELECT car_name FROM table_cars WHERE car_owner='Patya' и точно такой же запрос для дам. У тебя очень простой пример и ничего тут не оптимизируешь. А в идеале, запрос к большой выборке из БД должен быть в несколько этапов: 1. Выбираешь из БД минимум полей, с минимальным колличеством условий, 2. затем полученные данные фильтруешь еще раз, уже по полному списку нужных условий 3. Если тебе выбранных полей хватает - все ок. Если нет - делаешь еще одну выборку, но уже по известным primary key. Этот пункт подходит если есть лишние при поиске поля, но в которых хранится важная для юзера инфа.
>>1144026 Flask Ты может пока до Nginx and uWSGI не разгоняйся, на локалке позапускай, наиграйся, а потом уже дальше думай(может и не понадобится). А вообще, есть годный гайд от digital ocean, там, правда для Джанги вроде, но не критично.
>>1144050 Нгинх типа по условию надо, ну я понял тебя буду копать в сторону фласка. Прост не понимаю как от формы принять реквест а потом еще и ответить туда. Новую страничку генерить тупо, хочется цифру ввел, произвел трудные серверовычисления и тутже вывел не отходя от кассы
Пытаюсь импортировать класс из models.py, который находится в папке Contact. Что-то явно пошло не так, в итоге из-за этой херни пол дизайна страницы полетело.
>>1144063 Спасибо, но у меня не цель поделить 2 на 3, а понять, как работает Питон.
>>1144077 >википедия >Десятичная дробь — разновидность дроби, которая представляет собой способ представления действительных чисел в виде ±dm...d1d0,d-1d-2.... >где .... d-1d-2... может быть как конечной, так и бесконечной Да, 2/3 можно представить как десятичную дробь.
>>1143854 >2/3 даёт float, который ты затем в Decimal перегоняешь Но тогда 2/3 дает мне флоат 0.6, который я перегоняю в десимал и получаю те же 0.6 остальные цифры убрал для удобства Но Питон каким-то хуем получает 0.629659 Вот откуда эти 0.029659?
>>1144121 Вау, вот это да. Долго придумывал? Иди теперь своей маме расскажи, какой ты в интернете классный.
>>1144053 Какому условию? Не лаба ведь. Тут тебе верно сказали, нужен ajax(все проще, чем ты думаешь, но нужны минимальные познания в js) или легковесная страничка.
>>1144147>>1143799 >Вот откуда эти 0.029659? Они там были всегда, просто repr у float'а и Decimal'а отображает разное количество знаков (собственно, из-за их разной точности).
>>1144151 Ну я создаю скрипт создания директорий\папок, и в зависимости от ОС пути будут разными. И кусок команд для создания папки + файла работает в вин, но не работает в линукс.
>>1144167 >и в зависимости от ОС пути будут разными. >И кусок команд для создания папки + файла работает в вин, но не работает в линукс. Это потому что у тебя говнокод.
>>1144147 >Вау, вот это да. Долго придумывал? Иди теперь своей маме расскажи, какой ты в интернете классный. Ну на зеленый вопрос получи зеленый ответ. Чем занимаются программисты спрашивает, охуеть.
>>1144182 Да нормальный вопрос. Отвечаю: хуйнёй маются, на коленке собирают говнокод по методу хуяк-хуяк и в продакшен, все эти бесконечные сервисы и стартапы убыточные, часто даже до релиза не доживают, никому это всё не нужно, особенно в этой стране.
>>1144195 В контексте программирования ещё вполне можно рациональными числами считать. Либо очень извернуться и написать вычисления с периодическими дробями в виде строк. Иррациональные, либо рациональные с очень большими числителями-знаменателями уже да, никак, только приближения, насколько хватит памяти в компьютере.
Анонасы, помогите джанга 2.0 не хочет хавать CSS. С чем может быть связан конфликт? В главной папке в settings.py внизу прописана такая хуйня STATIC_URL = '/static/' STATIC_ROOT = ''
Так же пробовал такую хуйню писать STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] Ну, а юзаю через эту хуйню в другой директории. {% load staticfiles %} <link rel="stylesheet" href="{% static'css/bootstrap.min.css'%}" type="text/css">
>>1144206 >Иррациональные, либо рациональные с очень большими числителями-знаменателями уже да, никак, Можно использовать цепные дроби для представления иррациональных и трансцендентных чисел.
Плохо, что современных программеры имеют такой малый багаж знаний и, по сути, не являются программистами.
Интересно, а "программисты" вообще слышали про цепные дроби? "Программисты" знают, как вычислить число e через цепные дроби? Знают они, как приводить цепную дробь в к P/Q? "Программисты" понимают, что такое теория групп? Что такое Абелева группа?
>Настоящий программист впервые в жизни прочитал о цепных дробях в википедии. Остановился на фразе >Число представляется конечной цепной дробью тогда и только тогда, когда оно рационально. >Но не стал читать дальше.
>>1144305 Лол. Потому что этого достаточно. Изначальный тезис был в том, что память компьютеров ограничена, и иррациональные числа нельзя записать с абсолютной точностью. Даже не все целые можно.
>>1144306 >Изначальный тезис был в том, что память компьютеров ограничена Родной, а тебе и не нужно абсолютно точное представление чисел в компьютере. Тебе нужно только то представление, которое требуется для решение задачи. Но ты же не знаешь, что такое цепные дроби.
А еще ты начал отвечать на мой пост даже не удосужившись прочитать теорию.
>>1144308 Всё знать невозможно, да и не нужно. Узнаю всё по мере необходимости. >>1144312 Битовым сдвигом. Короче ты заебал, иди на хуй. Экзаменатор блеать. Я тоже много чего специализированного знаю, но мне насрать если кто-то этого не знает.
>>1144319 Ты лучше софт пиши. Эти знания не предмет роскоши. Сейчас на любой заковыристый вопрос есть ответ в гугле. И на зарплату куда больше влияния оказывают знание английского и навык продаж, чем твои теории групп.
>>1144283 А можно точное определение программиста? Во всяких пиндостанах есть четкое разделение на компутер саентистов, программеров и софтвар инженеров, а у нас под словом программист каждый свое понимает
>>1144336 >Да, вспомнил. Программист - это человек, который моделирует реальность в компьютере с помощью битов. То есть из этого определения программисты это байтослесари?
>>1144333 Да, переделываю. И не считаю это чем-то плохим. Идеальный код, тем более с первой итерации, написать нельзя в принципе. Более того, если к нему применяются оптимизации, он уже перестаёт быть идеальным как (человекочитаемый) код. Мне так нравятся твои импликации, это пиздец. То есть вот я, убив на программирование (причём на жёсткую практику, ибо жрать было нечего, нищета, отсиживание жопы в универе мамкина шея не тянет) десяток лет, оказывается не умею ничего, ты так скозал, потому что какие-то дроби я столько же лет в глаза не видел уже. Блядь. Пиздец это как всё угнетает, когда тебе реально интересна наука и теория, и когда вот такие пидоры приходят и дёшево самоутверждаются на тебе, попутно взращивая ненависть как к наукам, так и к людям в целом. Господи, за что я в такой стране родился?
>>1144341 «Computer Scientist» — математик и технический специалист в равной степени. Он обладает математическими знаниями и объясняет, как и почему работает тот или иной инструмент, решение или алгоритм. Его работа имеет большое значение для развития программирования в целом. Также CS свойственна специализация в одной или нескольких сферах — ИИ, нейронные сети, теория языков программирования, базы данных.
«Software Engineer» (SE) (согласно статье в webopedia) — это дипломированный профессиональный инженер, имеющий достаточно знаний и навыков для применения инженерных дисциплин при создании программного обеспечения. Главное отличие — SE занимается разработкой, руководством проектов, а программист их реализует путем написания кода. На русский название должности переводится как «инженер-программист» или просто «программист». Работа «Software Engineer» подразумевает комплексный подход и иногда ее можно сравнить даже с процессом создания произведения искусства, которое программист старается постоянно усовершенствовать. Так считает и Дэниел Каплан (Daniel Kaplan), опытный программист и сотрудник Pivotal Labs. Инженер должен видеть всю картину с двух сторон: проект в соответствии с общим планом и отдельные задачи, необходимые для его осуществления. Он должен уметь находить верные комплексные решения, понимать требования клиентов, прогнозировать возможные последствия и распределять задачи по программированию (в команде).
Для обеспечения полноценной разработки ПО/кода программист должен быть сконцентрирован на своей работе и обеспечить последующее использование и интеграцию программных компонентов друг с другом. Энтони Щерба (Anthony Scherba), президент и основатель студии разработки Yeti, сравнивает этот процесс с решением сложной алгебраической задачи. Так, по мнению эксперта, в обязанности программиста входит создание, упрощение, документирование кода и написание тестов. Поскольку он занимается практической реализацией поставленных задач, программист должен разбираться в особенностях языка (языков) программирования, с которыми работает, а также в теории алгоритмов. Необязательные компетенции: математический анализ, коммуникативные навыки и умение работать в команде — подробнее в блоге Алана Скоркина (Alan Skorkin).
Не волнуйся, просто он либо студент технического вузика, или байтоеб, который возвел программирование в ранг чего то илитного и поскольку надо как то возвышаться над всеми он придумал свой романтичный манямирок, ты даже на определение, которое он дал посмотри >Программист - это человек, который моделирует реальность в компьютере с помощью битов. Ахуеть какое точное определение
Кококо смотрите,Я никакойкакфсе. Блять, может ты будешь юзать свои знания, а не выебываться? Или ты такое назначение им нашел? Накодятся своими байтами, а потом и в жопу друг друга ябут...
Анон, читаю учебник по Питону. Я правильно понимаю, что автор слегка обосрался? Ведь проверка if word != 0 всегда будет True т.к. word либо None, который не равен нулю, либо какая-то строка, и даже строка '0' нулю не равна.
>>1144149 >>1144050 Ну это не лаба, но задание с добровольно-принудительным использованием nginx типа сиди ебись Задание можно сделать и на клиентской стороне без всяких выкрутасов, но смысл именно в выкрутасах. Провернуть условно взаимодействие клиентской формочки с какими-то серверными вычислениями на питоне, прихуячить nginx и в эту сторону кароче
А я вот одного не могу понять. Я вот вкатываюсь в питон и хочу в дальнейшем в сферу бэкэнд-разработки попасть, но какие вакансии на питон-джуна на HH не посмотрю, везде какая то верстка с Django/Flask'ом. Это что получается, мне чтобы в бэкэнд попасть придётся как минимум год ковырять эти дебильные фреймворки?
>>1144372>>1144378 А в чём смысл такого изворота? Почему бы просто не оставить word None'ом и не проверить на if word:? Ну или is not None, если вдруг пустую строку в качестве аргумента нужно тоже обрабатывать зачем-то.
Поясните за csrf токен в целом и в рест фреймворке в частности. Я написал апишку, с методами пост и так далее, туда идет айос андроид приложение и в хедере должно отправить X-csrftoken, который они достают из куки, который они получили при логине от меня. При этом если в куки такого токена нет, то это будет фейл. Вопрос в чем, зачем это делать, ведь по сути если спалят токен из хедере или кук, то можно создать локальные куки и так же в хедере отправить этот токен. В чем общая суть, что я не так понимаю?
>>1144436 Не сильно силен в этом и возможно ошибаюсь, но там вроде как еще на сервере в сессии хранится ключ, который как-то там добавляется к токену и без которого сервер не воспримет отправленную форму как правильную
>>1144454 Ну хорошо, но вопрос в другом, зачем отправлять тогда в хедере этот токен. Если например в сессиях есть айди юзера и в куках есть сешн айди, то тут джанго сам всё проверяет и ничего делать не надо, но в случае csrf он сам не проверяет, хотя это казалось бы логично, плюс по другому ключу в хедере передается, зачем?
Подскажите, пожалуйста, бьюсь и не могу решить такую проблему. Вот есть седьмая строка. Ее суть — реагировать на ввод данных, не просто не входящих в массив, но и совершенно другого типа (string или float, к примеру). Но, разумеется, так, как сейчас, она не работает. Она реагирует только на целые числа, не входящие в массив. Любое строковое значение завершается завершением программы. А мне нужно, что писалось: "введи целое число, сука". То есть нужно, чтобы было что-то типа if guessNumber != int() или как-то так, но, конечно, так это не работает. Так вот, как это разрешить?
>>1144459 Вот поэтому когда начальник предложил делать сайт на реакте , rest api и вот этим всем, то мы с фронтендером предложили ему не выебываться и сделать все по старинке.
Сап, питонисты. Сейчас хожу на курсы по вебу только не стукайте, пожалуйста и там требуют прямо со старта начинать изучать питон на линуксе. Какой дистрибутив посоветуете накатить для изучения основ? И работа с питоном в разных дистрибутивах вообще как-то может отличаться?
>>1144603 > работа с питоном в разных дистрибутивах вообще как-то может отличаться? С питоном - нет, но в зависимости от графической оболочки тебе может быть удобно юзать ОС, а может и нет. Я бы посоветовал для начала Mint, а потом на Debian перекат, как привыкнешь к консольке.
>>1144608 Понял, спасибо. >>1144609 Сам и учу, там практически ничего не дают на самих занятиях, просто у меня такой ерундовый характер, что нужна дополнительная мотивация.
>>1144613 Понимаю, к чему ты клонишь, но я в себя насильно программирование не запихиваю, и "вкатывальщик" я не типичный, потому что до курсов уже учился по специальности. Просто так обстоятельства в жизни сложились, что сейчас желание вылезаторствовать соседствует с ежедневным желанием выпилиться, поэтому курсы небольшим якорьком к реальности служат и лишним поводом выйти из дома - вот и всё.
> желание вылезаторствовать соседствует с ежедневным желанием выпилиться, поэтому курсы небольшим якорьком к реальности служат Посоветовал бы придумать себе проект, влиться уже существующий и кодить вместе. Ладно, отстаю и не буду доёбываться, удачи тебе в твоих начинаниях.
>>1144451 >Читай про флаги в программировании. Так есть же там флаг уже — None. Зачем его на ноль-то менять. А в Си один хрен что до, что после было бы 0. Да и можно было и тут изначально word = 0 сделать, а не None. В общем, глупость какая-то, лишняя строка кода.
>на пистоне по другому чуть чуть пишут. Я потому и спросил, зачем это неэлегантное, мм, решение сюда тащить.
При использование кода с openserver появляется ошибка (ошибка указана ниже)
(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1")
Как в сераилайзерах сделать чтобы по полю ForeignKey отображался не айдишник, а конкретное поле из ForeignKey. То есть скажем у меня пост модель Post с ForeignKey к Comment, в Comment есть поле title, как мне в сериалайзере отображать это поле, а не айдишник комента?
>>1144680 Да что ты одно и то же повторяешь-то, в курсе я флагов. Я, на самом деле, просто не прочитал само задание (и кода функции не видел на тот момент), оказывется, None тоже валидное значение word'а (при отсутствии аргументов к программе), а мне казалось почему-то, что и 0, и None к одному результату в итоге приведут.
>На питоне так не пишут. Ну так написал бы, как надо, например, раз уж мы в питон-треде.
>>1144707 Логиню по кукам. У меня в апи есть метод джанговский стандартный логин. Приходит access_token с фейсбука я либо создаю, либо достаю существующего юзера, логиню его через login и возвращаю auth_token, который приложения могут посылать в хедере, но также они и могут все безопасные методы открывать просто без токена. Или это охуеть как тупо и логин надо сносить и везде принимать auth_token и тогда csrf не нужен?
>>1144645 Когда в цикле накачиваешь select .. where то между условиями должно быть AND или OR. У тебя даже пробела нет: SELECT message FROM data WHERE keywords LIKE '%huj%'keywords LIKE '%huj%'keywords LIKE '%pizda%'keywords LIKE '%djigurda%'
>>1142855 Двачую этого анона. На первый взгляд -красивый, но как дошло до сложных вещей там содомия. Костыль на костыле бля, я аж параллель с собой провел, когда лень продумывать сначала архитектуру, а потом горожу все не пришей к пизде рукав. Нужно было простенькую апликуху сделать, взял хост на линоде, настроил гуникорн и нжиникс. И тут сука началось с джангой бля, классметод- это бля для аутистов, проперти бля через жопу сделаны на замыканиях, чтобы инкапсулировать нужен _ внчале, сраные отступы для блоков, сука фигурные скобки или ду енды -в миллион раз лучше, отдельно инициализация переменных и конструктор у типа... Джанга- куча говнокода вне классов. Друзья, как бы я не хейтил в реале C# -вот там ооп, структурируемость, читаемость.
>>1144801 > классметод- это бля для аутистов > проперти бля через жопу сделаны на замыканиях > чтобы инкапсулировать нужен _ внчале > отдельно инициализация переменных и конструктор у типа Пример кода, твои ожидания и реальность или пиздабол. > сраные отступы для блоков, сука фигурные скобки или ду енды -в миллион раз лучше Жаль тебя.
>>1144801 > Джанга- куча говнокода вне классов. > C# -вот там ооп, структурируемость, читаемость
Раньше прогал на джаве, очень уважал всё это ООП, классы, структурироемость (правда читаемости там и близко не было как у питона, ну да ладно, это субъективно)
Перешёл на питон -- вообще вылетело из головы ООП. Конечно, то там, то тут проскакивает необходимость занаследоваться от чужого класса, но собственный код стараюсь организовывать в функции и модули, никаких классов, конструкторов и тем более разветвлённого наследования не горожу. Получается в разы проще и читабельнее, чем джава (и, вероятно Сшарп). А ты поди ещё на каждый класс по файлу создаёшь?
Просто открой свой разум для другой философии и пиши на питоне как питонист, а не как сишарпер, возможно поможет.
ПС: Я не очень фанат питона.
ППС: Конкретно за джангу сказать не могу, очень поверхностно с ней знаком, возможно просто в ней проблема.
>>1144603 >и там требуют прямо со старта начинать изучать питон на линуксе Скинь ссылку на этот дебильный курс, любопытно. Единственное преимущество линукса, это - если ты собираешься пердолиться с консолькой, чего ты делать совершенно не собираешься, учитывая твой вопрос.
conn и cursor лучше создавать через ключевое слово with, ещё лучше не создавать коннекшен, а получать из пула (не знаю как с этим у pymsql)
Про error in your SQL syntax, генерация SQL запроса выглядит говёно как-то, напиши на русском что сделать то хотел.
вместо > insert = 'INSERT INTO data SET message=\'' + remove_symbols(msg) + '\', keywords=\'' лучше использовать более распространённый синтаксис (который SQL стандарт, а не MySQL выдумки) insert = 'INSERT INTO data (message, keywords) VALUES (%s, %s) cursor.execute(insert, [message, keywords])
>>1144898 Ну как бы веб прилага на питоне скорее всего будет под линуксом задеплоена в продакшене, верно?
Даже в рамках веба есть разница с вебом много не работал, говорю наполовину с дивана.
может быть херня с кодировками файлов и коннекшенов к бд да, даже в 3 питоне многопоточность (которая multiprocessing) работает по-разному может быть разное количество доступных системных ресурсов (напр. одновременно открытых сокетов) разная работа с файловой системой
Также не стоит забывать, что питон часто выступает обёрткой над более низкоуровневым кодом, который абсолютно не обязательно работает под виндой, хотя для веба может и так сойдёт, (напр gunicorn под виндой не работает).
Между дистрибутивами линукса (по крайней мере распространёнными) разницы нету.
>>1144915 >скорее всего будет под линуксом задеплоена Да хоть под кастомной ОС на суперкомпьютере. Среда разработки к этому не имеет практически никакого отношения.
Но, допустим, что различия действительно имеются и тебе нужно тестировать твой код именно на линуксе. Я не помню, чтобы речь шла не о кроссплатформенной разработке приложений на кроссплатформенном языке. А о разработке под линукс. >Между дистрибутивами линукса (по крайней мере распространёнными) разницы нету Разработка под дистрибутивы которого различается в той же мере, как и разработка под винду или десктопную убунту.
>что питон часто выступает обёрткой над более низкоуровневым кодом Так он и так является интерпретатором С.
>напр gunicorn под виндой не работает Ты опять предлагаешь писать приложение под определённый веб-сервер. Кто так делает вообще? >Gunicorn natively supports WSGI, web2py, Django and Paster Вот, тебе положили кроссплатформенные фреймворки, чтобы писать веб приложения под питон. Независимые от конкретного веб сервера.
Нет, сейчас на курсах мы будем писать свой питон на ассемблере, чтобы под него разработать кастомный веб сервер, под которым будет запускаться одна статичная html страничка.
С таким же успехом, перед обучением питона, можно людей заставлять учить C++, потому что он тоже может пригодиться.
>>1144946 > Но, допустим, что различия действительно имеются Различия действительно имеются, я написал в каких случаях питон под виндой и линуксом могут вести себя по-разному. К тому же, если бы различий действительно не было и всё было вот прямо совсем кроссплатформено, люди бы гораздо меньше заморачивались всякими запаковками приложений в докер контейнеры и подготовке целых проектных виртуальных машин для новых сотрудников. (нахера такое делается, если можно просто с гита проект стянуть, мм?)
Вопрос ОС конечно холиварный, каждый принимает решение самостоятельно и каждый сам для себя находит компромисс. Ставить на локальную машину кастомную ось для суперкомпьютеров -- вряд ли хорошая идея (хотя возможно и стоит, под виртуалкой),
> Нет, сейчас на курсах мы будем писать свой питон на ассемблере, чтобы под него разработать кастомный веб сервер. > С таким же успехом, перед обучением питона, можно людей заставлять учить C++ Пруф плз, что успех такой же, то что ты привёл супер гиперболизированный пример никак не доказывает что я не прав, и да, иногда бывает полезно выучить С++ для некоторых видов работ. Веб по большей части С++ не требует совсем.
>>1144603 Оригинальному автору вопроса рекомендую пролистать вакансии. Мне конечно лень этим заниматься, но вангую что знание линукса на уровне пользователя будет обязательным или хотя бы желательным в очень многих из них. Вакансий, требующих С++ будет значительно меньше, но и они тоже найдутся.
>>1144946 Далее, > Разработка под дистрибутивы которого различается в той же мере, как и разработка под винду или десктопную убунту В контексте веб-разработки или даже вообще разработки на питоне? Пруф плз. Пруф что вообще могут быть хоть какие-то различия между дистрами и пруф что "мера та же"
> напр gunicorn под виндой не работает > Ты опять предлагаешь писать приложение под определённый веб-сервер. Я не предлагаю, я привожу пример того, что непитоновский платформозависимый код внезапно существует, в случае с gunicorn действительно можно воспользоваться перечисленными фреймворками, что никак не доказывает что нету либ, для которых виндовой замены может и не найтись спойлер: они есть, хотя конкретно для веба пример не приведу, аноны-сеньоры-веб-питонисты, выручайте!.
>что питон часто выступает обёрткой над более низкоуровневым кодом >Так он и так является интерпретатором С. Интерпретатор питона является интерпретатором............. питона. Одна из реализации написана на С и она очень популярна, но она не единственная. Под "является обёрткой" я имел ввиду обращение некоторых библиотек к Сишным либам через Cython или ctypes, которые, конечно, кроссплатформенными быть не обязаны. Кстати да, установка некоторых питоновских пакетов требует предварительной компиляции бинарников. (через pip такое не установишь) Компиляция на винде может стать сущим адом с установкой minGW и танцев с бубнами. но и на линуксе тоже может если честно, если код заточен под винду, но с таким я ещё не сталкивался
Аноны, расскажите про деплой, есть тестовая виртуалка и боевой сервер с одинаковыми операционками (Debian 9), сейчас деплою ветку с фичей на виртуалку и если с ней все будет хорошо, то сливаю с девелопом, а в конце спринта мержу в мастер соответственно отправляю на боевой сервер. Сейчас используется make, но мне он кажется недостаточно гибким. Подразумевается, что проект может быть развернут на сервер только с ssh и apt, пока что из доступных средств нашел только chef на рубях, есть ли что то такое на питоне? Ну и что нибудь для пересоздания виртуалки, что бы можно было быть уверенным, что проект встанет на чистый сервер
шел день N, начались трудности Продолжая чтение своего учебника я наткнулся на то, что слева, и задумался. Вот есть метод d.get(k,v), который, как написано, возвращает значение ключа k или None/v, если ключа нет. d.setdeafault(k,v) делает то же самое, но если ключа нет, он не только возвращает None/v, но и создает ключ с таким значением. Тогда каким же образом работает представленный код? Сначала идет sites.setdefault(site, set()). Этот метод либо возвращает значение ключа site, которое, мы предполагаем, является типа set(), либо создает этот ключ со значением set() и возвращает нам этот пустой set(). И дальше мы в этот пустой (или нет) set() добавляем название сайта. И что? Как это работает? Ведь мы получили значение ключа (returns ... value) и изменили это значение. Это ведь все равно, что я в середине кода возьму пустую строку и напишу 2+2. Это будет statement with no effect. Сначала я подумал, что окей. Значением ключа является сет. Он у нас mutable object, значит его можно изменить через метод. Это верно? Ни когда я изучал Паскаль в школе, ни когда я изучал Си в институте такого не было, но допустим. Но тогда почему мой Pycharm шлет меня нахуй в примере посередине? Йоба это словарь, у которого есть ключ с, значением которого является mutable объект - лист. yoba.get('c') даст мне этот объект (сам объект, а не object reference) и я его расширю с помощью метода для листов .extend. Но почему тогда последняя строчка заваливается? Ведь там я делаю то же самое, но не через метод, а через присвоение. Что не так и чего я не понимаю?
>>1145490 Я на питоне совсем нуль, но тут вроде тебе компилятор/интерпретатор хорошо написал. Нельзя делать присвоение чему-то без имени. В памяти нет этого места, в которое ты сложить хочешь.
>>1145490 Во-первый с чего это вдруг statement with no effect? Ты же сам написал >но если ключа нет, он не только возвращает None/v, но и создает ключ с таким значением То есть он создаёт set, помещает его в словарь, потом возвращает тебе. set уже в словаре, и никуда оттуда не денется.
С присвоением отдельная тема. Традиционно в языках есть lvalue и rvalue. Оператор присвоения обычно является именно оператором: не более одного в строке. По обе стороны есть выражения: lvalue и rvalue, и вот lvalue обычно крайне ограничено.
Формально, нет никаких препятствий так делать. Но давай посмотрим что происходит на самом деле, += делает следующее: берёт значение из идентификатора, вычисляет сумму, присваивает обратно значение идентификатору. То есть это операция не является совсем уж строгим in-place как extend. В ней появляется промежуточный объект (сумма списков), который заменяет объект под идентификатором. Вызов функции не может являться идентификатором, если в твоём примере действительно можно повторно взять получившееся значение через yoba.get('c'), то в общем случае в функциями такой конструкт не имеет смысла.
>>1145399 Docker бери можно делать apt локально заранее, а на сервере вообще голую CoreOS оставить, оно почти как полноценная виртуалка. Зачем вам там make вообще понадобился, это же тулза для многоэтапной сборки из тысяч файлов? Вместо chef вроде бы ansible есть.
>>1145508 Выпиваешь FLASK полный ALCHEMY, зовёшь своего приятеля DJANGO прогуляться до ближайших PYRAMID, и находишь там древний манускрипт озаглавленный AIOHTTP, не понимая что происходит оба становитесь inSANIC и бежите гонять бенчмарки.
>>1145543 >немного с нейросетями побаловаться Такие простые все, яебу. Ты знаешь сколько тебе математики нужно будет асилить чтобы простейшую нейронку собрать? А с бэкэндами нужно охуенно знать базы данных, а не сам питон. Алсо с приходом GraphQL в бэкэнде почти ничего не остаётся.
>>1145543 Очевидные бд, стек tcp/ip, клиент-серверное взаимодействие, деплой, асинхронное программирование и парочку фреймворков типа django\flask\aiohttp >нейросетями побаловаться Тебе в другой тред за этим, ну и с ними обычно не "балуются", а задрачивают матан
Чё почитать про параллельное погромирование на питоне? Как-то дохуя всего - threading, multiprocessing, asyncio. В обычной параллельщине не разбираюсь совершенно, только в NodeJS-колбеки/промисы/async'ки дрочил. Задачи - выполнить несколько независимых http-запросов/ffmpeg-процессов.
>>1145501 Насколько я понял, литерал это явный представитель какого-то класса. [4, 5, 6] литерал листа. yoba.get('c') не литерал. Я ошибаюсь?
>>1145503 Увидел "In certain situations, augmented assignment can result in unexpected errors (see Why does a_tuple += [‘item’] raise an exception when the addition works?), but this behavior is in fact part of the data model". Понял пример с кареткой, она immutable. Но dictionary mutable же. И что это за data model, частью которой являются такие ошибки? У меня в учебнике об этом пока ни слова не было.
>>1145505 Так блэт. Я погуглил про lvalue и rvalue. Почему то есть только про эти штуки в Си, но думаю, что в Питоне также. Lvalue это что-то, что имеет свое место в памяти, что-то на что ссылается как минимум 1 object reference, а rvalue это результаты каких-то промежуточных вычислений, которые просто валяются в памяти, никому не нужны и скоро их съест garbage collector (а может и не съест, кого ебет). Это верно? И yoba.get('c') это и результат вычисления функции (метода), т.е. какая-то промежуточная штуковина - rvalue, которую можно было бы присвоить к чему то типа x = yoba.get('c'), но пытаться записать что-то в нее - плохая идея. Но теперь я не понимаю, почему работает yoba.get('c').update() и yoba['c'] += . Мы же и тут работаем с rvalue под названием yoba.get('c').
Сосаны, пытаюсь установить pyqt5, набираю значит в консоли винды pip install pyqt5, вроде скачивает, начинает ставить, но потом какая то красная залупа вылазит и нихуя. Шо я делаю не так?
>>1145608 >У меня в учебнике об этом пока ни слова не было Плохой учебник/плохой пифон/плохое правило. Кароче, я сам прихуел с твоего примера за пять лет практики программирования на пифоне не было такой ситуации.
>>1145677 Тебе же пишет, что в доступе отказано. Хули ты как нерусский. Либо поставь все файлы питона права everyone, либо переустанови его в другую директорию на другом диске.
>>1145832 >рогалик >qt Ты что-то перепутал. Либо терминал с curses или libtcod, либо pyglet/pygame, шоб опенгл и графон, но qt — это для формошлёпства.
>>1145842 >Ты что-то перепутал. Либо терминал с curses или libtcod, либо pyglet/pygame, шоб опенгл и графон, но qt — это для формошлёпства. У меня немного не типичный рогалик, он именно формошлёпский ибо про управление колонией. >XML Естественно.
>>1145913 Слишком сложно, братишка. Подкинь правильный порядок действий, я уже заебался всю ночь эти сокеты ковырять. Твоё "гугли" дает мне повод предположить, что ты сам нхуя не знаешь. Я уже и в ssl оборачивал и в context, подставлял сертификаты с сайта, certifi пробовал и нихуя. Либо просто http 400 либо [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed. Гугл не помогает
Я правильно понимаю, что в рамках функции f(), перед которой стоит def, не получится использовать те же переменные, что и вне функции? То есть, для примера, для "камень-ножницы-бумага" я хочу создать функцию compare(), в которой будут перечислены все варианты исходов (кто когда проигрывает/выигрывает), и в ней же будут использованы переменные computerChoice и playerChoice, между которыми идет сравнение. После этого я закрываю def, иду генерировать рандомное значение computerChoice и заставлять вводить игрока свой вариант playerChoice = input(). Далее я просто пишу compare() и... нихуя не происходит. То есть для моего варианта нельзя сделать нормальный def и придется писать исходы по ходу программы (я это уже делал - целая куча while'ов и break'ов)?
>>1145933 А nonlocal - это не то же самое, что global? Я просто с глобалом пробовал, он это выдает: UnboundLocalError: local variable 'plScore' referenced before assignment
Опа че, вопрос про функции. Я тогда попытаюсь ответить, и сам спрошу.
>>1145926 Можно сделать, прочитай про передачу параметров. ComputerChoice и playerChoice, которые ты используешь в функции, и ComputerChoice и playerChoice, которые есть вне функции - разные штуковины. Чтобы работало, надо сделать f(a, b), делать сравнения между ними, и писать потом compare(ComputerChoice, playerChoice)
Я понял про lvalue, rvalue и продолжаю читать учебник. Объясните этот момент. Дело в том, что я учил Си в универе, и помню, что там было такое: все локальные переменные существуют только пока мы в функции. То есть, если у нас есть что-то типа foo(a): b = 2, return a + b. То когда мы вызовем foo(1), она создаст b = 2, вернет 3, и b исчезнет (грубо говоря). Я помню, что даже столкнулся с этой проблемой, когда делал функцую, которая дрочила какие-то данные, создавала по ним массив, и возвращала указатель на них. И указатель всегда был null или рандомный, не помню. Суть в том, что функция возвращала указатель на массив, который исчезал сразу после выхода из функции. Так вот, в Питоне такого нет что ли? Мы создаем два списка в теле функции, и возвращаем, как написано, object reference, т.е. ссылки. Разве мы не вернем ссылки на 2 пустых места? Объекты Питона, созданные функциями, существуют вечно? Или как это работает?
Доброго времени суток, пилим приложение айос андроид, на логин вью ставлю @csrf_exempt, всё правильно делаю, или нет? Поясните тут немного, если не лень за куки и сессии, получается им же при логине не откуда взять этот csrf_token? Или есть какой-то более правильный путь написания этой вьюхи?
И ещё хотел про тестинг спросить, как можно для фейсбук логина тесты написать, токен, который они дают истекает через час, соответственно захардкодить нельзя, а каждый раз ручками вводить вроде тупо.
Локальные перемененные существуют только в пространстве функции, значение возвращает функция, когда функция не используется через некоторое время значения переменных освобождаются сборщиком мусора. Ссылки исчезают сразу после выхода из функции.
Из функции можно оперировать глобальной переменной для этого нужно использовать global value_name.
Есть ли что-нибудь с робототехникой на Python ? Если есть, можно ссылку на книги, видео и тд Буду очень благодарен (язык не важен, хотя ру желателен) :3
Есть прилага, которая потенциально работает на нескольких серваках (питон, сложенный в докер контейнеры), я хочу проверить что будет, если мой скрипт упадёт, не успев освободить всякие ресурсы, типа коннекшены к базе и т.д (т.е kill -9 или сервак физически упадёт).
Я хочу искусственно прервать свой скрипт где-нить посередине и посмотреть чё да как, но проблема в том, что для меня exception bubbling внутри прилаги как-то нефига не очевиден. Я много где наследуюсь от кода автором которого я не являюсь и допускаю что где-то в чужом коде вполне может быть except Exception, или просто except, или какой-нить finally, который бы в случае полного падения не отработал бы.
Вопрос такой: как можно уронить питоновское приложение изнутри так, чтобы никакие finally и except-ы не отработали. Прямо как kill -9, только на питоне
>>1146041 Вызвать сам kill -9? Ты про сигналы почитай, ОС убьёт процесс не заходя в питон, так что никакого exception bubbling не будет. Коннекшены разорвёт/файлы закроет тоже ОС.
https://repl.it/repls/MammothProperOperatingsystem Вот тут, внутри функции создаётся массив. Если это массив вернуть, то адрес объекта как внутри, так и вне функции будет одинаковым. Этот адрес можно спокойно скастить в питоновский объект и никаких проблем не будет (разве что ref count собьётся, не знаю тонкостей).
Если же я поступлю так, как ты делал в си >и возвращала указатель на них. То есть, верну только адрес и размер указателя, а затем попробую скастить в питоновский объект, то будет плохо. Как только функция отработала, на тот массив (и все его элементы) никто больше не ссылается, и питон начинает чистку. Да, данные по самому адресу, вроде как, те же, но вот флоаты куда-то исчезли. На сайте он пустой массив показывает, почему-то, локально у меня сегфолтится.
>Разве мы не вернем ссылки на 2 пустых места? Если массивы не возвращать, то в конце функции у обоих массивов refcount снизится на 1 (до 0) и они будут уничтожены в ближайшее время. Если их возвращают, то питон refcount этот либо не снизит, либо сначала на 1 ещё повысит, либо как-то просто напрямую владение передаст, в общем, детали, суть в том, что до 0 refcount не опустится, а значит и уничтожен объект не будет, а значит и место будет не пустым.
>>1146198 В том что у тебя вместо одной ебучего размера экзешки будет тонкая экзешка + много .dll. И если ты запускаешь много процессов из этой экзешки, код внутри .dll не дублируется в памяти и запускается быстрее. Это и есть сакральный смысл dll/shared objects. Более того, LGPL библиотеки, если ты поставляешь их как отдельные dll, не накладывают копилефтных ограничений на твою прогу. Далее, как уже говорил, у тебя там может быть несколько экзешек с общими dll. Всё, это мой последний пост, ебитесь дальше сами со своими пиинсталлерами.
Привет Петухоны. Есть среди вас джуны, которые желают поработать? Деньги не большие, но для регионов норм, оплата почасовая, либо за выполененные задания. Ключевые слова: multithreading, subprocess, websocket, cli. Писать на почту [email protected] с пометкой python monkey. Ищу на дваче, потому что тут все мои друзья.
>>1146501 > >Привет Петухоны. Есть среди вас джуны, которые желают поработать? Деньги не большие, но для регионов норм, оплата почасовая, либо за выполененные задания. Ключевые слова: multithreading, subprocess, websocket, cli. Писать на почту [email protected] с пометкой python monkey. Ищу на дваче, потому что тут все мои друзья. я нихера не понел что это значит, джун вобще должен это знать?
>>1146568 Потому что ты задал k в начале программы раз и навсегда (это то же самое, как если бы ты просто написал k = 1). Чтобы ее менять, нужно создать цикл while, по окончанию которого он возвращается к самому себе и выбирает новое значение.
>>1146614 Ты пытаешься кодить в интерактивной оболочке? Тебе уже сказали, что ты уже установил число, когда первый раз применил random.choice. После этого, чтобы сгенерировать новое число, нужно снова использовать random.choice.
Свой код кидайте через https://repl.it/languages/python3
Книги и ссылка на PyCharm: https://yadi.sk/d/tArKKuQu3Kejuq
Книги еще: https://yadi.sk/d/H-00n-UG3RSQem/
Предыдущий тред
Python питон