Организация питон: Вакансии компании Технологический инжиниринговый холдинг ПЕТОН

О нас

Технологический инжиниринговый холдинг ПЕТОН – один из лидеров отечественного инжиниринга, обладающий полным комплектом российских лицензий для реализации проектов «под ключ» по строительству НПЗ с индексом Нельсона 10+ и ГПЗ.

ПЕТОН занимает лидирующие позиции на рынке за счет комплексного подхода к реализации нефтегазовых проектов любой сложности. Для достижения успеха ПЕТОН сосредоточился на интеллектуальных решениях, объединяющих проектирование, производство, строительство и управление процессами. Наши научные компетенции и технологическая база позволяют разрабатывать и успешно внедрять наилучшие доступные технологии, направленные на повышение экономической эффективности объектов заказчика.

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

Брошюра о компании Скачать документ / PDF, 17.1 МБ

Технологический инжиниринговый холдинг ПЕТОН включает в себя ряд компаний общей численностью более 8000 человек: научный, производственный и управленческий персонал, специалисты по комплексным поставкам и проектировщики.

С 1990 года мы реализуем лучшие инжиниринговые решения

ПЕТОН располагает всеми необходимыми компетенциями и ресурсами для реализации крупных проектов, имеет несколько научно-исследовательских институтов, уникальную лабораторию, представительства в Москве, Уфе, Санкт-Петербурге, Оренбурге, Новом Уренгое, Кондратьево, Свободном, Ростове-на-Дону; собственные здания и производственные мощности общей площадью более 30 000 м².

За последние 30 лет ПЕТОН реализовал более 170 проектов на территории России и стран СНГ. Мы активно сотрудничаем с ведущими лицензиарами и производителями по всему миру.

Миссия

Содействие развитию экономики России путем реализации эффективного инжиниринга на объектах нефтегазовой промышленности.

Приоритетные задачи холдинга

Стратегия развития ПЕТОН отражает текущую ситуацию и перспективы экономического развития России, соответствует требованиям профильных министерств и ведомств, учитывает основные концепции развития крупнейших отечественных компаний ТЭК, постоянно адаптируется под новые экономические условия.

Технологии

Наращивание технологических компетенций и экологичность предлагаемых решений

Ответственность

Широкая зона ответственности перед Заказчиком

Кооперация

Активное развитие взаимоотношений с российскими производственными компаниями и с зарубежными партнерами в рамках адаптации технологий и локализации производств

Компетенции

Постоянное наращивание внутренней технической и управленческой компетенции путем реализации программ профессионального развития кадров

Основные принципы и приоритеты устойчивого развития:

  • Перспективные инновационные разработки с генерацией новых поколений продуктов, технологий и услуг для нефтеперерабатывающей и газоперерабатывающей промышленностей
  • Эффективное использование углеводородного сырья на всех стадиях его переработки
  • Применение собственных лицензионных технологий позволяет сократить эксплуатационные и капитальные затраты, повысить энергоэффективность, КПД процесса, глубину переработки и инвестиционную привлекательность проекта
  • Наращивание технологических и управленческих компетенций мирового уровня
  • Привлечение ведущих российских предприятий для производства высокотехнологичного оборудования и материалов для ТЭК
  • Активное участие в формировании национального кадрового резерва для ТЭК

Мощности объектов, проекты на которых выполнял ПЕТОН

312

млн т условного топлива

  • Газопереработка
  • Нефтепереработка
  • Нефтехимия
  • Остальное

Дифференциация проектов на крупных объектах

  • Установки фракционирования в нефтепереработке
  • Аминовая очистка газов
  • Установки фракционирования в газопереработке
  • Установки первичного франционирования нефти
  • Установки нефтехимии
  • Установки подготовки природного газа (в т.
    ч. сжижения)
  • Остальное

Компании, в которых были реализованы крупные проекты

173

объекта

  • ПАО «ГАЗПРОМ»
  • ПАО АНК «БАШНЕФТЬ»
  • ПАО «ЛУКОЙЛ»
  • ПАО «ГАЗПРОМ НЕФТЬ»
  • ПАО «НК «РОСНЕФТЬ»
  • НХК «УЗБЕКНЕФТЕГАЗ»
  • АО «ТАИФ»
  • Прочие компании

Структура кадрового состава ПЕТОН

8000

человек

  • Строительно-монтажные работы
  • Проектирование
  • Управление материальными ресурсами
  • Управление проектами

Структура холдинга

Название компании место расположения функции
НИПИ НГ ПЕТОН г.  Уфа, г. Москва, г. Санкт-Петербург, г. Оренбург, г. Новый Уренгой, п. Кондратьево, г. Свободный Комплексный ЕРС-подрядчик. Реализует проекты «под ключ» в нефтегазовой отрасли в России и странах СНГ: от бизнес-идеи до реализации. Главный научно-исследовательский и опытно-конструкторский центр Холдинга по разработке технологий и проектированию объектов в области нефтегазодобычи, нефтегазопереработки и нефтехимии. Владеет лицензионными технологиями PETON
ПЕТОН Констракшн г. Уфа, г. Новый Уренгой, п. Кондратьево Осуществляет общестроительные, строительно-монтажные работы для объектов нефтегазового комплекса в рамках всех проектов ПЕТОН
ПЕТОН Инвест Технолоджи г. Уфа Компания осуществляет управление активами Холдинга
ПЕТОН Химтэк г.  Уфа, г. Москва, г. Санкт-Петербург Инжиниринговая компания полного цикла, осуществляющая проектирование, поставку и внедрение комплексных решений и отдельных технологических блоков нефтегазового комплекса
ПЕТОН Механизация г. Уфа, г. Новый Уренгой, п. Кондратьево Обеспечивает строительство всей необходимой спецтехникой «под ключ» в рамках всех проектов ПЕТОН
ПК-Инжиниринг г. Уфа Комплексное проектирование объектов нефтегазохимической отрасли. Компания выполняет полный спектр проектных работ для строительства, модернизации и реконструкции объектов производственного и промышленного назначения
НТЦ Энергоавтоматизация г. Уфа, г. Москва, г. Новый Уренгой, пос. Кондратьево Инжиниринговая компания, системный интегратор комплексных решений по автоматизации технологических процессов и систем энергообеспечения при строительстве, модернизации и реконструкции промышленных предприятий.
Собственные производственные мощности
НПП «Техпроект» г. Уфа Реализует комплексное проектирование объектов нефтехимии и нефтегазопереработки. Осуществляет проектирование объектов транспортных и защитных сооружений, зданий и сооружений электроэнергетики
«ЭНЕРГО» Группа компаний г. Уфа, г. Москва Осуществляет разработку, производство и поставку собственной кабельно-проводниковой продукции

Производственные активы

АО «Новошахтинский завод нефтепродуктов» — нефтеперерабатывающее предприятие в Ростовской области. НПЗ специализируется на производстве мазута, печного, судового и дизельного топлива, прямогонного бензина.

Материально-техническая база ПЕТОН:

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

  • Краново-автомобильная техника, в т. ч. крановая техника грузоподъемностью 100 — 300 тонн – 140 единиц Компания имеет в наличии необходимые грузоподъемные и транспортные механизмы для выполнения всего комплекса работ. Средний возраст ТС не превышает 3 лет.
  • Сварочные агрегаты – 484 единицы
  • Электрооборудование, средства измерения – 313 единиц
  • ВЗиС – 454 единицы Наличие собственной базы ВЗиС позволяет в короткие сроки обустроить строительную площадку необходимыми объектами производственного и социального значения для реализации проекта.
  • Аттестованная лаборатория диагностики металлов и контроля сваркиЛаборатория полностью оснащена оборудованием для проведения неразрушающего контроля. Сектора по механическим и строительным испытаниям оснащены современным и высокотехнологическим оборудованием, позволяющим проводить весь спектр испытаний.
  • Растворно-бетонный узел

Каталог МТР Скачать документ / PDF 7.7 мб

Преимущества собственных производственных ресурсов:

  • Высокая мобильность
  • Управление изменениями
  • Повышение качества
  • Возможность реализации крупных ЕРС-проектов
  • Сокращение затрат

Вакансии компании Технологический инжиниринговый холдинг ПЕТОН

Наши проекты

За последние 30 лет ПЕТОН реализовал более 170 проектов на территории России и стран СНГ.

ПЕТОН реализует проекты любого масштаба и сложности, в том числе в качестве комплексного ЕРС-контрактора.

Комплекс по производству, хранению и отгрузке сжиженного природного газа в районе КС «Портовая»

Амурский газоперерабатывающий завод. Технологические установки для подготовки и переработки газа

Новошахтинский завод нефтепродуктов. Комплекс по производству автомобильных бензинов / Комплекс глубокой переработки нефти

Новоуренгойский завод по подготовке конденсата к транспорту. Установка подготовки газов деэтанизации / Дожимная компрессорная станция

Новоуренгойский завод по подготовке конденсата к транспорту.
Установка стабилизации конденсата

География

Головной офис

Уфа

Инжиниринговые центры

Москва

Санкт-Петербург

Оренбург

Ростов-на-Дону

Строительные площадки

п. Кондратьево — Управление и реализация проекта КСПГ

г. Свободный — Управление и реализация проекта АГПЗ

с. п. Киселевское — Управление и реализация проектов НЗНП

г. Новый Уренгой — Управление и реализация проектов УСК/ДКС/УПГД

Карьера в ПЕТОН

Персонал компании

Мы верим, что персонал компании — источник ее интеллектуального капитала и конкурентных преимуществ.

Здоровый образ жизни

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

Карьера

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

Развитие и обучение

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

Вакансии компании «Технологический инжиниринговый холдинг ПЕТОН»

‘),a.append(r)),ee.extend(t,{$el:a,el:a[0],$dragEl:r,dragEl:r[0]}),s.draggable&&t.enableDraggable()}},destroy:function(){this.scrollbar.disableDraggable()}},A={run:function(){var e=this,t=e.slides.eq(e.activeIndex),i=e.params.autoplay.delay;t.attr(«data-swiper-autoplay»)&&(i=t.attr(«data-swiper-autoplay»)||e.params.autoplay.delay),clearTimeout(e.autoplay.timeout),e.autoplay.timeout=ee.nextTick(function(){e.params.autoplay.reverseDirection?e.params.loop?(e.loopFix(),e.slidePrev(e.params.speed,!0,!0),e. emit(«autoplay»)):e.isBeginning?e.params.autoplay.stopOnLastSlide?e.autoplay.stop():(e.slideTo(e.slides.length-1,e.params.speed,!0,!0),e.emit(«autoplay»)):(e.slidePrev(e.params.speed,!0,!0),e.emit(«autoplay»)):e.params.loop?(e.loopFix(),e.slideNext(e.params.speed,!0,!0),e.emit(«autoplay»)):e.isEnd?e.params.autoplay.stopOnLastSlide?e.autoplay.stop():(e.slideTo(0,e.params.speed,!0,!0),e.emit(«autoplay»)):(e.slideNext(e.params.speed,!0,!0),e.emit(«autoplay»))},i)},start:function(){var e=this;return void 0===e.autoplay.timeout&&(!e.autoplay.running&&(e.autoplay.running=!0,e.emit(«autoplayStart»),e.autoplay.run(),!0))},stop:function(){var e=this;return!!e.autoplay.running&&(void 0!==e.autoplay.timeout&&(e.autoplay.timeout&&(clearTimeout(e.autoplay.timeout),e.autoplay.timeout=void 0),e.autoplay.running=!1,e.emit(«autoplayStop»),!0))},pause:function(e){var t=this;t.autoplay.running&&(t.autoplay.paused||(t.autoplay.timeout&&clearTimeout(t. autoplay.timeout),t.autoplay.paused=!0,0!==e&&t.params.autoplay.waitForTransition?(t.$wrapperEl[0].addEventListener(«transitionend»,t.autoplay.onTransitionEnd),t.$wrapperEl[0].addEventListener(«webkitTransitionEnd»,t.autoplay.onTransitionEnd)):(t.autoplay.paused=!1,t.autoplay.run())))}},$={setTranslate:function(){for(var e=this,t=e.slides,i=0;i

Немного о Python Foundation — evozon

перейти к содержанию

Блог

  • Посмотреть увеличенное изображение

Немного о Python Foundation

Python Software Foundation — это организация, которая управляет и контролирует разработку языка программирования Python. Он обладает интеллектуальным правом на бренд Python и предлагает сообществу Python образовательные, финансовые и другие ресурсы. Фонд был основан в 2001 году после официального объявления на девятой конференции Python в США 9.0011

Фонд Apache Software Foundation был образцом для подражания для этой организации, чтобы иметь возможность направлять и поддерживать язык с открытым исходным кодом и поддерживать сообщество, стоящее за ним, включая его группы пользователей. Наличие целой организации, занимающейся дальнейшим внедрением и развитием Python, включая продвижение языка в различных учреждениях.

Он был основан, чтобы выступать в качестве катализатора, как и Apache Software Foundation, и до сих пор не разочаровал, учитывая широкое распространение Python, большое сообщество и желательность.

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

Миссия

Миссия Python Software Foundation: « продвигать, защищать и развивать язык программирования Python, а также поддерживать и способствовать росту международного сообщества программистов Python».

Как некоммерческая организация она управляет Python иначе, чем, скажем, Oracle, коммерческая компания с Java. Его некоммерческий статус подразумевает другое финансовое направление его деятельности.

Членство

С 2014 года Python Software Foundation является открытой организацией, это означает, что к ней может присоединиться любой, кто использует или поддерживает язык. Как компания Python , мы также являемся ее участниками.

Существует несколько категорий членства:

  1. Основные члены – это единственная категория, которая не может голосовать на выборах членов правления.
  2. Поддерживающие члены – сделайте ежегодное пожертвование PSF (в размере 99 долларов США), чтобы поддержать их усилия.
  3. Управление участниками – посвящайте не менее 5 часов в месяц поддержке организации. Они организуют, управляют или помогают группам пользователей.
  4. Содействующие члены — они также посвящают не менее 5 часов в месяц, но работают над проектами, которые продвигают миссию фонда. Их работа в основном связана с программным обеспечением с открытым исходным кодом.
  5. Стипендиаты — вносят выдающийся вклад в язык, сообщество и экосистему. Они выдвигаются от мирового сообщества и голосуют за других участников.

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

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

Через гранты Python Foundation также поддерживает проекты разработки Python со всего мира, конференции, встречи и другие мероприятия сообщества. Он также обладает правами интеллектуальной собственности, связанными с Python, поэтому, если вы хотите использовать имя, логотип или термины «PyCon» или «PyLadies», вы знаете, с кем поговорить.

Правление

Нынешним президентом фонда является Гвидо ван Россум, который также является автором языка и обладателем остроумного титула «Благотворительный диктатор на всю жизнь».

У них есть совет директоров (11 мест), который избирается его членами. Некоторые из них бесплатны, но есть и люди, которые этим зарабатывают на жизнь, поэтому им платят зарплату. Что касается местоположения, в настоящее время у фонда есть сотрудники и члены правления в США и Германии. Правление собирается раз в месяц через IRC, в то время как PSF (члены поддержки, которые делают ежегодные пожертвования) встречаются на конференции North American Pycon Conference.

Если вы программист Python, вы можете присоединиться к Фонду в качестве члена и даже баллотироваться, чтобы стать частью правления. Вы можете узнайте больше здесь о избирательном процессе.

Сэмюэл Андрас

БИРКИ

Evozon Python

Категории

Как организовать код Python 🐍📦

графический интерфейс совершено 8 месяцев назад · 🐍 Питон

За каждую минуту, потраченную на организацию, начисляется час.
Бенджамина Франклина

Python отличается от таких языков, как C# или Java, где они заставляют вас иметь классы, названные в честь файла, в котором они живут. 0011

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

  • Вы хотите сохранить все классы проекта в одном файле main.py ? Да, это работает.
  • Вам нужно прочитать переменную среды ОС? Просто прочитайте это прямо там.
  • Вам нужно изменить поведение функции? Почему не декоратор!?

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

Это не обязательно плохо , если вы знаете, что делаете.

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

🌳 Структурируйте свой проект Python

Сначала сосредоточимся на структуре каталогов, именовании файлов и организации модулей.

Я рекомендую вам хранить все ваши файлы модулей внутри каталога src , а все тесты жить рядом с ним:

Проект верхнего уровня

 <проект>
├── источник
│ ├── <модуль>/*
│ │ ├── __init__. py
│ │ └── many_files.py
│ │
│ └── тесты/*
│ └── many_tests.py
│
├── .gitignore
├── pyproject.toml
└── README.md
 

Где <модуль> — ваш основной модуль. Если вы сомневаетесь, подумайте, какие люди будут pip устанавливать и как вы хотели бы импортировать модуль .

Часто имеет то же имя, что и главный проект. Хотя это не правило.

🎯 Обоснование

src каталога

Я видел много проектов, работающих по-разному.

Некоторые варианты включают отсутствие src dir со всеми модулями проекта вокруг дерева.

Это очень раздражает из-за отсутствия порядка, создавая такие вещи, как (пример):

 non_recommended_project
├── /*
│ ├── __init__.py
│ └── many_files.py
│
├── .gitignore
│
├── тесты/*
│ └── many_tests.py
│
├── pyproject.toml
│
├── /*
│ ├── __init__.py
│ └── many_files.py
│
└── README.md
 

Скучно иметь вещи так далеко друг от друга из-за алфавитной сортировки IDE.

Основная причина создания каталога src заключается в том, чтобы активный код проекта оставался сосредоточенным в одном каталоге, в то время как настройки, настройка CI/CD и метаданные проекта могут находиться за его пределами.

Единственным недостатком этого является то, что вы не можете импортировать module_a в свой код Python из коробки. Нам нужно настроить проект для установки в этот репозиторий. Вскоре в этой главе мы обсудим, как решить эту проблему.

🏷️ Как назвать файлы

Правило 1: Файлов нет

Во-первых, в Python нет таких вещей, как «файлы», и я заметил, что это основной источник путаницы для начинающих.

Если вы находитесь внутри каталога, который содержит __init__.py , это каталог, состоящий из модулей, а не файлов.

См. каждый модуль как пространство имен.

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

Правило 2: Объединяйте вещи по мере необходимости

Несколько классов в одном модуле — это нормально, и вы должны это делать. (очевидно, когда классы связаны с модулем).

Часто люди думают, что это плохая практика из-за некоторого опыта работы с другими языками, которые требуют обратного (например, Java и C#).

Правило 3: По умолчанию давайте имена во множественном числе

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

Однако из этого правила есть исключения! Модули могут называться core , main.py и так далее, чтобы представлять одно целое. Используйте свое суждение, если сомневаетесь, придерживайтесь правила множественного числа.

🔎 Реальный пример именования модулей

В качестве примера я поделюсь проектом Google Maps Crawler, который я создал.

Этот проект отвечает за сканирование данных из Google Maps с использованием Selenium и их вывод (подробнее здесь, если интересно).

Это текущее дерево проекта с описанием исключений из правила №3: ​​

 gmaps_crawler
├── источник
│ └── gmaps_crawler
│ ├── __init__.py
│ ├── config.py 👈 (Единственное число)
│ ├── drivers.py
│ ├── entity.py
│ ├── исключения.py
│ ├── фасады.py
│ ├── main.py 👈 (Единственное число)
│ └── storages.py
│
├── .gitignore
├── pyproject.toml
└── README.md
 

Вполне естественно импортировать такие классы и функции, как:

 из gmaps_crawler.storages import get_storage
из gmaps_crawler.entities импортировать место
из gmaps_crawler.exceptions импортировать CantEmitPlace
 

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

Прелесть множества модулей в том, что:

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

🔖 Именование классов, функций и переменных

Некоторые люди утверждают, что давать имена вещам сложно. Это становится менее сложным, когда вы определяете некоторые руководящие принципы.

👊 Функции и методы должны быть глаголами

Функции и методы представляют собой действие или действия.

Что-то «не». Что-то происходит».

Действия четко обозначаются глаголами.

Несколько хороших примеров из РЕАЛЬНЫХ проектов, над которыми я работал раньше:

 по умолчанию get_orders():
    ...
определение подтверждения_события():
    ...
защита get_delivery_information():
    ...
опубликовать ():
    ...
 

Несколько плохих примеров:

 def email_send():
    ...
определение api_call():
   ...
определение конкретного_материала():
   ...
 

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

Я могу представить такой сценарий:

 email_send.title = "title"
email_send.dispatch() 
Пример вводящего в заблуждение имени функции

Исключений из этого правила немного, но они существуют.

  • Создание функции main() , которая будет вызываться в основной точке входа вашего приложения, является веской причиной, чтобы пропустить это правило.
  • Использование @property для обработки метода класса как атрибута также допустимо.
🐶 Переменные и константы должны быть существительными

Всегда должны быть существительными, а не глаголами (что разъясняет разницу между функциями).

Хорошие примеры:

 плоскость = плоскость()
идентификатор_клиента = 5
KEY_COMPARISON = "абв"
 

Плохие примеры:

 fly = Plane()
get_customer_id = 5
COMPARE_KEY = "абв"
 

Если ваша переменная/константа представляет собой список или набор, укажите множественное число!

 planes: list[Plane] = [Plane()] # 👈 Даже если он содержит только один элемент
customer_ids: set[int] = {5, 12, 22}
KEY_MAP: dict[str, str] = {"123": "abc"} # 👈 Словари сохраняются в единственном числе
 
🏛️ Классы должны быть понятными, но суффиксы в порядке

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

Всегда называйте в единственном числе, а не во множественном числе. Множественное число напоминает нам о коллекциях (например, если я прочитал 90 103 заказов, 90 104 я предполагаю, что это список или итерация), поэтому напомните себе, что после создания экземпляра класса он становится единым объектом.

Классы, представляющие сущности

Классы, которые представляют вещи из бизнес-контекста, должны называться как есть (существительные!). Нравится Заказ , Продажа , Магазин , Ресторан и так далее.

Пример использования суффиксов

Предположим, вы хотите создать класс, отвечающий за отправку электронных писем. Если вы назовете его просто как « Электронная почта », его назначение неясно.

Кто-то может подумать, что это может представлять сущность, например.

 email = Email() # предполагаемый пример использования
email.title = "Заголовок"
электронная почта.тело = create_body()
email.send_to = "guilatrova.dev"
send_email (электронная почта)
 

Вы должны назвать его « EmailSender » или « EmailService «.

🐪 Условные обозначения регистров

По умолчанию используются следующие соглашения об именах:

Тип Общедоступный Внутренний
Пакеты (каталоги) нижняя_с_нижней
Модули (файлы) нижний_с_под.py
Классы CapWords
Функции и методы нижний_с_под() _lower_with_under()
Константы ALL_CAPS_UNDER _ALL_CAPS_UNDER
⚠️ Заявление об отказе от «частных» методов.

Некоторые люди обнаружили, что если у вас есть __method(self) (любой метод, начинающийся с двух символов подчеркивания) Python не позволит внешним классам/методам вызывать его нормально, что заставляет их думать, что это нормально.

Если вы пришли из среды C#, как и я, может показаться странным, что вы не можете защитить метод.

Но у Гвидо (создателя Python) есть веская причина для этого:

«Мы все здесь взрослые по обоюдному согласию»

Это означает, что если вы знаете, что не должны вызывать метод, то вы не должны если вы не знаете, что делаете.

В конце концов, если вы действительно решили вызвать этот метод, вы собираетесь сделать что-то грязное, чтобы это произошло (известное как «Отражение» в C#).

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

↪️ Когда создавать функцию или класс в Python?

Это распространенный вопрос, который я получал несколько раз.

Если вы будете следовать приведенным выше рекомендациям, у вас будут четкие модули, а четкие модули — эффективный способ организации функций:

 из хранилища импорта gmaps_crawler
storages.get_storage() # 👈 Подобно классу, за исключением того, что он не создан и имеет имя во множественном числе
storages.save_to_storage() # 👈 Потенциальная функция внутри модуля
 

Иногда вы можете идентифицировать подмножества функций внутри модуля. Когда это происходит, класс имеет больше смысла:

Пример группировки различных подмножеств функций

Рассмотрим тот же модуль хранилищ с 4 функциями:

 def format_for_debug(some_data):
    ...
защита save_debug (некоторые_данные):
    """Отпечатки на экране"""
    форматированные_данные = формат_для_отладки (некоторые_данные)
    печать (форматированные_данные)
защита create_s3 (ведро):
    """Создать корзину s3, если она не существует"""
    ...
защита save_s3 (некоторые_данные):
    s3 = create_s3 ("имя_сегмента")
    . ..
 

S3 — это облачное хранилище для хранения любых данных, предоставляемых Amazon (AWS). Это как Google Drive для программного обеспечения.

Мы можем сказать, что:

  • Разработчик может сохранять данные в режиме DEBUG (который просто печатает на экране) или на S3 (который хранит данные в облаке).
  • save_debug использует функцию format_for_debug
  • save_s3 использует функцию create_s3

Я вижу две группы функций в разных модулях, и поэтому я вижу две группы функций и нет причин держать их в разных модулях, и нет причин хранить их в разных модулях нравится определять их как классы:

 класс DebugStorage:
    def format_for_debug (я, некоторые_данные):
        ...
    def save_debug (я, некоторые_данные):
        """Отпечатки на экране"""
        formatted_data = self.format_for_debug(some_data)
        печать (форматированные_данные)
класс S3Storage:
    def create_s3 (я, ведро):
        """Создать корзину s3, если она не существует"""
        . ..
    защита save_s3 (я, некоторые_данные):
        s3 = self.create_s3 ("bucket_name")
        ...
 

Вот эмпирическое правило:

  • Всегда начинайте с функций
  • Переходите к классам, как только почувствуете, что можете группировать различные подмножества функций

🚪 Создание модулей и точек входа

Каждое приложение имеет точку входа.

Это означает, что есть один модуль (также известный как файл), который запускает ваше приложение. Это может быть как отдельный скрипт, так и большой модуль.

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

 по умолчанию execute_main():
    ...
if __name__ == "__main__": # 👈 Добавьте это условие
    execute_main()
 

Делая это, вы гарантируете, что любой импорт не вызовет случайного срабатывания вашего кода. Если это не выполняется явно.

Определение main для модулей

Возможно, вы заметили некоторые пакеты Python, которые можно вызвать, передав -m , например:

 python -m pytest
python -m трицератопс
питон -м фауст
питон -м хлопья8
питон -м черный
 

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

 pytest
трицератопс
Фауст
хлопья8
черный
 

Чтобы это произошло, вам нужно указать один файл __main__. py внутри основного модуля:

 
├── источник
│ ├── пример_модуля 👈 Основной модуль
│ │ ├── __init__.py
│ │ ├── __main__.py 👈 Добавить сюда
│ │ └── many_files.py
│ │
│ └── тесты/*
│ └── many_tests.py
│
├── .gitignore
├── pyproject.toml
└── README.md
 

Не забывайте, что вам все еще нужно включить проверку __name__ == "__main__" внутри вашего файла __main__.py .

Когда вы устанавливаете свой модуль, вы можете запустить свой проект как python -m example_module .

📖 Привет!

Это первоначальный набросок книги, которую я пишу!

Если вам интересно, не забудьте подписаться на информационный бюллетень и подпишитесь на меня в Твиттере , чтобы получать уведомления, когда книга выйдет!

Первая глава вышла со специальной скидкой!

Python Like a PRO 🐍📚 Книга

⚠️📚 Эта книга все еще находится в разработке (поэтому сейчас она такая дешевая, цена вырастет после публикации всех глав).

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

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