# Python FAQ ## Социальное ### Перед тем, как задать вопрос - [Убедись, что это не мета-вопрос](http://nometa.xyz) - [Правильно задай свой вопрос](https://m.habr.com/ru/post/460221/) ### Отправка фрагментов кода в чат - Не приветствуются скриншоты кода. - Небольшие фрагменты кода необходимо расположить внутри обратных кавычек (backtick, кнопка 'ё' в латинской раскладке, слева от кнопки 1). Для однострочных фрагментов: `source code example` Для многострочных (до 10 строк) фрагментов: ``` source code example ``` Если необходимо отправить более 10 строк, используйте сторонние сервисы: - [Pastebin](https://pastebin.com/) - [GitHub Gist](https://gist.github.com/) - [Hastebin Telegram Bot](https://t.me/SimplePasteBot) ### О питоне #### Где Python хорош и где его используют Python достаточно распространён в веб-разработке, среди ботоводов, админов и девопсов, в среде Data Science и понемногу во всех остальных IT отраслях, в т.ч. в гейминге в качестве вспомогательного #### Как выучить Python за неделю Никак #### [Как выучить Python эффективно](https://github.com/ru-python-beginners/faq) #### Как понять, что ты выучил Python, дайте мне тесты Никакой тест не покажет твои знания языка. Язык постоянно развивается и знания быстро становятся неактуальны. Чтобы знать питон нужно постоянно его учить. #### Нужен ли английский для Python? Да, обязательно. Почти вся доступная и полезная информация на английском #### Хочу в дата сайнс, с чего начать? [Roadmap](https://i.am.ai/roadmap/) #### Хочу пилить веб, с чего начать? [Django](https://tutorial.djangogirls.org/ru/) [Ещё django](https://docs.djangoproject.com/) [Flask](https://flask-russian-docs.readthedocs.io/ru/latest/) [Aiohttp](https://docs.aiohttp.org/en/stable/) [FastApi](https://fastapi.tiangolo.com/) #### Хочу пилить телеграм ботов, с чего начать? [Библиотеки](https://core.telegram.org/bots/samples#python) [Введение в апи](https://core.telegram.org/bots) [Апи](https://core.telegram.org/bots/api) #### Сколько библиотек в stdlib [Можешь сам посчитать](https://docs.python.org/3/library/index.html) #### Какую информацию можно найти на python.org [Введение для начинающих](https://www.python.org/about/gettingstarted/) [Документацию, отсортированную по разделам](https://docs.python.org/3/) [Ссылку на скачивание](https://www.python.org/downloads/) [Гайд для разработчиков питона ](https://devguide.python.org/) [Список всех PEP](https://www.python.org/dev/peps/) [Конференции](https://www.python.org/community/workshops/) #### Каким и почему менеджером пакетов пользоваться Самые популярные - [pip](https://pip.pypa.io/en/stable/), [pipenv](https://github.com/pypa/pipenv), [poetry](https://github.com/python-poetry/poetry), [dephell](https://github.com/dephell/dephell) Используйте любой, который вам по нраву. Каждый из них имеет свои плюшки, которые иногда не нужны. PIP является стандартным, который поставляется вместе с Python #### Как поставить несколько питонов в систему Самый простой вариант использовать [pyenv](https://github.com/pyenv/pyenv), однако это можно сделать и вручную. При правильной установке не должно возникать конфликтов при установке любых версий питона параллельно #### Что использовать - асинк или потоки Это тема не одной книги. Каждый инструмент хорош в своей области задач. Ниже совсем кратко. Если нужно запускать не CPU-bound задачу в фоне - используй потоки Если у тебя высоконагруженное приложение с большим количеством I/O bound задач - используй асинк #### [Официальный Python FAQ](https://docs.python.org/3/faq/) ## Проблемы с установкой питона > Python is not recognized as an internal or external command Краткий ответ: [добавьте питон в PATH](https://datatofish.com/add-python-to-windows-path/) ## Проблемы, связанные с питоном ### Базы данных #### После INSERT UPDATE DELETE данные не изменяются Краткий ответ - `db.commit()` [Описание](https://ru.wikipedia.org/wiki/Commit_(SQL)) #### Почему SQL инъекции плохо При наличии возможности SQL инъекции злоумышленник может получить доступ в базу данных и взять практически любые данные, какие пожелает. Самый простой пример SQL инъекции: ```python user_request = req.json()['where'] # '; SELECT secrets from secure_table;' cur.execute("SELECT * FROM table WHERE %s" % user_request) return cur.fetchall() ``` #### Как работать с транзакциями cursor есть абстракция над транзакцией. Её результат можно применить (`cursor.commit()`) или отменить(`cursor.rollback()`). Для более полного понимания транзакций необходимо узнать про ACID, уровни изоляции и феномены, из за которых они появились. ## Общие вопросы ### Где развернуть свой код бесплатно? [Обзор хостингов с хабра](https://m.habr.com/ru/post/535168/)