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

27. Какие есть решения для синхронизации данных при работе с потоками?

Эта проблема имеет два основных варианта решения. Первый — отказ от совместного использования изменяемых данных и вызовов внешнего кода. При этом данные дублируются в потоках и необходимость обеспечения их синхронизации (если таковая нужна) лежит на программисте[57]. Этот подход ведёт к увеличению потребления оперативной памяти (однако не настолько сильно, как при использовании процессов в Windows — так как для Unix это не критично, процессы небольшие).

Второй подход — обеспечение более гранулированной синхронизации — для отдельных структур данных. В этом случае падает производительность вследствие увеличения числа освобождений/захватов блокировок.

Если необходимо параллельное исполнение нескольких потоков Python кода, то можно воспользоваться процессами, например, модулем processing[58], который имитирует семантику стандартного модуля threading, но использует процессы вместо потоков.

28. Что такое итераторы?

Итератор - это объект, имеющий метод

„next (), который при каждом вызове возвращает

очередной элемент и возбуждает исключение Stoplteration

после исчерпания всех элементов.

Итератор применяется к итерируемому объекту, объекту, элементы которого можно перебрать по одному, то есть он имеет метод __iter__

29. Что такое генераторы?

Генератор - это выражение и цикл с дополнительным

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

для создания элементов последовательности.

30. Что такое list comprehensions?

Генерация списков

res = [x**2 for x in range(1, 25, 2)]

31. Что быстрее встроенные функции map reduce filter или аналогичный код просто через for? Почему?

Встроенные функции быстрее. Так как они написаны на си и оптимизированы.

32. Что значит ключевое слово global?

Когда внутри функции создаются новые переменные, они имеют локальную область видимости. То есть такие переменные определены только в пределах тела функции, и они уничтожаются, когда функция возвращает управление вызывающей программе. Чтобы иметь возможность изменять глобальные переменные внутри функции, эти переменные следует определить в теле функции с помощью инструкции global

33. Какие особенности областей видимости в Python?

под термином область видимости подразумевается пространство имен: то есть место в программном коде, где имени было присвоено значение, определяет область видимости этого имени для программного кода.

Поиск переменных: локальная область видимости - глобальная - встроенная

34. Зачем нужен код исключения?

Нет такого

35. Что такое lambda?

Анонимная функция. лямбда-функция — небольшая функция, возвращающуая результат одного выражения. Преимущество лямбда-функции в том, что она является выражением и может быть использована внутри другого выражения

Пример:

numbers = [1,2,3,4,5] squares = map(lambda x: x*x, numbers)

DJANGO

36. Какой основной шаблон проектирования лежит в основе фреймверка?

Модель – представление – отображение, MVT

Программный код взаимодействия с базой данных представляет собой отдельную область, которая называется «моделью». Бизнес-логика выделяется в область, которая называется «представлением» в MVT. А внешний интерфейс выделяется в область, которая называется «шаблоном», отображением в MVT.

Проще говоря, бизнес-логика — это реализация предметной области в информационной системе.

Бизнес логика – производственная логика, обработка данных, вычисления.

37. Что пошагово происходит, когда пользователь нажал на ссылку? от браузера до приложения и обратно.

1. ОС смотрит в файл hosts и если там нет такого имени, то производит DNS-запрос к DNS-серверу провайдера.

2. DNS-сервер провайдера запрашивает у корневых DNS-серверов, те указывают какие DNS-сервера ответственны за эту зону,

3. DNS-сервер провайдера обращается напрямую к ответственным за эту зону DNS-серверам

4. ОС клиента получает эту информацию и передаёт браузеру.

5. Далее браузер инициирует TCP подключение по ip-адресу

DJANGO

6. На сервере изначально после получение запроса в файле settings проверяется значение переменной ROOT_URLCONF, чаще всего это файл urls.py в корне нашего проекта.

7. В файле привязок (urls), проверяет каждый шаблон сверху вниз и как только будет найдено первое соответствие, DJANGO вызывает функцию представления, ассоциированную с данным шаблоном, передавая ей объект HttpRequest

8. Функция возвращает объект HttpResponse

9. DJANGO преобразует HttpResponse в соответствующий HTTP отклик, который реализует страницу

10. Машина клиента получает данные и движок браузера рендерит HTTP ответ

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