# 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/)