Менеджер контекстной рекламы что это: Специалист по контекстной рекламе – ppc.world

Чем занимается специалист по контекстной рекламе? — Qmedia на vc.ru

241 просмотров

В этой статье расскажем, кто такой специалист по контекстной рекламе, чем он занимается, и почему важно, чтобы настраивал рекламу именно он, а не специалист «на все руки».

Кстати часто специалистов по контекстной рекламе называют котентекстологами или PPC-специалистами.

Кто такой PPC-специалист?

PPC-специалист — это человек, который настраивает и управляет контекстной рекламой (рекламой в поиске и в сетях, т. е. на сайтах-партнёрах Яндекса и Google). Если говорить про Беларусь и СНГ, то наши контекстологи работают в системах Яндекс.Директ и Google Ads.

Контекстолог работает в Google Ads и Яндекс.Директ, чтобы реклама ваших товаров/услуг была показана в поиске и в сетях, когда их ищут.

Что входит в задачи специалиста по контекстной рекламе?

Когда клиент обращается за услугой по настройке рекламы в Яндекс.

Директ или Google Ads, PPC-специалист делает следующее:

  • Аудит сайта и рекламного кабинета
    Специалист смотрит, какие запущены рекламные кампании, что в них можно улучшить (сделать корректировки, добавить новые объявления и форматы и т. д.), какие кампании нужно остановить.Отдельно контекстолог смотрит посадочные страницы (страницы, на которые ведёт реклама), чтобы определить, релевантны они или нет (т.е. что текст рекламных объявлений соответствует тому, что на сайте). Параллельно специалист отмечает, что можно улучшить на страницах, чтобы они были более конверсионными. Обычно PPC-специалист предлагает добавить целевое действие, цены, вынести УТП на первый экран и т. д.Перед запуском контекстной рекламы важно также изучить структуру сайта, т.к. она важна при формировании групп объявлений. На примере будет проще понять. У вас есть интернет-магазин косметики. В его структуре есть две страницы с масками для лица: тканевыми и обычными. В таком случае PPC-специалист предложит сделать две группы объявлений: для тканевых масок и обычных.
    А если на сайте одна страница со всеми масками для лица, то вам предложат сделать одну группу объявлений для всех масок.
  • Разработка стратегии продвижения
    PPC-специалист выбирает рекламные системы, типы кампаний для запуска, что будет рекламироваться, сколько будет потрачено средств. А также планирует структуру аккаунта и стратегии рекламных кампаний.
  • Настройка рекламных кампаний
    Для каждой кампании PPC-специалист выбирает цель, регион продвижения, настраивает корректировки и таргетинги. На этом же этапе контекстолог собирает ключевые слова, по которым ищут товары/услуги клиента, группирует их.
  • Составление рекламных объявлений и создание баннеров
    У объявлений в контекстной рекламе есть строгие ограничения по количеству символов и тексту (нельзя писать «капсом», ставить много восклицательных знаков, использовать запрещенные слова и т. д.). PPC-специалист учитывает все эти моменты, когда создаёт объявления.
    Ещё контекстолог готовит баннеры для рекламы в сетях. Тут важно делать для каждого объявления как можно больше форматов. А их в контекстной рекламе очень много.
    Делать каждый баннер вручную проблематично, т.к. требует много времени. Чтобы делать работу быстро и качественно, PPC-специалисты используют специальные графические редакторы, в которых можно делать один баннер сразу в нескольких размерах.
  • Настройка систем аналитики: GTM, Метрика, Analytics
    Они позволят тщательно оценивать эффективность различных каналов платной рекламы.
  • Управление рекламными кампаниями и аналитика

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

Что делать, когда нужен специалист по контекстной рекламе?

Как видите, у специалиста по контекстной рекламе достаточно задач, которые нужно делать внимательно и аккуратно.

Труд PPC-специалистов сейчас высоко ценится, и собственники бизнеса не всегда могут позволить себе взять отдельного контекстолога в штат. Плюс, его нужно будет загрузить на полный рабочий день (часто другими задачами).

В таких условиях появляется соблазн обратиться к фрилансеру. Это вполне хороший вариант, если вы обращаетесь к специалисту именно по контексту. А, если это специалист «на все руки», то ожидать безупречной работы не стоит.

Есть ещё один вариант — обратиться в агентство интернет-маркетинга с полноценным отделом контекстной рекламы. Это дешевле, чем взять себе сотрудника, и надёжней, чем фрилансер. И это будет узкий специалист, а не человек, который делает сразу всё, но по чуть-чуть.

Если хотите, чтобы наши PPC-специалисты настроили вам контекстную рекламу в Яндекс.Директ или Google Ads, обращайтесь к нам!

Должностные обязанности специалиста по контекстной рекламе

Цифровой маркетинг — мировая быстрорастущая отрасль. Глобальная цифровизация бизнеса, переход в цифровое пространство и развитие интернет-рекламы делают сегодняшний день лучшим временем для того, чтобы начать карьеру в качестве PPC-специалиста по рекламе.

Даже с учетом спада деловой активности, вызванного пандемией COVID-19, ожидается, что организации и частные лица потратят $332 млрд. на цифровую рекламу к началу 2021 году. Аналитики прогнозируют, что общие годовые расходы увеличатся до $500 млрд. к 2024 году.

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

Кто такой специалист по контекстной рекламе

Контекстолог — специалист по цифровой рекламе, который фокусируется на PPC-маркетинговом канале. Контекстолог использует знания и опыт для разработки, создания и реализации цифровых рекламных кампаний, которые соответствуют целям и задачам организации.

PPC-эксперт по рекламе может быть самостоятельно занятым фрилансером, подрядчиком, нанятым агентством контекстной рекламы или работать в составе собственной маркетинговой команды.

Клиенты контекстолога могут быть внутренними (сотрудники компании, работающие над кампаниями по продвижению бизнеса или организации) или внешними (потребители, которые обращаются в агентство с заказом услуг).

Чем занимается специалист по контекстной рекламе

Разработка и создание PPC-кампаний

Контекстные специалисты играют важную роль в регулярных рекламных операциях в цифровом маркетинге. Приоритетная обязанность контекстолога — разрабатывать и создавать кампании PPC для внутренних и внешних клиентов.

Создание рекламной кампании — это многогранный процесс, в котором задействованы разносторонние навыки. Грамотная реализация действенной рекламной кампании включает:

  • Исследование ключевых слов и ставок.
  • Таргетинг на аудиторию.
  • Рекламный копирайтинг.
  • Создание предложения.
  • Работа с целевой страницей.
  • Подбор семантики для страницы.
  • Понимание основ юзабилити.
  • Аналитика и работа с инструментами.

Мониторинг действенности кампании

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

В зависимости от специфики кампании PPC-специалисты могут сосредотачиваться на одной рекламной сети или работать с двумя сетями — Яндекс и Google, одновременно.

Аналитика и оптимизации PPC-кампаний

Контекстологи обеспечивают пользу и выгоду для клиентов, анализируя результаты рекламных интернет-кампаний и оптимизируя их для повышения конверсии.

PPC-специалисты оптимизируют кампании следующими способами:

  • регулирование таргетинга и ключевых слов;
  • настройка ставок;
  • изменение параметров таргетинга на аудиторию;
  • тестирование с другим рекламным текстом;
  • изменение ценностного предложения или CTA;
  • добавление минус-слов.

Определение возможностей CRO

Специалисты по контексту играют роль в определении возможностей оптимизации коэффициента конверсии (CRO), который влияет на результативность кампании, повышая ее.

Возможности CRO включают изменение целевых страниц и требуют навыков веб-разработки или программного обеспечения CRO. Некоторые контекст-специалисты могут реализовать эти изменения сами, в то время как другие могут полагаться на членов команды с дополнительными наборами навыков.

Работа в кооперативе

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

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

9 обязательных навыков специалиста по контекстной рекламе

  1. Рекламный копирайтинг. Контекстологи используют навыки письма, чтобы создавать убедительные рекламные тексты и писать убедительные призывы к действию, которые побуждают аудиторию переходить по ссылкам.
  2. Креативный дизайн рекламы. Специалисты по контекстной рекламе участвуют в разработке как текстовых, так и графических рекламных объявлений в поисковой и контекстно-медийной сети. Они творчески подходят для того, чтобы реклама выглядела привлекательной и привлекала внимание аудитории.
  3. Рекламные сети (Google Ads, Яндекс.Директ). Эксперты по контекстной рекламе должны быть знакомы с ведущими сетями рекламы в интернете.
  4. Социальные сети (VK, Одноклассники, Facebook, Instagram, Tik Tok, Twitter). Контекстолог также может управлять кампаниями PPC в социальных сетях. Опыт управления объявлениями в VK, Facebook, Instagram и др. соцсетях является преимуществом.
  5. Реклама в сообществах. Специалист по контекстной рекламе также может разрабатывать и проводить рекламные кампании на сайтах-сообществах, таких как Reddit, который является одним из популярнейших сайтов в мире.
  6. Коммуникация. Эксперты по контекстной рекламе должны четко и часто общаться с клиентами, менеджерами и членами команды для обеспечения требуемых результатов, своевременного решения задач и соответствия бизнес-требованиям.
  7. Исследование ключей. Неправильный подбор ключевых слов для таргетинга приводит к нежелательным результатам кампании, что делает исследование и подбор ключей приоритетным этапом в реализации успешной рекламной кампании.
  8. Аналитика кампании. PPC-специалисты должны отслеживать результаты рекламных кампаний с помощью инструментов аналитики, определять перспективы для развития, улучшения и выполнять оптимизацию для повышения продуктивности кампании.
  9. Работа в команде. Специалисты по контекстной рекламе должны результативно сотрудничать с другими профессионалами в области маркетинга с альтернативными точками зрения и дополнительными навыками.

Как стать специалистом по контекстной рекламе

Карьера в качестве контекстолога предоставляет перспективы для реализации творческого потенциала и действенного влияния на бизнес-клиентов, но с чего начать?

Простой способ — начать с проверенного метода освоения области, получить знания и опыт работы с маркетинговым процессом, а далее использовать эти навыки в своей первой работе в качестве PPC-специалиста.

Приятным бонусом является то, что это займет всего несколько месяцев вместо нескольких лет.

С помощью курсов контекстной рекламы от компании «Веб Фокус» вы получите не только ценные и полезные знания, но и практический опыт работы над собственными кампаниями на протяжении курса и применяя усваиваемые принципы на деле.

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

Ольга Гоцман

ведущий SEO-специалист компании «Веб Фокус»

27. Контекстные менеджеры — Документация Python Tips 0.1

Контекстные менеджеры позволяют точно распределять и освобождать ресурсы когда ты хочешь. Наиболее широко используемым примером контекстных менеджеров является с оператором . Предположим, у вас есть две связанные операции, которые вы хотели бы выполнить как пару, с блоком кода между ними. Контекстные менеджеры позволяют вам сделать именно это. Например:

 с open('some_file', 'w') как open_file:
    open_file.write('Привет!')
 

Приведенный выше код открывает файл, записывает в него некоторые данные и затем закрывает это. Если при записи данных в файл возникает ошибка, он пытается закрой его. Приведенный выше код эквивалентен:

 file = open('some_file', 'w')
пытаться:
    file.write('Привет!')
окончательно:
    файл.закрыть()
 

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

Обычный вариант использования контекстных менеджеров — блокировка и разблокировка ресурсов. и закрытие открытых файлов (как я уже показал вам).

Давайте посмотрим, как мы можем реализовать наш собственный Context Manager. Это должно позволить нам понять, что именно происходит за кулисами.

27.1. Реализация контекстного менеджера как класса:

По крайней мере, контекстный менеджер имеет __enter__ и Определен метод __exit__ . Давайте создадим собственный контекст открытия файла. Менеджер и узнать основы.

 файл класса (объект):
    def __init__(я, имя_файла, метод):
        self.file_obj = открыть (имя_файла, метод)
    защита __enter__(сам):
        вернуть self.file_obj
    def __exit__(я, тип, значение, трассировка):
        self.file_obj.close()
 

Просто определив методы __enter__ и __exit__ , мы можем использовать наш новый класс в с оператором . Давайте попробуем:

 с File('demo.txt', 'w') как open_file:
    open_file.write('Привет!')
 

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

  1. Оператор with хранит метод __exit__ файла сорт.
  2. Вызывает метод __enter__ класса File .
  3. Метод __enter__ открывает файл и возвращает его.
  4. Дескриптор открытого файла передается в open_file .
  5. Мы записываем в файл, используя .write() .
  6. Оператор with вызывает сохраненный метод __exit__ .
  7. Метод __exit__ закрывает файл.

27.2. Обработка исключений

Мы не говорили о типе , значении и трассировке аргументы метода __exit__ . Между 4-м и 6-м шагом, если возникает исключение, Python передает тип, значение и трассировку исключение из __exit__ метод. Это позволяет метод __exit__ чтобы решить, как закрыть файл и требуются ли какие-либо дальнейшие действия. В нашем случае мы не обращаем на них никакого внимания.

Что, если наш файловый объект вызовет исключение? Возможно, мы пытаемся получить доступ к методу файлового объекта, который он не поддерживает. Для экземпляр:

 с файлом ('demo.txt', 'w') как open_file:
    open_file.undefined_function('Привет!')
 

Перечислим шаги, которые предпринимает с оператором , когда обнаружена ошибка:

  1. Он передает тип, значение и трассировку ошибки в __exit__ метод.
  2. Позволяет методу __exit__ обрабатывать исключение.
  3. Если __exit__ возвращает True , то исключение было корректно обрабатывается.
  4. Если метод __exit__ возвращает что-либо, кроме True , тогда исключение вызывает с оператором .

В нашем случае метод __exit__ возвращает Нет (когда нет возврата встречается оператор, то метод возвращает None ). Поэтому, оператор с вызывает исключение:

 Traceback (последний последний вызов):
  Файл "", строка 2, в 
AttributeError: объект «файл» не имеет атрибута «undefined_function»
 

Попробуем обработать исключение в __exit__ метод:

 файл класса (объект):
    def __init__(я, имя_файла, метод):
        self.file_obj = открыть (имя_файла, метод)
    защита __enter__(сам):
        вернуть self.file_obj
    def __exit__(я, тип, значение, трассировка):
        print("Исключение обработано")
        self.file_obj.close()
        вернуть Истина
с File('demo.txt', 'w') как open_file:
    open_file.undefined_function()
# Вывод: Исключение обработано
 

Наш метод __exit__ вернул True , поэтому исключение не возникло оператором с оператором .

Это не единственный способ реализации менеджеров контекста. Есть еще одно способ, и мы рассмотрим его в следующем разделе.

27.

3. Реализация диспетчера контекста в качестве генератора

Мы также можем реализовать диспетчеры контекста с помощью декораторов и генераторов. Python имеет модуль contextlib именно для этой цели. Вместо class, мы можем реализовать диспетчер контекста, используя функцию генератора. Давайте посмотрим на простой, бесполезный пример:

 из contextlib import contextmanager
@contextmanager
деф открытый_файл (имя):
    f = открыть (имя, 'w')
    пытаться:
        выход f
    окончательно:
        е.закрыть()
 

Хорошо! Такой способ реализации контекстных менеджеров кажется более удобным. интуитивно понятный и простой. Однако этот метод требует определенных знаний о генераторы, yield и декораторы. В этом примере мы не поймали ни одного исключения, которые могут возникнуть. Он работает в основном так же, как предыдущий метод.

Давайте немного разберем этот метод.

  1. Python обнаруживает ключевое слово yield . За счет этого создается генератор вместо обычной функции.
  2. Из-за украшения вызывается contextmanager с функцией имя ( open_file ) в качестве аргумента.
  3. Декоратор contextmanager возвращает генератор, обернутый Объект GeneratorContextManager .
  4. GeneratorContextManager назначается open_file функция. Поэтому, когда мы позже назовем функция open_file , мы на самом деле вызывают объект GeneratorContextManager .

Итак, теперь, когда мы все это знаем, мы можем использовать только что сгенерированный контекст. Такой менеджер:

 с open_file('some_file') как f:
    f.write('привет!')
 

Использование оператора with – LearnDataSci

Автор: Cansin Guler
Инженер-программист

Контекстные менеджеры используются для установки и удаления временных контекстов, установки и разрешения пользовательских настроек, а также получения и освобождения ресурсов. open() Функция для открытия файлов — один из самых известных примеров контекстного менеджера.

Менеджеры контекста размещают блоки кода между двумя отдельными частями логики:

  1. Логика входа — выполняется непосредственно перед выполнением вложенного блока кода
  2. Логика выхода — выполняется сразу после вложенного блока кода готово.

Наиболее распространенный способ работы с контекстными менеджерами — использование с оператором .

Оператор с оператором является основным методом, используемым для вызова менеджера контекста. Общий синтаксис следующий:

 с SomeContextManager как context_variable:
    # делать что-то с context_variable 

Этот код работает в следующем порядке:

  1. SomeContextManager выполняет свою логику ввода (установки) перед запуском кода с отступом.
  2. SomeContextManager привязывает значение к context_variable , который можно использовать в коде с отступом
  3. Внутренний блок кода: # do stuff .
  4. SomeContextManager выполняет логику выхода (очистки).

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

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

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

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

 f = нет
пытаться:
    f = открыть('random. txt', 'r')
    содержимое = f.read()
    # делать вещи с контентом
кроме Исключения как e:
    печать (е)
окончательно:
    если ф:
      е.закрыть() 

Первое, что нужно отметить, это то, что мы всегда должны закрывать открытый файл. Блок finally выполнит закрытие, даже если произойдет ошибка. Если бы нам приходилось выполнять эту логику try-except-finally каждый раз, когда мы хотим работать с файлом, у нас было бы много повторяющегося кода.

К счастью, встроенный в Python open() является менеджером контекста. Следовательно, используя оператор с оператором , мы можем запрограммировать ту же логику следующим образом:

 с open('random.txt', 'r') как f:
  содержимое = f.read()
  # делаем что-нибудь с содержимым 

Здесь метод open() enter открывает файл и возвращает объект файла. Ключевое слово as связывает возвращаемое значение с f , и мы используем f для чтения содержимого random. txt . В конце выполнения внутреннего блока кода запускается метод выхода и закрывает файл.

Мы можем проверить, действительно ли закрыты f ( с не определяют область действия переменных, мы можем получить доступ к созданным переменным вне оператора).

 print(f.closed) 

Из этого простого примера видно, что менеджеры контекста позволяют сделать наш код чище и более пригодным для повторного использования.

Python определяет несколько других менеджеров контекста в стандартной библиотеке, но он также позволяет программистам определять свои собственные менеджеры контекста.

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

Стандартная библиотека предоставляет contextlib , модуль, содержащий с утилитами операторов. Одним из важных помощников является декоратор @contextmanager , который позволяет нам определять контекстные менеджеры на основе функций.

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

 from contextlib import contextmanager
@contextmanager
определение example_cm (string_input):
    print('Логика настройки\n')
    
    поменялся = string_input.swapcase()
    пытаться:
        доходность заменена
    кроме ValueError как e:
        print('Произошла ошибка...')
    окончательно:
        print('\nЛогика разборки\n')
        
    print('Конец менеджера контекста\n')
        
        
с example_cm('ВЕЛИЧЕСТВЕННАЯ белка') как swapped_string:
    # Управляемый код
    печать (swapped_string) 

Декоратор @contextmanager ожидает оператор yield в теле функции. yield делит функцию на три части:

  1. Выражения выше yield выполняются непосредственно перед кодом, управляемым .
  2. Управляемый код работает с и дает . Все, что выдается, составляет контекстную переменную — swapped_string в нашем случае.
  3. Выражения ниже дают выполняются после запуска управляемого кода.

Обратите внимание, что мы поместили yield в блок try-except-finally . Это не принудительно , но это хорошая практика. Таким образом, если в управляемом коде возникает ошибка, диспетчер контекста выполнит свою логику выхода, несмотря ни на что.

Посмотрите, что произойдет, если мы поднимем ValueError внутри оператора with :

 с example_cm('RaNdOm') as swapped_string:
    поднять (ValueError) 

Блок , кроме , внутри example_cm обрабатывал исключение, а блок finally гарантировал, что мы увидим сообщение о выходе.

Обратите внимание, что строка «Конец менеджера контекста» все еще печатается. Мы специально перехватываем ValueError , но давайте посмотрим, что происходит, когда возникает необработанная ошибка:

 с example_cm('RaNdOm') как swapped_string:
    поднять(NameError) 

В этом случае блок finally все еще выполнялся, несмотря на необнаруженную ошибку, но распечатка «Конец контекстного менеджера» не выполнялась. Это иллюстрирует, почему 9Блок 0003 finally полезен во многих ситуациях.

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

Python определяет протокол управления контекстом , который предписывает, что любой класс с методом __enter__() и методом __exit__() может работать как менеджер контекста.

Методы двойного подчеркивания — это специальные методы, которые не вызываются, а вместо этого вызываются . Они внутренне настроены на запуск в определенное время или после определенных событий. Например, __enter()__ запускается, когда вводится оператор с , а __exit__ запускается прямо перед тем, как остается блок с .

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

Давайте создадим класс диспетчера контекста ListProtect , который будет работать с копией списка перед возвратом изменений. Таким образом, исходный список будет восстановлен без изменений, если во время операции возникнет ошибка.

Посмотрим, как это выглядит.

 класс ListProtect:
    def __init__(я, оригинал: список):
        self.original = оригинал
    защита __enter__(сам):
        self.clone: ​​список = self.original.copy()
        вернуть self. clone
    def __exit__(self, exc_type, exc_val, exc_tb):
        если exc_type равен None:
            self.original[:] = self.clone
        еще:
            print('@ListProtect: Ошибка при обработке списка. Изменения не учитываются.')
        вернуть Истинно 

И мы можем использовать это так:

 the_list = [1, 2, 3]
# Пример без ошибок
с ListProtect(the_list) как the_copy:
    the_copy.append(100)
print(f'the list: {the_list}') 

Список успешно изменен. Но что, если произойдет ошибка?

 the_list = [1, 2, 3]
# Пример с ошибками
с ListProtect(the_list) как the_copy:
    the_copy.append(100)
    the_copy.append(1/0)
print(f'the list: {the_list}') 

В этом случае ListProtect обнаружил ошибку, и список остался без изменений. Так как же это работает?

В классе ListProtect мы определили два обязательных метода:

__enter__() — этот метод определяет, что происходит перед запуском логики под оператором with . Если метод ввода что-то возвращает, он привязывается к переменной контекста. В нашем классе мы создаем клон списка и возвращаем его как переменную контекста — the_copy в приведенных выше примерах.

__exit__() — этот метод определяет, что происходит, когда с логикой завершена или вызвала ошибку. Помимо self , этот метод принимает три параметра: exc_type , exc_val , exc_tb , который также можно сократить до *exc . Если в управляемом объекте не возникает никаких исключений, все эти значения равны None. Если мы вернем истинное значение в конце __exit()__ — как мы сделали в нашем классе — ошибка будет подавлена. В противном случае, если мы вернем ложное значение , например Нет , Ложь или пусто, ошибка распространяется.

Короче говоря, метод ListProtect __exit()__ сначала проверяет, был ли тип исключения None .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *