Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
python&django.docx
Скачиваний:
24
Добавлен:
13.04.2015
Размер:
81.98 Кб
Скачать
  1. нормализация и денормализация БД

Приведение БД к нормальной форме называется ее нормализацией.

Так что же такое нормализация? В основном, это процесс эффективной организации данных в базе. При этом решаются две основные задачи или цели: устранение лишних данных (для примера, хранение одних и тех же данных в нескольких таблиц) и обеспечение ощущения взаимозависимости данных (только для связанных между собой данных разных таблиц)

Нормализация несет с собой немало преимуществ. Очевидно, что в нормализованной базе данных уменьшается вероятность возникновения ошибок, она занимает меньше места на жестком диске и т.д.

Денормализация- это не результат кривых рук. Это не недоделанная нормализация, это намеренное нарушение нормальных форм, для увеличения производительности.

В запросах к полностью нормализованной базе нередко приходится соединять до десятка, а то и больше, таблиц. А каждое соединение — операция весьма ресурсоемкая. Как следствие, такие запросы кушают ресурсы сервера и выполняются медленно.  В такой ситуации может помочь: - денормализация путем сокращения количества таблиц. Лучше объединять в одну несколько таблиц, имеющих небольшой размер, содержащих редко изменяемую (как часто говорят, условно-постоянную, или нормативно-справочную) информацию, причем информацию, по смыслу тесно связанную между собой.  В общем случае, если в большом количестве запросов требуется объединять более пяти или шести таблиц, следует рассмотреть вариант денормализации базы данных.

  • Денормализация путём ввода дополнительного поля в одну из таблиц. При этом появляется избыточность данных, требуются дополнительные действия для сохранения целостности БД.

2. Поменять местами значение двух переменных

a, b = b, a

3. быстро убрать из списка или кортежа повторы

преобразовать в set и обратно

4. сложение собственных классов

переопределение встроенного методa __add__

5. В чем отличие [i for i in arr] от (i for i in arr)?

[i for i in arr] - вернет список, а (i for i in arr) - вернет генератор,

который хранит текущую точку исполненияк,

к генератору можно применить метод next()

6. В чем отличие новых и старых классов?

новые классы предоставляют едионообразную объектную модель,

наследование от встроенных типов и создание статических методов и методов

класса, старые классы удалены в python3.0

7. что такое gil?

Эта штука в Cpython и PyPy позволяет одновременно запускать только один

питоновский поток — остальные обязаны ждать переключения GIL на них.

8. Что такое Pypy?

Это интерпретатор python, написанный на python

9. Что такое with

Оператор with упрощает код, который раньше использовал блоки try...finally

пример:

with open('/etc/passwd', 'r') as f:

for line in f:

print(line)

После выполнения этого оператора файловый объект f будет автоматически

закрыт, даже если внутри цикла возникнет исключение.

10. Изменяемые и неизменяемые типы данных.

tuple, int, str — это неизменяемые данные, list и dict — изменяемые.

11. Что может являться ключом?

ключем могут быть неизменяемые, то есть хешируемые типы - tuple, int, str

12. Каким образом нужно изменить класс, что бы он смог быть ключом?

по умолчанию экземпляры наших классов хешируемы и могут быть ключами

словаря, но если для класса реализован метод __eq__ то его экземпляры

перестают быть хешируемыми, чтобы исправить положение нужно реализовать спец

метод __hash__:

def hash (self):

return hash(id(self))

13. Менеджеры контекста

Менеджеры контекста позволяют упростить программный код,

гарантируя выполнение определенных операций до и после выполнения

некоторого блока программного кода. Такое поведение обусловлено тем,

что менеджеры контекста определяют два специальных метода -

enter () и exit (), которые интерпретируются особым образом

в области видимости инструкции with

14. Что такое декораторы?

Декоратор в питоне представляет собой функцию, которая может изменить поведение другой функции.

15. В какой момент вызывается декоратор?

Декоратор вызывается когда вызывается декорируемая функция

16. Может ли декоратор НЕ возвращать декорируемую им функцию?

Может

17. Можно ли декорировать класс?

Да, можно.

18. Может ли класс быть декоратором?

Да, может.

19. Чем отличается @staticmethod от @classmethod? 

Статические методы, вызываются без экземпляра класса.

Методы класса похожи на них, но интерпретатор автоматически передает методам класса сам класс (а не экземпляр) в первом аргументе, независимо от того, вызываются они через имя класса или через экземпляр:

classmethod - это декоратор, применяющийся для того, чтобы при вызове метода в качестве первого параметра передавался класс, а не экземпляр.

>>> class A: ... @classmethod ... def fun(cls): ... print cls ... >>> a = A() >>> a.fun() __main__.A

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]