- 1. Виды типизации
- 2. Типизация python
- 3. Что такое переменная
- 4. Числа в python
- 5. Строки в python
- 6. Списки и кортежи в python
- 7. Словарь в python
- 8. Какие типы данных относятся к структурам данных
- 9. Что такое Git
- 10. Как создать Git репозиторий локально
- 11. Что такое git push
- 12. Что делает git commit
- 13. Git merge и rebase
- 14. Что такое виртуальное окружение
- 15. Как установить виртуальное окружение
- 16. Виды форматирования строк
- 17. Cрезы или слайсы в python
- 18. Что такое итерация
- 19. Какие циклы есть в python
- 20. Чем отличается while от for
- 21. Каким образом реализовано ветвление в python
- 22. Как запросить у пользовптеля ввод
- 23. Преобразование типов
- 24. Что такое аннотация типов
- 25. Строка это последовательность или нет
- 26. Что такое PEP8
- 27. Что такое фунция range
- 28. Что делает enumerate
- 29. Какие методы списков
- 30. Что в python не является объектом
- 31. Название переменных
- 32. Что такое литералы
- 33. Можно ли число сделать строкой
- 34. Что делает метод split()
- 35. Что делает метод join()
- 36. Как импортировать модуль
- 37. Как импортировать все содержимое модуля
- 38. Сколько пар ключ значение может быть в словаре
- 39. Какой тип данных может быть значением в словаре
- 40. Как узнать id элемента
- 41. Как узнать версию python
- 42. Отличия второго python от 3
- 43. Как прервать выполнение цикла
- 44. Что означает continue
- 45. Что будет если сравнить 5 и 5.0
- 46. Что быстрее python или c++
- 47. Что такое байт код
- 48. Как избежать конфликтов при импорте файлов
- 49. Что означает %s %d
- 50. Что такое класс
- 51. Что такое наследование
- 52. Что такое инкапсуляция
- 53. Что такое полиморфизм
- 54. Сколько может быть родителей и наследников у класса
- 55. Что такое перегрузка операторов
- 56. Магические методы
- 57. Модификаторы доступа
- 58. Генераторы
- 59. Как пишутся комментарии в python
- 60. Как можно обратить (reverse) порядок элементов в списке
- 61. Если мы не поставим двоеточие в конце строки для цикла "do-while", он все равно сработает?
- 62. Как убрать из списка дубликат элемента
- 63. Расскажите про арифметические операторы //, %, и **
- 64. Как посчитать длину строки (string)
- 65. Расскажите про генераторы списков (list comprehension)
- 66. Что такое HTTP
- 67. Что такое json, xml
- 68. Чем отличается HTML и XML
- 69. Что такое CRUD
- 70. Какой паттерн программирования реализует Django
- 71. На каком этапе в приложении Django происходит запрос к базе данных
- 72. Какой результат будет Post.objects.all() и какого типа вернет
- 73. Что такое SQL
- 74. Каким запросом я могу достать все данные из таблицы
- 75, Что такое многие-ко-многим
- 76. Как реализуется М2М в SQL
- 77. Что такое JOIN и какой он может быть
- 78. Что такое View
- 79. Что такое миксины
- 80. Звёздный синтаксис
- 81. Два способа создания класса
- 82. Чем файл .pyc отличается от .py
- 83. Что делает python объектно-ориентированым
- 84. Как производится отладка программы на Python
- 85. Что такое GIL
- 86. Статусы ответов HTTP
150 вопросов для собеседования на вакансию Python. Часть 1 (без опыта работы)
150 вопросов для собеседования на вакансию Python. Часть 2 (с опытом работы)
- Статическая - типы устанавливаются на этапе компиляции, динамическая - в рантайме.
- Сильная - отсутствие автоматических кастов в другой тип (неявных преборазований). Слабая - наличие таковых.
- Явная - указываем типы везде ручками. Неявная - компилятор/интерпретатор занимается этим сам.
Динамическая, сильная, неявная.
Переменная Python — это идентификатор для ссылки на значение в программе. Переменная содержит место в памяти объекта.
- int - целые числа.
- float - вещественные или действительные числа(числа с плавающей точкой).
- complex - комплексные числа.
- decimal - десятичные дроби.
Cтрока – это упорядоченная последовательность символов, которая предназначена для хранения информации в виде простого текста.
Списки Python схожи с массивами в других языках. Кортеж похож на список, но вы создаете его с круглыми скобками, вместо квадратных. Вы также можете использовать встроенный инструмент для создания кортежей. Разница в том, что кортеж неизменный, в то время как список может меняться.
Словари в Python - неупорядоченные коллекции произвольных объектов с доступом по ключу.
- Массивы
- Стеки
- Очереди
- Связанные списки
- Графы
- Деревья
- Префиксные деревья
- Хэш таблицы
- Map
Распределённая система управления версиями.
git init
Отправка всех неотправленных коммитов на удалённый сервер репозитория.
Фиксировует изменения любых файлов, входящих в репозиторий.
git merge
- принимает содержимое ветки источника и объединяет их с целевой веткой. В этом процессе изменяется только целевая ветка. История исходных веток остается неизменной.
git rebase
— еще один способ перенести изменения из одной ветки в другую. Rebase сжимает все изменения в один «патч». Затем он интегрирует патч в целевую ветку.
В отличие от слияния, перемещение перезаписывает историю, потому что она передает завершенную работу из одной ветки в другую. В процессе устраняется нежелательная история.
Виртуальная среда — это инструмент для поддержки отдельного пространства для проекта с его зависимостями и библиотеками в одном месте.
pip install virtualenv
python -m venv namevenv
- Форматирование f-строками.
- Форматирование методом str.format().
- Форматирование оператором '%'.
item[START:STOP:STEP]
Функция Python slice() возвращает нарезанный объект из набора индексов ввода, указанного пользователем в соответствии с переданными ему аргументами.
Переход к следующему объекту в последовательности.
while
и for
.
For используется только тогда, когда необходимо совершить перебор элементов заранее известное число раз. Цикл while также используется для повторения частей кода, но вместо зацикливания на n количество раз, он выполняет работу до тех пор, пока не достигнет определенного условия
if-elif-else
Для получения информации с клавиатуры в Python есть функция input()
.
- Преобразование типов - это преобразование объекта из одного типа данных в другой тип данных.
- Неявное преобразование типов автоматически выполняется интерпретатором Python.
- Python позволяет избежать потери данных в неявном преобразовании типов.
- Явное преобразование типов также называется приведением типов, типы данных объекта преобразуются с использованием предопределенной функции.
- При приведении типов может произойти потеря данных, поскольку мы приводим объект к определенному типу данных.
В простейшем случае аннотация содержит непосредственно ожидаемый тип. Аннотации для переменных пишут через двоеточие после идентификатора. После этого может идти инициализация значения. Например price: int = 5
Параметры функции аннотируются так же как переменные, а возвращаемое значение указывается после стрелки ->
и до завершающего двоеточия. Например
def indent_right(s: str, width: int) -> str:
.
Да.
Руководство по написанию кода на Python.
Функция range()
создает объект, который внутри себя содержит итератор, выдающий элементы из диапазона, определяемого аргументами функции range(старт, стоп, шаг).
Если начальное значение счётчика enumerate()
не передаётся — оно, по умолчанию, устанавливается в 0. Функция создаёт объект, генерирующий кортежи, состоящие из индекса элемента и самого этого элемента.
- list.append(x) Добавляет элемент в конец списка
- list.extend(L) Расширяет список list, добавляя в конец все элементы списка L
- list.insert(i, x) Вставляет на i-ый элемент значение x
- list.remove(x) Удаляет первый элемент в списке, имеющий значение x. ValueError, если такого элемента не существует
- list.pop([i]) Удаляет i-ый элемент и возвращает его. Если индекс не указан, удаляется последний элемент
- list.index(x, [start [, end]]) Возвращает положение первого элемента со значением x (при этом поиск ведется от start до end)
- list.count(x) Возвращает количество элементов со значением x
- list.sort([key=функция]) Сортирует список на основе функции
- list.reverse() Разворачивает список
- list.copy() Поверхностная копия списка
- list.clear() Очищает список
В python всё является объектом.
Имя переменной может состоять только из цифр, букв и знаков подчеркивания. Имя переменной может начинаться только с буквы или с нижнего подчеркивания. Никаких чисел в начале имени переменной быть не должно. Имя переменной не может содержать ключевые слова (зарезервированные) языка Python. Принято разделять слова нижним подчеркиванием.
Литерал в Python – это простейший способ создания объектов.
Чтобы конвертировать число в строку, используйте встроенную функцию str()
.
Разбивает строку на части, используя специальный разделитель, и возвращает эти части в виде списка
str.split([разделитель [, maxsplit]])
.
Метод str.join()
возвращает строку, которая является конкатенацией (объединением) всех элементов строк итерируемого объекта iterable. В итоговой строке элементы объединяются между собой при помощи строки-разделителя str.
Используя ключевое слово “import”, например import random
Использование псевдонимов — as. Некоторые модули имеют длинное и неудобное название. Для удобства и сокращения количества кода программист может заменить его на своё.
Для импорта конкретных объектов используют конструкцию from ... import ...
.
from module_name import *
import module_name
Ограничено объемом памяти.
Ключом может являться в принципе любой неизменяемый тип данных.
Функция id()
возвращает уникальный идентификатор для указанного объекта.
В консоли прописать python --version
Ограничено объемом памяти.
Оператор break
досрочно прерывает цикл.
Оператор continue
начинает следующий проход цикла, минуя оставшееся тело цикла (for или while).
True
C++
Python - интерпретируемый язык программирования. Он не конвертирует свой код в машинный, который понимает железо (в отличие от С и С++). Вместо этого, Python-интерпретатор переводит код программы в байт-код, который запускается на виртуальной машине Python (PVM).
%s
Строка %d
Десятичное число.
Класс — тип, описывающий устройство объектов.
Возможность одному классу выступать в качестве наследника для другого, перенимая тем самым его свойства и методы.
Ограничение доступа к составляющим объект компонентам (методам и переменным). Инкапсуляция делает некоторые из компонент доступными только внутри класса.
Разное поведение одного и того же метода в разных классах.
Неограниченное количество.
Один из способов реализации полиморфизма, когда мы можем задать свою реализацию какого-либо метода в своём классе.
Это специальные методы в python, обрамленные двумя нижними подчеркиваниями
- Инициализация объекта:
__init_
- Строковые представления:
__repr__
,__str__
- Итерация:
__iter__
,__next__
и другие
Есть три типа модификаторов доступов в Python ООП:
- публичный
public
- приватный
__private
- защищенный
_protected
Это функция, которая будучи вызванной в функции next() возвращает следующий объект согласно алгоритму ее работы. Вместо ключевого слова return в генераторе используется yield.
С помощью символа #
. Так же есть такое понятие как docstring задать его можно с помощью тройных кавычек.
С помощью среза [::-1]
или встроенной функции reversed()
.
В python такой цикл не реализован. Это вопрос из тех, которые с подвохом, когда упоминают элементы других языков.
Для этого можно конвертировать список во множество set()
.
- Оператор // выполняет целочисленное деление и возвращает целую часть числа, полученного в результате операции:
7 // 2 = 3
- Оператор ** возводит в степень:
2**10 = 1024
- Оператор % возвращает результат деления по модулю, то есть остаток после деления:
13%7 = 6
.
Для этого вызываем функцию len()
.
Генераторы позволяют создавать списки с помощью одной строки кода
>>> [i for i in range(1, 11, 2)]
[1, 3, 5, 7, 9]
HyperText Transfer Protocol — «протокол передачи гипертекста»
JSON - текстовый формат обмена данными, основанный на JavaScript. XML - в переводе с англ eXtensible Markup Language — расширяемый язык разметки. Используется для хранения и передачи данных.
Разница: HTML - это язык разметки, который используется для разработки веб-страниц. Его основная цель - отображение данных с акцентом на их внешний вид. XML - это язык разметки, основной целью которого является транспортировка и хранение данных.
Терамин обозначающий четыре базовые функции: создание (create), чтение (read), редактирование (update) и удаление (delete).
Фреймворк Django реализует архитектурный паттерн Model-View-Template.
В DRF Request-Process-Response.
QuerySet может быть создан, отфильтрован, ограничен и использован фактически без выполнения запросов к базе данных. База данных не будет затронута, пока вы не спровоцируете выполнение QuerySet.
Объект класса QuerySet.
SQL или Structured Query Language (язык структурированных запросов) — язык программирования, предназначенный для управления данными в СУБД.
SELECT * FROM nametable
Связь многие ко многим описывает ситуацию, когда объект первой модели может одновременно ассоциироваться с несколькими объектами второй модели. И наоборот, один объект второй модели может также одновременно быть ассоциирован с несколькими объектами первой модели. Например, один студент может посещать несколько курсов, а один курс могут посещать несколько студентов.
Связь многие ко многим подразумевает, что записи в одной таблице могут иметь множество ссылок на другую таблицу и наоборот. Когда есть такой тип связи нужно создавать дополнительную таблицу, которая сведет связь многие ко многим до связи один ко многим.
- INNER JOIN (CROSS JOIN) - внутреннее (перекрёстное) объединение.
- LEFT JOIN - левостороннее внешнее объединение.
- RIGHT JOIN - правостороннее внешнее объединение.
Views отвечают за обработку и передачу данных и могут реализовывать одну или несколько функций. В Django используются два вида представлений:
- Представления-функции (view functions),
- Представления-классы (class based views).
Mixin представляет собой набор свойств и методов , которые могут быть использованы в различных классах, которые не приходят из базового класса.
-
- и ** для передачи аргументов в функцию;
-
- и ** для сбора переданных в функцию аргументов;
- ** для принятия только именованных аргументов;
-
- при распаковке кортежей;
-
- для распаковки итерируемых объектов в список/кортеж;
- ** для распаковки словарей в другие словари.
Класс type() с тремя аргументами вернет объект нового типа. Это по сути динамическая форма инструкции class, ее еще называют метакласс.
type(class_name, super_classes, attributes_dict)
.pyc
содержат скомпилированный байт-код исходных файлов Python
Он следует парадигме объектно-ориентированного программирования, которая построена вокруг классов (classes) и их экземпляров (instances). Это позволяет реализовать следующие функции:
- сокрытие внутренней структуры данных
- абстракция
- наследование
- полиморфизм (способность выбирать правильный метод в зависимости от типа данных)
- ограничение доступа к данным.
Использовать IDE с поддержкой дебага либо использовать модуль pdb
import pdb; pdb.set_trace()
Глобальная блокировка интерпретатора. Это механизм, которая не позволяет нескольким потокам выполнить один и тот же байткод.
Коды сгруппированы в 5 классов:
- Информационные 100 - 199
- Успешные 200 - 299
- Перенаправления 300 - 399
- Клиентские ошибки 400 - 499
- Серверные ошибки 500 – 599
Подробнее https://developer.mozilla.org/ru/docs/Web/HTTP/Status